diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/FormComponentBuilder.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/FormComponentBuilder.java index e003c672b..ab87c773a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/FormComponentBuilder.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/builder/FormComponentBuilder.java @@ -19,11 +19,13 @@ import org.eclipse.hawkbit.ui.common.data.aware.StartOptionAware; import org.eclipse.hawkbit.ui.common.data.aware.TargetFilterQueryAware; import org.eclipse.hawkbit.ui.common.data.aware.TypeInfoAware; import org.eclipse.hawkbit.ui.common.data.aware.VersionAware; -import org.eclipse.hawkbit.ui.common.data.providers.DistributionSetStatelessDataProvider; import org.eclipse.hawkbit.ui.common.data.providers.AbstractProxyDataProvider; +import org.eclipse.hawkbit.ui.common.data.providers.DistributionSetStatelessDataProvider; import org.eclipse.hawkbit.ui.common.data.providers.TargetFilterQueryDataProvider; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSet; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSetInfo; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQuery; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQueryInfo; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTypeInfo; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -240,24 +242,21 @@ public final class FormComponentBuilder { i18n.getMessage(UIMessageIdProvider.HEADER_DISTRIBUTION_SET), i18n.getMessage(PROMPT_DISTRIBUTION_SET), i18n.getMessage(PROMPT_DISTRIBUTION_SET), false, ProxyDistributionSet::getNameVersion, dataProvider); - final Binding binding = binder.forField(dsComboBox) + final Binding binding = binder.forField(dsComboBox) .asRequired(i18n.getMessage(UIMessageIdProvider.MESSAGE_ERROR_DISTRIBUTIONSET_REQUIRED)) .withConverter(ds -> { if (ds == null) { return null; } - return ds.getId(); - }, dsId -> { - if (dsId == null) { + return ds.getInfo(); + }, dsInfo -> { + if (dsInfo == null) { return null; } - final ProxyDistributionSet ds = new ProxyDistributionSet(); - ds.setId(dsId); - - return ds; - }).bind(DsIdAware::getDistributionSetId, DsIdAware::setDistributionSetId); + return ProxyDistributionSet.of(dsInfo); + }).bind(DsIdAware::getDistributionSetInfo, DsIdAware::setDistributionSetInfo); return new BoundComponent<>(dsComboBox, binding); } @@ -293,20 +292,19 @@ public final class FormComponentBuilder { bindingBuilder.withValidator(validator); } - final Binding binding = bindingBuilder.bind(tfqAwareBean -> { - if (tfqAwareBean.getTargetFilterId() == null) { + final Binding binding = bindingBuilder.withConverter(tfq -> { + if (tfq == null) { return null; } - final ProxyTargetFilterQuery filter = new ProxyTargetFilterQuery(); - filter.setId(tfqAwareBean.getTargetFilterId()); - filter.setQuery(tfqAwareBean.getTargetFilterQuery()); + return tfq.getInfo(); + }, tfqInfo -> { + if (tfqInfo == null) { + return null; + } - return filter; - }, (tfqAwareBean, filter) -> { - tfqAwareBean.setTargetFilterId(filter != null ? filter.getId() : null); - tfqAwareBean.setTargetFilterQuery(filter != null ? filter.getQuery() : null); - }); + return ProxyTargetFilterQuery.of(tfqInfo); + }).bind(TargetFilterQueryAware::getTargetFilterQueryInfo, TargetFilterQueryAware::setTargetFilterQueryInfo); return new BoundComponent<>(tfqCombo, binding); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/DsIdAware.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/DsIdAware.java index 21b11804a..a433b9af1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/DsIdAware.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/DsIdAware.java @@ -8,11 +8,13 @@ */ package org.eclipse.hawkbit.ui.common.data.aware; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSetInfo; + /** - * Element provides a distribution set id + * Element provides a distribution set info */ public interface DsIdAware { - void setDistributionSetId(Long id); + void setDistributionSetInfo(ProxyDistributionSetInfo dsInfo); - Long getDistributionSetId(); + ProxyDistributionSetInfo getDistributionSetInfo(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/TargetFilterQueryAware.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/TargetFilterQueryAware.java index 768fd3ae2..8abfcac70 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/TargetFilterQueryAware.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/aware/TargetFilterQueryAware.java @@ -8,15 +8,13 @@ */ package org.eclipse.hawkbit.ui.common.data.aware; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQueryInfo; + /** * Element is used for target filter query combobox */ public interface TargetFilterQueryAware { - void setTargetFilterId(Long id); + void setTargetFilterQueryInfo(ProxyTargetFilterQueryInfo tfqInfo); - Long getTargetFilterId(); - - void setTargetFilterQuery(String query); - - String getTargetFilterQuery(); + ProxyTargetFilterQueryInfo getTargetFilterQueryInfo(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutGroupToAdvancedDefinitionMapper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutGroupToAdvancedDefinitionMapper.java index 67cad5f1d..6c8445044 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutGroupToAdvancedDefinitionMapper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutGroupToAdvancedDefinitionMapper.java @@ -16,6 +16,7 @@ import org.eclipse.hawkbit.repository.TargetFilterQueryManagement; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyAdvancedRolloutGroup; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQueryInfo; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.util.StringUtils; @@ -32,7 +33,7 @@ public class RolloutGroupToAdvancedDefinitionMapper { * Constructor for RolloutGroupToAdvancedDefinitionMapper * * @param targetFilterQueryManagement - * TargetFilterQueryManagement + * TargetFilterQueryManagement */ public RolloutGroupToAdvancedDefinitionMapper(final TargetFilterQueryManagement targetFilterQueryManagement) { this.targetFilterQueryManagement = targetFilterQueryManagement; @@ -42,7 +43,7 @@ public class RolloutGroupToAdvancedDefinitionMapper { * Map advanced Rollout Group * * @param rolloutGroup - * RolloutGroup + * RolloutGroup * * @return ProxyAdvancedRolloutGroup */ @@ -57,7 +58,9 @@ public class RolloutGroupToAdvancedDefinitionMapper { final Page filterQueries = targetFilterQueryManagement.findByQuery(PageRequest.of(0, 1), groupTargetFilterQuery); if (filterQueries.getTotalElements() == 1) { - advancedGroupRow.setTargetFilterId(filterQueries.getContent().get(0).getId()); + final TargetFilterQuery tfq = filterQueries.getContent().get(0); + advancedGroupRow.setTargetFilterQueryInfo( + new ProxyTargetFilterQueryInfo(tfq.getId(), tfq.getName(), tfq.getQuery())); } } @@ -72,11 +75,11 @@ public class RolloutGroupToAdvancedDefinitionMapper { * Fetch rollout group data from the backend * * @param rolloutId - * Rollout id + * Rollout id * @param rolloutGroupManagement - * RolloutGroupManagement + * RolloutGroupManagement * @param pageCount - * Total page count + * Total page count * * @return List of advance rollout group */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutToProxyRolloutMapper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutToProxyRolloutMapper.java index 57cda4c95..160a701c3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutToProxyRolloutMapper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/RolloutToProxyRolloutMapper.java @@ -10,8 +10,8 @@ package org.eclipse.hawkbit.ui.common.data.mappers; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Rollout; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSetInfo; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyRollout; -import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; /** * Maps {@link Rollout} entities, fetched from backend, to the @@ -37,11 +37,8 @@ public class RolloutToProxyRolloutMapper extends AbstractNamedEntityToProxyNamed mapNamedEntityAttributes(rollout, proxyRollout); - final DistributionSet distributionSet = rollout.getDistributionSet(); - proxyRollout.setDistributionSetNameVersion( - HawkbitCommonUtil.getFormattedNameVersion(distributionSet.getName(), distributionSet.getVersion())); - proxyRollout.setDistributionSetId(distributionSet.getId()); - + final DistributionSet ds = rollout.getDistributionSet(); + proxyRollout.setDsInfo(new ProxyDistributionSetInfo(ds.getId(), ds.getName(), ds.getVersion())); proxyRollout .setNumberOfGroups(rollout.getRolloutGroupsCreated() > 0 ? rollout.getRolloutGroupsCreated() : null); proxyRollout.setForcedTime(rollout.getForcedTime() > 0 ? rollout.getForcedTime() : null); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/TargetFilterQueryToProxyTargetFilterMapper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/TargetFilterQueryToProxyTargetFilterMapper.java index baeb27450..5022eeb02 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/TargetFilterQueryToProxyTargetFilterMapper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/mappers/TargetFilterQueryToProxyTargetFilterMapper.java @@ -11,7 +11,7 @@ package org.eclipse.hawkbit.ui.common.data.mappers; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; import org.eclipse.hawkbit.ui.common.UserDetailsFormatter; -import org.eclipse.hawkbit.ui.common.data.proxies.ProxyIdNameVersion; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSetInfo; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQuery; import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; @@ -37,7 +37,7 @@ public class TargetFilterQueryToProxyTargetFilterMapper final DistributionSet distributionSet = targetFilterQuery.getAutoAssignDistributionSet(); if (distributionSet != null) { proxyTargetFilter.setAutoAssignmentEnabled(true); - proxyTargetFilter.setAutoAssignDsIdNameVersion(new ProxyIdNameVersion(distributionSet.getId(), + proxyTargetFilter.setDistributionSetInfo(new ProxyDistributionSetInfo(distributionSet.getId(), distributionSet.getName(), distributionSet.getVersion())); proxyTargetFilter.setAutoAssignActionType(targetFilterQuery.getAutoAssignActionType()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyAdvancedRolloutGroup.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyAdvancedRolloutGroup.java index b26315158..985ee4bca 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyAdvancedRolloutGroup.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyAdvancedRolloutGroup.java @@ -20,8 +20,7 @@ public class ProxyAdvancedRolloutGroup implements Serializable, TargetFilterQuer private static final long serialVersionUID = 1L; private String groupName; - private String targetFilterQuery; - private Long targetFilterId; + private ProxyTargetFilterQueryInfo targetFilterInfo; private Float targetPercentage; private String triggerThresholdPercentage; private String errorThresholdPercentage; @@ -40,30 +39,32 @@ public class ProxyAdvancedRolloutGroup implements Serializable, TargetFilterQuer * Sets the groupName * * @param groupName - * name of the group + * name of the group */ public void setGroupName(final String groupName) { this.groupName = groupName; } @Override + public ProxyTargetFilterQueryInfo getTargetFilterQueryInfo() { + return targetFilterInfo; + } + + @Override + public void setTargetFilterQueryInfo(final ProxyTargetFilterQueryInfo tfqInfo) { + this.targetFilterInfo = tfqInfo; + } + public String getTargetFilterQuery() { - return targetFilterQuery; + return targetFilterInfo != null ? targetFilterInfo.getQuery() : null; } - @Override public void setTargetFilterQuery(final String targetFilterQuery) { - this.targetFilterQuery = targetFilterQuery; - } - - @Override - public Long getTargetFilterId() { - return targetFilterId; - } - - @Override - public void setTargetFilterId(final Long targetFilterId) { - this.targetFilterId = targetFilterId; + if (targetFilterInfo != null) { + targetFilterInfo.setQuery(targetFilterQuery); + } else { + targetFilterInfo = new ProxyTargetFilterQueryInfo(null, null, targetFilterQuery); + } } /** @@ -79,7 +80,7 @@ public class ProxyAdvancedRolloutGroup implements Serializable, TargetFilterQuer * Sets the targetPercentage * * @param targetPercentage - * percentage of the target + * percentage of the target */ public void setTargetPercentage(final Float targetPercentage) { this.targetPercentage = targetPercentage; @@ -98,7 +99,7 @@ public class ProxyAdvancedRolloutGroup implements Serializable, TargetFilterQuer * Sets the triggerThresholdPercentage * * @param triggerThresholdPercentage - * percentage of the triggerThreshold + * percentage of the triggerThreshold */ public void setTriggerThresholdPercentage(final String triggerThresholdPercentage) { this.triggerThresholdPercentage = triggerThresholdPercentage; @@ -117,7 +118,7 @@ public class ProxyAdvancedRolloutGroup implements Serializable, TargetFilterQuer * Sets the errorThresholdPercentage * * @param errorThresholdPercentage - * percentage of the errorThreshold + * percentage of the errorThreshold */ public void setErrorThresholdPercentage(final String errorThresholdPercentage) { this.errorThresholdPercentage = errorThresholdPercentage; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyBulkUploadWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyBulkUploadWindow.java index 024587066..7b602e9df 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyBulkUploadWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyBulkUploadWindow.java @@ -20,27 +20,29 @@ import org.eclipse.hawkbit.ui.common.data.aware.DsIdAware; public class ProxyBulkUploadWindow implements Serializable, DescriptionAware, DsIdAware { private static final long serialVersionUID = 1L; - private Long distributionSetId; + private ProxyDistributionSetInfo dsInfo; private Map tagIdsWithNameToAssign; private String description; /** - * Gets the distributionSetId + * Gets the distribution set info * - * @return distributionSetId + * @return dsInfo */ - public Long getDistributionSetId() { - return distributionSetId; + @Override + public ProxyDistributionSetInfo getDistributionSetInfo() { + return dsInfo; } /** - * Sets the distributionSetId + * Sets the distribution set info * - * @param distributionSetId - * Id of distribution set + * @param dsInfo + * Info of distribution set */ - public void setDistributionSetId(final Long distributionSetId) { - this.distributionSetId = distributionSetId; + @Override + public void setDistributionSetInfo(final ProxyDistributionSetInfo dsInfo) { + this.dsInfo = dsInfo; } /** @@ -56,7 +58,7 @@ public class ProxyBulkUploadWindow implements Serializable, DescriptionAware, Ds * Sets the tagIdsWithNameToAssign * * @param tagIdsWithNameToAssign - * list of tagIds WithNameToAssign + * list of tagIds WithNameToAssign */ public void setTagIdsWithNameToAssign(final Map tagIdsWithNameToAssign) { this.tagIdsWithNameToAssign = tagIdsWithNameToAssign; @@ -67,6 +69,7 @@ public class ProxyBulkUploadWindow implements Serializable, DescriptionAware, Ds * * @return description */ + @Override public String getDescription() { return description; } @@ -75,8 +78,9 @@ public class ProxyBulkUploadWindow implements Serializable, DescriptionAware, Ds * Sets the description * * @param description - * entity description + * entity description */ + @Override public void setDescription(final String description) { this.description = description; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSet.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSet.java index 5e03dc542..9142f23c8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSet.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSet.java @@ -128,17 +128,18 @@ public class ProxyDistributionSet extends ProxyNamedEntity implements VersionAwa /** * Sets the Id, name and version of distribution set * - * @param dsIdNameVersion - * ProxyIdNameVersion + * @param dsInfo + * ProxyDistributionSetInfo * * @return proxy of distribution set */ - public ProxyDistributionSet of(final ProxyIdNameVersion dsIdNameVersion) { + public static ProxyDistributionSet of(final ProxyDistributionSetInfo dsInfo) { final ProxyDistributionSet ds = new ProxyDistributionSet(); - ds.setId(dsIdNameVersion.getId()); - ds.setName(dsIdNameVersion.getName()); - ds.setVersion(dsIdNameVersion.getVersion()); + ds.setId(dsInfo.getId()); + ds.setName(dsInfo.getName()); + ds.setVersion(dsInfo.getVersion()); + ds.setNameVersion(dsInfo.getNameVersion()); return ds; } @@ -148,7 +149,7 @@ public class ProxyDistributionSet extends ProxyNamedEntity implements VersionAwa * * @return proxy of Id, Name and version */ - public ProxyIdNameVersion getIdNameVersion() { - return new ProxyIdNameVersion(getId(), getName(), getVersion()); + public ProxyDistributionSetInfo getInfo() { + return new ProxyDistributionSetInfo(getId(), getName(), getVersion()); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSetInfo.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSetInfo.java new file mode 100644 index 000000000..274aac3f6 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyDistributionSetInfo.java @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2020 Bosch.IO GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.ui.common.data.proxies; + +import java.util.Objects; + +import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; + +/** + * Holds information about a distribution set + */ +public class ProxyDistributionSetInfo extends ProxyIdentifiableEntity { + private static final long serialVersionUID = 1L; + + private String name; + private String version; + private String nameVersion; + + /** + * Constructor + */ + public ProxyDistributionSetInfo() { + super(); + } + + /** + * Constructor + * + * @param id + * distribution set ID + * @param name + * distribution set name + * @param version + * distribution set version + */ + public ProxyDistributionSetInfo(final Long id, final String name, final String version) { + super(id); + + this.name = name; + this.version = version; + this.nameVersion = HawkbitCommonUtil.getFormattedNameVersion(name, version); + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getVersion() { + return version; + } + + public void setVersion(final String version) { + this.version = version; + } + + public String getNameVersion() { + return nameVersion; + } + + public void setNameVersion(final String nameVersion) { + this.nameVersion = nameVersion; + } + + @Override + public int hashCode() { + // nameVersion is ignored because it is a composition of name and + // version + return Objects.hash(getId(), getName(), getVersion()); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ProxyDistributionSetInfo other = (ProxyDistributionSetInfo) obj; + + // nameVersion is ignored because it is a composition of name and + // version + return Objects.equals(this.getId(), other.getId()) && Objects.equals(this.getName(), other.getName()) + && Objects.equals(this.getVersion(), other.getVersion()); + } +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyIdNameVersion.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyIdNameVersion.java deleted file mode 100644 index 1d591ae2c..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyIdNameVersion.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2020 Bosch.IO GmbH and others. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.eclipse.hawkbit.ui.common.data.proxies; - -/** - * Represent a data transfer object for the ui with id, name and version. - */ -public class ProxyIdNameVersion extends ProxyIdentifiableEntity { - private static final long serialVersionUID = 1L; - - private String name; - private String version; - - /** - * Constructor. - * - * @param id - * the id - * @param name - * the name - * @param version - * the version - * - */ - public ProxyIdNameVersion(final Long id, final String name, final String version) { - super(id); - - this.name = name; - this.version = version; - } - - /** - * Gets the name - * - * @return name - */ - public String getName() { - return name; - } - - /** - * Sets the name - * - * @param name - * Name of entity - */ - public void setName(final String name) { - this.name = name; - } - - /** - * Gets the version - * - * @return version - */ - public String getVersion() { - return version; - } - - /** - * Sets the version - * - * @param version - * Version of entity - */ - public void setVersion(final String version) { - this.version = version; - } -} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRollout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRollout.java index d415cc670..9bd4b0348 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRollout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRollout.java @@ -22,7 +22,7 @@ public class ProxyRollout extends ProxyNamedEntity { private static final long serialVersionUID = 1L; - private String distributionSetNameVersion; + private ProxyDistributionSetInfo dsInfo; private Integer numberOfGroups; @@ -44,10 +44,8 @@ public class ProxyRollout extends ProxyNamedEntity { private ActionType actionType; - private Long distributionSetId; - /** - * Constructor + * Constructor */ public ProxyRollout() { } @@ -56,12 +54,24 @@ public class ProxyRollout extends ProxyNamedEntity { * Constructor for ProxyRollout * * @param id - * Rollout entity Id + * Rollout entity Id */ public ProxyRollout(final Long id) { super(id); } + public ProxyDistributionSetInfo getDsInfo() { + return dsInfo; + } + + public void setDsInfo(final ProxyDistributionSetInfo dsInfo) { + this.dsInfo = dsInfo; + } + + public String getDsNameVersion() { + return dsInfo != null ? dsInfo.getNameVersion() : null; + } + /** * Gets the rollout actionType * @@ -75,30 +85,12 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the actionType * * @param actionType - * Rollout actionType + * Rollout actionType */ public void setActionType(final ActionType actionType) { this.actionType = actionType; } - /** - * Get the distributionSetNameVersion - * - * @return distributionSetNameVersion - */ - public String getDistributionSetNameVersion() { - return distributionSetNameVersion; - } - - /** - * Sets the distributionSetNameVersion - * @param distributionSetNameVersion - * Name and version of distribution set - */ - public void setDistributionSetNameVersion(final String distributionSetNameVersion) { - this.distributionSetNameVersion = distributionSetNameVersion; - } - /** * Gets the numberOfGroups * @@ -112,7 +104,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the numberOfGroups * * @param numberOfGroups - * Number of rollout groups + * Number of rollout groups */ public void setNumberOfGroups(final Integer numberOfGroups) { this.numberOfGroups = numberOfGroups; @@ -131,7 +123,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the forcedTime * * @param forcedTime - * Forced time + * Forced time */ public void setForcedTime(final Long forcedTime) { this.forcedTime = forcedTime; @@ -150,7 +142,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the rollout status * * @param status - * Rollout current status + * Rollout current status */ public void setStatus(final RolloutStatus status) { this.status = status; @@ -169,7 +161,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the approvalDecidedBy * * @param approvalDecidedBy - * approval DecidedBy for rollout + * approval DecidedBy for rollout */ public void setApprovalDecidedBy(final String approvalDecidedBy) { this.approvalDecidedBy = approvalDecidedBy; @@ -188,7 +180,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the approvalRemark * * @param approvalRemark - * Remark for approval + * Remark for approval */ public void setApprovalRemark(final String approvalRemark) { this.approvalRemark = approvalRemark; @@ -207,7 +199,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the targetFilterQuery * * @param targetFilterQuery - * Target filter query + * Target filter query */ public void setTargetFilterQuery(final String targetFilterQuery) { this.targetFilterQuery = targetFilterQuery; @@ -226,7 +218,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the totalTargets * * @param totalTargets - * Total targets + * Total targets */ public void setTotalTargets(final long totalTargets) { this.totalTargets = totalTargets; @@ -245,31 +237,12 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the startAt * * @param startAt - * time rollout starts at + * time rollout starts at */ public void setStartAt(final Long startAt) { this.startAt = startAt; } - /** - * Gets the Id of distribution set - * - * @return distributionSetId - */ - public Long getDistributionSetId() { - return distributionSetId; - } - - /** - * Sets the distributionSetId - * - * @param distributionSetId - * Id of distribution set - */ - public void setDistributionSetId(final Long distributionSetId) { - this.distributionSetId = distributionSetId; - } - /** * Gets the total count of all the rollout status * @@ -283,7 +256,7 @@ public class ProxyRollout extends ProxyNamedEntity { * Sets the statusTotalCountMap * * @param statusTotalCountMap - * total count of all the rollout status + * total count of all the rollout status */ public void setStatusTotalCountMap(final Map statusTotalCountMap) { this.statusTotalCountMap = statusTotalCountMap; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutForm.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutForm.java index 52c6b8041..9bf109178 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutForm.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutForm.java @@ -28,9 +28,8 @@ public class ProxyRolloutForm implements Serializable, NameAware, DsIdAware, Tar private Long id; private String name; - private Long distributionSetId; - private Long targetFilterId; - private String targetFilterQuery; + private ProxyTargetFilterQueryInfo targetFilterInfo; + private ProxyDistributionSetInfo dsInfo; private String description; private ActionType actionType; private Long forcedTime; @@ -39,6 +38,7 @@ public class ProxyRolloutForm implements Serializable, NameAware, DsIdAware, Tar /** * Gets the rollout form id + * * @return id */ public Long getId() { @@ -49,7 +49,7 @@ public class ProxyRolloutForm implements Serializable, NameAware, DsIdAware, Tar * Sets the form id * * @param id - * rollout form id + * rollout form id */ public void setId(final Long id) { this.id = id; @@ -66,33 +66,35 @@ public class ProxyRolloutForm implements Serializable, NameAware, DsIdAware, Tar } @Override - public Long getDistributionSetId() { - return distributionSetId; + public ProxyTargetFilterQueryInfo getTargetFilterQueryInfo() { + return targetFilterInfo; } @Override - public void setDistributionSetId(final Long distributionSetId) { - this.distributionSetId = distributionSetId; + public void setTargetFilterQueryInfo(final ProxyTargetFilterQueryInfo tfqInfo) { + this.targetFilterInfo = tfqInfo; } - @Override - public Long getTargetFilterId() { - return targetFilterId; - } - - @Override - public void setTargetFilterId(final Long targetFilterId) { - this.targetFilterId = targetFilterId; - } - - @Override public String getTargetFilterQuery() { - return targetFilterQuery; + return targetFilterInfo != null ? targetFilterInfo.getQuery() : null; + } + + public void setTargetFilterQuery(final String targetFilterQuery) { + if (targetFilterInfo != null) { + targetFilterInfo.setQuery(targetFilterQuery); + } else { + targetFilterInfo = new ProxyTargetFilterQueryInfo(null, null, targetFilterQuery); + } } @Override - public void setTargetFilterQuery(final String targetFilterQuery) { - this.targetFilterQuery = targetFilterQuery; + public ProxyDistributionSetInfo getDistributionSetInfo() { + return dsInfo; + } + + @Override + public void setDistributionSetInfo(final ProxyDistributionSetInfo dsInfo) { + this.dsInfo = dsInfo; } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutWindow.java index 05f820680..9cf695387 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyRolloutWindow.java @@ -52,8 +52,8 @@ public class ProxyRolloutWindow implements Serializable { setActionType(rollout.getActionType()); setStartAt(rollout.getStartAt()); setForcedTime(rollout.getForcedTime()); - setDistributionSetId(rollout.getDistributionSetId()); setTargetFilterQuery(rollout.getTargetFilterQuery()); + setDistributionSetInfo(rollout.getDsInfo()); setNumberOfGroups(rollout.getNumberOfGroups()); } @@ -186,25 +186,6 @@ public class ProxyRolloutWindow implements Serializable { rolloutApproval.setApprovalRemark(approvalRemark); } - /** - * Gets the rollout form targetFilterQuery - * - * @return targetFilterQuery - */ - public String getTargetFilterQuery() { - return rolloutForm.getTargetFilterQuery(); - } - - /** - * Sets the targetFilterQuery - * - * @param targetFilterQuery - * Rollout form target filter query - */ - public void setTargetFilterQuery(final String targetFilterQuery) { - rolloutForm.setTargetFilterQuery(targetFilterQuery); - } - /** * Gets the time rollout start time * @@ -224,40 +205,59 @@ public class ProxyRolloutWindow implements Serializable { rolloutForm.setStartAt(startAt); } + /** + * @return Rollout form targetFilter Info + */ + public ProxyTargetFilterQueryInfo getTargetFilterInfo() { + return rolloutForm.getTargetFilterQueryInfo(); + } + + /** + * Sets the targetFilter Info + * + * @param tfqInfo + * Info of rollout form targetFilter + */ + public void setTargetFilterInfo(final ProxyTargetFilterQueryInfo tfqInfo) { + rolloutForm.setTargetFilterQueryInfo(tfqInfo); + } + + /** + * Gets the rollout form targetFilterQuery + * + * @return targetFilterQuery + */ + public String getTargetFilterQuery() { + return rolloutForm.getTargetFilterQuery(); + } + + /** + * Sets the targetFilterQuery + * + * @param targetFilterQuery + * Rollout form target filter query + */ + public void setTargetFilterQuery(final String targetFilterQuery) { + rolloutForm.setTargetFilterQuery(targetFilterQuery); + } + /** * Gets the Id of rollout form distribution set * * @return distributionSetId */ public Long getDistributionSetId() { - return rolloutForm.getDistributionSetId(); + return rolloutForm.getDistributionSetInfo() != null ? rolloutForm.getDistributionSetInfo().getId() : null; } /** - * Sets the distributionSetId + * Sets the distribution set info * - * @param distributionSetId - * Id of rollout form distribution set + * @param dsInfo + * Info of rollout form distribution set */ - public void setDistributionSetId(final Long distributionSetId) { - rolloutForm.setDistributionSetId(distributionSetId); - } - - /** - * @return Rollout form targetFilter id - */ - public Long getTargetFilterId() { - return rolloutForm.getTargetFilterId(); - } - - /** - * Sets the targetFilterId - * - * @param targetFilterId - * Id of rollout form targetFilter - */ - public void setTargetFilterId(final Long targetFilterId) { - rolloutForm.setTargetFilterId(targetFilterId); + public void setDistributionSetInfo(final ProxyDistributionSetInfo dsInfo) { + rolloutForm.setDistributionSetInfo(dsInfo); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxySystemConfigWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxySystemConfigWindow.java index c0fb3d471..029344cb7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxySystemConfigWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxySystemConfigWindow.java @@ -23,7 +23,7 @@ public class ProxySystemConfigWindow implements Serializable { private Long id; private String name; private String description; - private Long distributionSetTypeId; + private ProxyTypeInfo dsTypeInfo; private Long repositoryConfigId; private Long rolloutConfigId; private Long caRootAuthorityId; @@ -222,23 +222,12 @@ public class ProxySystemConfigWindow implements Serializable { this.description = description; } - /** - * Gets the id of distributionSetType - * - * @return distributionSetTypeId - */ - public Long getDistributionSetTypeId() { - return distributionSetTypeId; + public ProxyTypeInfo getDsTypeInfo() { + return dsTypeInfo; } - /** - * Sets the distributionSetTypeId - * - * @param distributionSetTypeId - * System config window distributionSetTypeId - */ - public void setDistributionSetTypeId(final Long distributionSetTypeId) { - this.distributionSetTypeId = distributionSetTypeId; + public void setDsTypeInfo(final ProxyTypeInfo dsTypeInfo) { + this.dsTypeInfo = dsTypeInfo; } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQuery.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQuery.java index 5b513cdc9..e8ae3146f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQuery.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQuery.java @@ -22,7 +22,7 @@ public class ProxyTargetFilterQuery extends ProxyNamedEntity implements DsIdAwar private boolean isAutoAssignmentEnabled; - private ProxyIdNameVersion autoAssignDsIdNameVersion; + private ProxyDistributionSetInfo autoAssignDsInfo; private ActionType autoAssignActionType; @@ -36,7 +36,7 @@ public class ProxyTargetFilterQuery extends ProxyNamedEntity implements DsIdAwar * Constructor for ProxyTargetFilterQuery * * @param id - * Target filter query id + * Target filter query id */ public ProxyTargetFilterQuery(final Long id) { super(id); @@ -55,7 +55,7 @@ public class ProxyTargetFilterQuery extends ProxyNamedEntity implements DsIdAwar * Sets the query * * @param query - * Target filter query + * Target filter query */ public void setQuery(final String query) { this.query = query; @@ -74,7 +74,7 @@ public class ProxyTargetFilterQuery extends ProxyNamedEntity implements DsIdAwar * Sets the autoAssignActionType * * @param autoAssignActionType - * ActionType + * ActionType */ public void setAutoAssignActionType(final ActionType autoAssignActionType) { this.autoAssignActionType = autoAssignActionType; @@ -102,35 +102,50 @@ public class ProxyTargetFilterQuery extends ProxyNamedEntity implements DsIdAwar } /** - * Gets the autoAssign Distribution set IdNameVersion + * Gets the autoAssign Distribution set Info * - * @return autoAssignDsIdNameVersion + * @return ProxyDistributionSetInfo */ - public ProxyIdNameVersion getAutoAssignDsIdNameVersion() { - return autoAssignDsIdNameVersion; + @Override + public ProxyDistributionSetInfo getDistributionSetInfo() { + return autoAssignDsInfo; } /** - * Sets the securityToken + * Sets the autoAssign Distribution set Info * - * @param autoAssignDsIdNameVersion - * Target filter autoAssign Distribution set IdNameVersion + * @param dsInfo + * Target filter autoAssign Distribution set Info */ - public void setAutoAssignDsIdNameVersion(final ProxyIdNameVersion autoAssignDsIdNameVersion) { - this.autoAssignDsIdNameVersion = autoAssignDsIdNameVersion; + @Override + public void setDistributionSetInfo(final ProxyDistributionSetInfo dsInfo) { + this.autoAssignDsInfo = dsInfo; } - @Override - public void setDistributionSetId(final Long id) { - if (autoAssignDsIdNameVersion != null) { - autoAssignDsIdNameVersion.setId(id); - } else { - autoAssignDsIdNameVersion = new ProxyIdNameVersion(id, null, null); - } + /** + * Sets the Id, name and query of target filter query + * + * @param tfqInfo + * ProxyTargetFilterQuery + * + * @return proxy of target filter query + */ + public static ProxyTargetFilterQuery of(final ProxyTargetFilterQueryInfo tfqInfo) { + final ProxyTargetFilterQuery tfq = new ProxyTargetFilterQuery(); + + tfq.setId(tfqInfo.getId()); + tfq.setName(tfqInfo.getName()); + tfq.setQuery(tfqInfo.getQuery()); + + return tfq; } - @Override - public Long getDistributionSetId() { - return autoAssignDsIdNameVersion != null ? autoAssignDsIdNameVersion.getId() : null; + /** + * Gets the Id, name and query of target filter query + * + * @return proxy of Id, Name and query + */ + public ProxyTargetFilterQueryInfo getInfo() { + return new ProxyTargetFilterQueryInfo(getId(), getName(), getQuery()); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQueryInfo.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQueryInfo.java new file mode 100644 index 000000000..17dbf1dc7 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTargetFilterQueryInfo.java @@ -0,0 +1,78 @@ +/** + * Copyright (c) 2020 Bosch.IO GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.ui.common.data.proxies; + +import java.util.Objects; + +/** + * Holds information about a target filter query + */ +public class ProxyTargetFilterQueryInfo extends ProxyIdentifiableEntity { + private static final long serialVersionUID = 1L; + + private String name; + private String query; + + /** + * Constructor + */ + public ProxyTargetFilterQueryInfo() { + super(); + } + + /** + * Constructor + * + * @param id + * target filter ID + * @param name + * target filter name + * @param query + * target filter query + */ + public ProxyTargetFilterQueryInfo(final Long id, final String name, final String query) { + super(id); + this.name = name; + this.query = query; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getQuery() { + return query; + } + + public void setQuery(final String query) { + this.query = query; + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getName(), getQuery()); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ProxyTargetFilterQueryInfo other = (ProxyTargetFilterQueryInfo) obj; + return Objects.equals(this.getId(), other.getId()) && Objects.equals(this.getName(), other.getName()) + && Objects.equals(this.getQuery(), other.getQuery()); + } +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyType.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyType.java index bd19cee4e..0e724b694 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyType.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyType.java @@ -47,20 +47,11 @@ public class ProxyType extends ProxyFilterButton { return key; } - /** - * Gets the key and name - * - * @return keyAndName - */ - public String getKeyAndName() { - return key + " (" + getName() + ")"; - } - /** * Sets the key * * @param key - * Entity key + * Entity key */ public void setKey(final String key) { this.key = key; @@ -121,7 +112,7 @@ public class ProxyType extends ProxyFilterButton { * Sets the smTypeAssign * * @param smTypeAssign - * Software module type assign + * Software module type assign */ public void setSmTypeAssign(final SmTypeAssign smTypeAssign) { this.smTypeAssign = smTypeAssign; @@ -140,7 +131,7 @@ public class ProxyType extends ProxyFilterButton { * Sets the selectedSmTypes * * @param selectedSmTypes - * Selected software module types + * Selected software module types */ public void setSelectedSmTypes(final Set selectedSmTypes) { this.selectedSmTypes = selectedSmTypes; @@ -159,7 +150,7 @@ public class ProxyType extends ProxyFilterButton { * Sets the maxAssignments * * @param maxAssignments - * Entity maxAssignments + * Entity maxAssignments */ public void setMaxAssignments(final int maxAssignments) { this.maxAssignments = maxAssignments; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTypeInfo.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTypeInfo.java index 3b9213663..122fde180 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTypeInfo.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/data/proxies/ProxyTypeInfo.java @@ -30,9 +30,9 @@ public class ProxyTypeInfo extends ProxyIdentifiableEntity { * Constructor * * @param id - * type name - * @param name * type ID + * @param name + * type name * @param key * type key */ @@ -58,6 +58,15 @@ public class ProxyTypeInfo extends ProxyIdentifiableEntity { this.key = key; } + /** + * Gets the key and name + * + * @return keyAndName + */ + public String getKeyAndName() { + return key + " (" + getName() + ")"; + } + @Override public int hashCode() { return Objects.hash(getId(), getName(), getKey()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/header/support/DistributionSetFilterDropAreaSupport.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/header/support/DistributionSetFilterDropAreaSupport.java index 4660e605e..fb576012e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/header/support/DistributionSetFilterDropAreaSupport.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/header/support/DistributionSetFilterDropAreaSupport.java @@ -25,7 +25,6 @@ import org.eclipse.hawkbit.ui.common.layout.listener.EntityDraggingListener; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleNoBorder; import org.eclipse.hawkbit.ui.management.targettable.TargetGridLayoutUiState; -import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUITargetDefinitions; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.UINotification; @@ -170,7 +169,7 @@ public class DistributionSetFilterDropAreaSupport implements HeaderSupport { currentDsFilterInfo.removeAllComponents(); currentDsFilterInfo.setSizeUndefined(); - targetGridLayoutUiState.setFilterDsIdNameVersion(null); + targetGridLayoutUiState.setFilterDsInfo(null); } private static String sanitizeDsNameVersion(final String dsNameAndVersion) { @@ -182,7 +181,7 @@ public class DistributionSetFilterDropAreaSupport implements HeaderSupport { } private void updateUiState(final ProxyDistributionSet ds) { - targetGridLayoutUiState.setFilterDsIdNameVersion(ds.getIdNameVersion()); + targetGridLayoutUiState.setFilterDsInfo(ds.getInfo()); } private void addDropStylingListener() { @@ -204,11 +203,8 @@ public class DistributionSetFilterDropAreaSupport implements HeaderSupport { @Override public void restoreState() { - if (targetGridLayoutUiState.getFilterDsIdNameVersion() != null) { - final String dsNameVersion = HawkbitCommonUtil.getFormattedNameVersion( - targetGridLayoutUiState.getFilterDsIdNameVersion().getName(), - targetGridLayoutUiState.getFilterDsIdNameVersion().getVersion()); - addDsFilterDropAreaTextField(dsNameVersion); + if (targetGridLayoutUiState.getFilterDsInfo() != null) { + addDsFilterDropAreaTextField(targetGridLayoutUiState.getFilterDsInfo().getNameVersion()); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java index 944c60ca3..d34e40ec8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java @@ -16,6 +16,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.vaadin.data.provider.DataProvider; +import com.vaadin.data.provider.ListDataProvider; import com.vaadin.icons.VaadinIcons; import com.vaadin.server.ExternalResource; import com.vaadin.server.Resource; @@ -187,7 +188,7 @@ public final class SPUIComponentProvider { } /** - * Create generic combobox. + * Create generic combobox with backend data provider. * * @param id * id of the combobox @@ -209,6 +210,16 @@ public final class SPUIComponentProvider { public static ComboBox getComboBox(final String id, final String caption, final String description, final String placeholder, final boolean isEmptySelectionAllowed, final ItemCaptionGenerator itemCaptionGenerator, final DataProvider dataProvider) { + final ComboBox comboBox = getComboBox(id, caption, description, placeholder, isEmptySelectionAllowed, + itemCaptionGenerator); + comboBox.setDataProvider(dataProvider); + + return comboBox; + } + + private static ComboBox getComboBox(final String id, final String caption, final String description, + final String placeholder, final boolean isEmptySelectionAllowed, + final ItemCaptionGenerator itemCaptionGenerator) { final ComboBox comboBox = new ComboBox<>(); comboBox.setId(id); comboBox.setCaption(caption); @@ -218,6 +229,35 @@ public final class SPUIComponentProvider { comboBox.setEmptySelectionAllowed(isEmptySelectionAllowed); comboBox.setItemCaptionGenerator(itemCaptionGenerator); + + return comboBox; + } + + /** + * Create generic combobox with list in-memory data provider. + * + * @param id + * id of the combobox + * @param caption + * caption of the combobox + * @param description + * description of the combobox + * @param placeholder + * placeholder of the combobox + * @param isEmptySelectionAllowed + * flag for empty selection enabled + * @param itemCaptionGenerator + * generator fot item captions + * @param dataProvider + * provides data/items + * + * @return generic ComboBox + */ + public static ComboBox getComboBox(final String id, final String caption, final String description, + final String placeholder, final boolean isEmptySelectionAllowed, + final ItemCaptionGenerator itemCaptionGenerator, final ListDataProvider dataProvider) { + final ComboBox comboBox = getComboBox(id, caption, description, placeholder, isEmptySelectionAllowed, + itemCaptionGenerator); comboBox.setDataProvider(dataProvider); return comboBox; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/AutoAssignmentWindowController.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/AutoAssignmentWindowController.java index 12982cd09..bf8b44da6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/AutoAssignmentWindowController.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/AutoAssignmentWindowController.java @@ -47,19 +47,19 @@ public class AutoAssignmentWindowController * Constructor for AutoAssignmentWindowController * * @param i18n - * VaadinMessageSource + * VaadinMessageSource * @param entityFactory - * EntityFactory + * EntityFactory * @param eventBus - * UIEventBus + * UIEventBus * @param uiNotification - * UINotification + * UINotification * @param targetManagement - * TargetManagement + * TargetManagement * @param targetFilterQueryManagement - * TargetFilterQueryManagement + * TargetFilterQueryManagement * @param layout - * AutoAssignmentWindowLayout + * AutoAssignmentWindowLayout */ public AutoAssignmentWindowController(final VaadinMessageSource i18n, final UIEventBus eventBus, final UINotification uiNotification, final EntityFactory entityFactory, @@ -88,14 +88,14 @@ public class AutoAssignmentWindowController autoAssignmentFilter.setId(proxyEntity.getId()); autoAssignmentFilter.setQuery(proxyEntity.getQuery()); - if (proxyEntity.getAutoAssignDsIdNameVersion() != null) { + if (proxyEntity.getDistributionSetInfo() != null) { autoAssignmentFilter.setAutoAssignmentEnabled(true); autoAssignmentFilter.setAutoAssignActionType(proxyEntity.getAutoAssignActionType()); - autoAssignmentFilter.setAutoAssignDsIdNameVersion(proxyEntity.getAutoAssignDsIdNameVersion()); + autoAssignmentFilter.setDistributionSetInfo(proxyEntity.getDistributionSetInfo()); } else { autoAssignmentFilter.setAutoAssignmentEnabled(false); autoAssignmentFilter.setAutoAssignActionType(ActionType.FORCED); - autoAssignmentFilter.setAutoAssignDsIdNameVersion(null); + autoAssignmentFilter.setDistributionSetInfo(null); } return autoAssignmentFilter; @@ -108,8 +108,8 @@ public class AutoAssignmentWindowController @Override protected void persistEntity(final ProxyTargetFilterQuery entity) { - if (entity.isAutoAssignmentEnabled() && entity.getAutoAssignDsIdNameVersion() != null) { - final Long autoAssignDsId = entity.getAutoAssignDsIdNameVersion().getId(); + if (entity.isAutoAssignmentEnabled() && entity.getDistributionSetInfo() != null) { + final Long autoAssignDsId = entity.getDistributionSetInfo().getId(); final Long targetsForAutoAssignmentCount = targetManagement.countByRsqlAndNonDS(autoAssignDsId, entity.getQuery()); @@ -155,7 +155,7 @@ public class AutoAssignmentWindowController @Override protected boolean isEntityValid(final ProxyTargetFilterQuery entity) { if (entity.isAutoAssignmentEnabled() - && (entity.getAutoAssignActionType() == null || entity.getAutoAssignDsIdNameVersion() == null)) { + && (entity.getAutoAssignActionType() == null || entity.getDistributionSetInfo() == null)) { uiNotification.displayValidationError( i18n.getMessage(UIMessageIdProvider.MESSAGE_AUTOASSIGN_CREATE_ERROR_MISSINGELEMENTS)); return false; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterGrid.java index 9e049d33f..1e2b41452 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/TargetFilterGrid.java @@ -18,7 +18,6 @@ import org.eclipse.hawkbit.ui.common.builder.GridComponentBuilder; import org.eclipse.hawkbit.ui.common.builder.StatusIconBuilder.ActionTypeIconSupplier; import org.eclipse.hawkbit.ui.common.data.mappers.TargetFilterQueryToProxyTargetFilterMapper; import org.eclipse.hawkbit.ui.common.data.providers.TargetFilterQueryDataProvider; -import org.eclipse.hawkbit.ui.common.data.proxies.ProxyIdNameVersion; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyIdentifiableEntity; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQuery; import org.eclipse.hawkbit.ui.common.event.CommandTopics; @@ -33,7 +32,6 @@ import org.eclipse.hawkbit.ui.common.grid.AbstractGrid; import org.eclipse.hawkbit.ui.common.grid.support.DeleteSupport; import org.eclipse.hawkbit.ui.common.grid.support.FilterSupport; import org.eclipse.hawkbit.ui.filtermanagement.state.TargetFilterGridLayoutUiState; -import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.UIMessageIdProvider; import org.eclipse.hawkbit.ui.utils.UINotification; @@ -185,6 +183,24 @@ public class TargetFilterGrid extends AbstractGrid(FormType.EDIT, targetFilter, EventView.TARGET_FILTER)); } + private Button buildAutoAssignmentLink(final ProxyTargetFilterQuery targetFilter) { + final String caption; + if (targetFilter.isAutoAssignmentEnabled() && targetFilter.getDistributionSetInfo() != null) { + caption = targetFilter.getDistributionSetInfo().getNameVersion(); + } else { + caption = i18n.getMessage(UIMessageIdProvider.BUTTON_NO_AUTO_ASSIGNMENT); + } + + final Button link = GridComponentBuilder.buildLink(targetFilter, "distSetButton", caption, + permissionChecker.hasReadRepositoryPermission(), + clickEvent -> onClickOfAutoAssignmentLink(targetFilter)); + + final String description = i18n.getMessage(UIMessageIdProvider.BUTTON_AUTO_ASSIGNMENT_DESCRIPTION); + link.setDescription(description); + + return link; + } + private void onClickOfAutoAssignmentLink(final ProxyTargetFilterQuery targetFilter) { if (permissionChecker.hasReadRepositoryPermission()) { final Window autoAssignmentWindow = autoAssignmentWindowBuilder.getWindowForAutoAssignment(targetFilter); @@ -199,24 +215,4 @@ public class TargetFilterGrid extends AbstractGrid onClickOfAutoAssignmentLink(targetFilter)); - - final String description = i18n.getMessage(UIMessageIdProvider.BUTTON_AUTO_ASSIGNMENT_DESCRIPTION); - link.setDescription(description); - - return link; - } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/BulkUploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/BulkUploadHandler.java index f8b80b359..9baa656ac 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/BulkUploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/BulkUploadHandler.java @@ -168,9 +168,9 @@ public class BulkUploadHandler implements SucceededListener, FailedListener, Rec * Constructor for UploadAsync * * @param vaadinSession - * VaadinSession + * VaadinSession * @param vaadinUI - * UI + * UI */ public UploadAsync(final VaadinSession vaadinSession, final UI vaadinUI) { this.vaadinSession = vaadinSession; @@ -296,7 +296,7 @@ public class BulkUploadHandler implements SucceededListener, FailedListener, Rec private String saveAllAssignments() { final ActionType actionType = ActionType.FORCED; final long forcedTimeStamp = new Date().getTime(); - final Long dsId = bulkUploadInputs.getDistributionSetId(); + final Long dsId = bulkUploadInputs.getDistributionSetInfo().getId(); if (!distributionSetManagement.get(dsId).isPresent()) { return i18n.getMessage("message.bulk.upload.assignment.failed"); @@ -342,7 +342,7 @@ public class BulkUploadHandler implements SucceededListener, FailedListener, Rec } private boolean isDsSelected() { - return bulkUploadInputs.getDistributionSetId() != null; + return bulkUploadInputs.getDistributionSetInfo() != null; } private boolean areTargetsCreatedSuccessfully() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUpdateWindowLayout.java index 3467377b2..f5c32ecf0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUpdateWindowLayout.java @@ -156,7 +156,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { private ProxyBulkUploadWindow getBulkUploadInputsBean() { final ProxyBulkUploadWindow bean = new ProxyBulkUploadWindow(); - bean.setDistributionSetId(binder.getBean().getDistributionSetId()); + bean.setDistributionSetInfo(binder.getBean().getDistributionSetInfo()); bean.setTagIdsWithNameToAssign(getTagIdsWithNameToAssign()); bean.setDescription(binder.getBean().getDescription()); @@ -269,7 +269,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { * Actions once start of upload */ public void onStartOfUpload() { - targetBulkUploadUiState.setDsId(binder.getBean().getDistributionSetId()); + targetBulkUploadUiState.setDsInfo(binder.getBean().getDistributionSetInfo()); targetBulkUploadUiState.setTagIdsWithNameToAssign(getTagIdsWithNameToAssign()); targetBulkUploadUiState.setDescription(binder.getBean().getDescription()); @@ -377,7 +377,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { * Reset target bulk upload ui state */ public void clearUiState() { - targetBulkUploadUiState.setDsId(null); + targetBulkUploadUiState.setDsInfo(null); targetBulkUploadUiState.getTagIdsWithNameToAssign().clear(); targetBulkUploadUiState.setDescription(null); } @@ -387,7 +387,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { */ public void restoreComponentsValue() { final ProxyBulkUploadWindow bulkUploadInputsToRestore = new ProxyBulkUploadWindow(); - bulkUploadInputsToRestore.setDistributionSetId(targetBulkUploadUiState.getDsId()); + bulkUploadInputsToRestore.setDistributionSetInfo(targetBulkUploadUiState.getDsInfo()); bulkUploadInputsToRestore.setDescription(targetBulkUploadUiState.getDescription()); bulkUploadInputsToRestore.setTagIdsWithNameToAssign(targetBulkUploadUiState.getTagIdsWithNameToAssign()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUploadUiState.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUploadUiState.java index 3fb0ad34a..8cbb0e0e6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUploadUiState.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/bulkupload/TargetBulkUploadUiState.java @@ -12,6 +12,8 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyDistributionSetInfo; + /** * Target bulk upload ui state */ @@ -20,7 +22,7 @@ public class TargetBulkUploadUiState implements Serializable { private boolean isInProgress; - private Long dsId; + private ProxyDistributionSetInfo dsInfo; private final Map tagIdsWithNameToAssign = new HashMap<>(); private String description; @@ -35,27 +37,27 @@ public class TargetBulkUploadUiState implements Serializable { * Sets the upload progress * * @param isInProgress - * boolean + * boolean */ public void setInProgress(final boolean isInProgress) { this.isInProgress = isInProgress; } /** - * @return Distribution set id + * @return Distribution set info */ - public Long getDsId() { - return dsId; + public ProxyDistributionSetInfo getDsInfo() { + return dsInfo; } /** - * Sets the distribution set id + * Sets the distribution set info * - * @param dsId - * Id + * @param dsInfo + * Info of distribution set */ - public void setDsId(final Long dsId) { - this.dsId = dsId; + public void setDsInfo(final ProxyDistributionSetInfo dsInfo) { + this.dsInfo = dsInfo; } /** @@ -69,7 +71,7 @@ public class TargetBulkUploadUiState implements Serializable { * Sets the Tag ids with name * * @param tagIdsWithNameToAssign - * Tag ids with name + * Tag ids with name */ public void setTagIdsWithNameToAssign(final Map tagIdsWithNameToAssign) { this.tagIdsWithNameToAssign.clear(); @@ -87,7 +89,7 @@ public class TargetBulkUploadUiState implements Serializable { * Sets the description of target bulk upload * * @param description - * Description + * Description */ public void setDescription(final String description) { this.description = description; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetGrid.java index f7ac75ce5..a07f8ade9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetGrid.java @@ -273,8 +273,7 @@ public class TargetGrid extends AbstractGrid { GridComponentBuilder.addDescriptionColumn(this, i18n, DESC_ID).setHidable(true).setHidden(true); - GridComponentBuilder.addColumn(this, ProxyRollout::getDistributionSetNameVersion).setId(DIST_NAME_VERSION_ID) + GridComponentBuilder.addColumn(this, ProxyRollout::getDsNameVersion).setId(DIST_NAME_VERSION_ID) .setCaption(i18n.getMessage("header.distributionset")).setHidable(true).setExpandRatio(2); GridComponentBuilder diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/window/controllers/CopyRolloutWindowController.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/window/controllers/CopyRolloutWindowController.java index d5b545335..b99b8a944 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/window/controllers/CopyRolloutWindowController.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/window/controllers/CopyRolloutWindowController.java @@ -20,6 +20,7 @@ import org.eclipse.hawkbit.ui.common.data.proxies.ProxyAdvancedRolloutGroup; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyRollout; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyRolloutWindow; import org.eclipse.hawkbit.ui.common.data.proxies.ProxyRolloutWindow.GroupDefinitionMode; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTargetFilterQueryInfo; import org.eclipse.hawkbit.ui.rollout.window.RolloutWindowDependencies; import org.eclipse.hawkbit.ui.rollout.window.components.AutoStartOptionGroupLayout.AutoStartOption; import org.eclipse.hawkbit.ui.rollout.window.layouts.AddRolloutWindowLayout; @@ -87,7 +88,9 @@ public class CopyRolloutWindowController extends AddRolloutWindowController { final Page filterQueries = targetFilterQueryManagement.findByQuery(PageRequest.of(0, 1), proxyRolloutWindow.getTargetFilterQuery()); if (filterQueries.getTotalElements() > 0) { - proxyRolloutWindow.setTargetFilterId(filterQueries.getContent().get(0).getId()); + final TargetFilterQuery tfq = filterQueries.getContent().get(0); + proxyRolloutWindow + .setTargetFilterInfo(new ProxyTargetFilterQueryInfo(tfq.getId(), tfq.getName(), tfq.getQuery())); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java index fd80b6ad7..7935650cb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/DefaultDistributionSetTypeLayout.java @@ -10,12 +10,13 @@ package org.eclipse.hawkbit.ui.tenantconfiguration; import org.eclipse.hawkbit.repository.DistributionSetTypeManagement; import org.eclipse.hawkbit.repository.SystemManagement; +import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.builder.LabelBuilder; -import org.eclipse.hawkbit.ui.common.data.mappers.TypeToProxyTypeMapper; +import org.eclipse.hawkbit.ui.common.data.mappers.TypeToTypeInfoMapper; import org.eclipse.hawkbit.ui.common.data.providers.DistributionSetTypeDataProvider; import org.eclipse.hawkbit.ui.common.data.proxies.ProxySystemConfigWindow; -import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTypeInfo; import org.eclipse.hawkbit.ui.tenantconfiguration.window.SystemConfigWindowDependencies; import org.eclipse.hawkbit.ui.tenantconfiguration.window.SystemConfigWindowLayoutComponentBuilder; import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; @@ -41,7 +42,7 @@ public class DefaultDistributionSetTypeLayout extends CustomComponent { private final SpPermissionChecker permissionChecker; private Long currentDefaultDistSetTypeId; - private ComboBox dsSetTypeComboBox = new ComboBox<>(); + private ComboBox dsSetTypeComboBox; private final Binder binder; private final transient SystemConfigWindowLayoutComponentBuilder builder; private Label changeIcon; @@ -52,8 +53,8 @@ public class DefaultDistributionSetTypeLayout extends CustomComponent { this.i18n = i18n; this.permissionChecker = permChecker; this.binder = binder; - final DistributionSetTypeDataProvider dataProvider = new DistributionSetTypeDataProvider<>( - dsTypeManagement, new TypeToProxyTypeMapper<>()); + final DistributionSetTypeDataProvider dataProvider = new DistributionSetTypeDataProvider<>( + dsTypeManagement, new TypeToTypeInfoMapper()); final SystemConfigWindowDependencies dependencies = new SystemConfigWindowDependencies(systemManagement, i18n, permChecker, dsTypeManagement, dataProvider); this.builder = new SystemConfigWindowLayoutComponentBuilder(dependencies); @@ -105,7 +106,7 @@ public class DefaultDistributionSetTypeLayout extends CustomComponent { } private Long getCurrentDistributionSetTypeId() { - return binder.getBean().getDistributionSetTypeId(); + return binder.getBean().getDsTypeInfo().getId(); } /** @@ -113,7 +114,7 @@ public class DefaultDistributionSetTypeLayout extends CustomComponent { * * @param event */ - private void selectDistributionSetTypeValue(final HasValue.ValueChangeEvent event) { + private void selectDistributionSetTypeValue(final HasValue.ValueChangeEvent event) { changeIcon.setVisible(!event.getValue().getId().equals(currentDefaultDistSetTypeId)); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java index 1890c1031..885a9f27a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/TenantConfigurationDashboardView.java @@ -28,6 +28,7 @@ import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; +import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.TenantConfigurationValue; import org.eclipse.hawkbit.security.SecurityTokenGenerator; import org.eclipse.hawkbit.tenancy.configuration.DurationHelper; @@ -35,6 +36,7 @@ import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties.T import org.eclipse.hawkbit.ui.AbstractHawkbitUI; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.UiProperties; +import org.eclipse.hawkbit.ui.common.data.mappers.TypeToTypeInfoMapper; import org.eclipse.hawkbit.ui.common.data.proxies.ProxySystemConfigWindow; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleNoBorder; @@ -169,7 +171,8 @@ public class TenantConfigurationDashboardView extends CustomComponent implements private ProxySystemConfigWindow populateAndGetSystemConfig() { final ProxySystemConfigWindow configBean = new ProxySystemConfigWindow(); - configBean.setDistributionSetTypeId(systemManagement.getTenantMetadata().getDefaultDsType().getId()); + configBean.setDsTypeInfo(new TypeToTypeInfoMapper() + .map(systemManagement.getTenantMetadata().getDefaultDsType())); configBean.setRolloutApproval(readConfigOption(TenantConfigurationKey.ROLLOUT_APPROVAL_ENABLED)); configBean.setActionAutoclose(readConfigOption(TenantConfigurationKey.REPOSITORY_ACTIONS_AUTOCLOSE_ENABLED)); configBean.setMultiAssignments(readConfigOption(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED)); @@ -263,7 +266,7 @@ public class TenantConfigurationDashboardView extends CustomComponent implements private void saveSystemConfigBean() { final ProxySystemConfigWindow configWindowBean = binder.getBean(); - systemManagement.updateTenantMetadata(configWindowBean.getDistributionSetTypeId()); + systemManagement.updateTenantMetadata(configWindowBean.getDsTypeInfo().getId()); writeConfigOption(TenantConfigurationKey.ROLLOUT_APPROVAL_ENABLED, configWindowBean.isRolloutApproval()); writeConfigOption(TenantConfigurationKey.ACTION_CLEANUP_ENABLED, configWindowBean.isActionAutocleanup()); writeConfigOption(TenantConfigurationKey.AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED, diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/repository/ActionAutoCleanupConfigurationItem.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/repository/ActionAutoCleanupConfigurationItem.java index 0679ba86a..3b7b60e1e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/repository/ActionAutoCleanupConfigurationItem.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/repository/ActionAutoCleanupConfigurationItem.java @@ -25,6 +25,7 @@ import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; import com.vaadin.data.Binder; import com.vaadin.data.ValidationResult; +import com.vaadin.data.provider.DataProvider; import com.vaadin.data.validator.IntegerRangeValidator; import com.vaadin.ui.ComboBox; import com.vaadin.ui.HorizontalLayout; @@ -77,14 +78,12 @@ public class ActionAutoCleanupConfigurationItem extends VerticalLayout { container.setSpacing(false); container.setMargin(false); final HorizontalLayout row1 = newHorizontalLayout(); - actionStatusCombobox = new ComboBox<>(); - actionStatusCombobox.setDescription("label.combobox.action.status.options"); - actionStatusCombobox.setId(UIComponentIdProvider.SYSTEM_CONFIGURATION_ACTION_CLEANUP_ACTION_TYPES); + actionStatusCombobox = SPUIComponentProvider.getComboBox( + UIComponentIdProvider.SYSTEM_CONFIGURATION_ACTION_CLEANUP_ACTION_TYPES, null, null, null, false, + ActionStatusOption::getName, DataProvider.ofCollection(ACTION_STATUS_OPTIONS)); + actionStatusCombobox.removeStyleName(ValoTheme.COMBOBOX_SMALL); actionStatusCombobox.addStyleName(ValoTheme.COMBOBOX_TINY); actionStatusCombobox.setWidth(200.0F, Unit.PIXELS); - actionStatusCombobox.setEmptySelectionAllowed(false); - actionStatusCombobox.setItems(ACTION_STATUS_OPTIONS); - actionStatusCombobox.setItemCaptionGenerator(ActionStatusOption::getName); binder.bind(actionStatusCombobox, ProxySystemConfigWindow::getActionCleanupStatus, ProxySystemConfigWindow::setActionCleanupStatus); actionExpiryInput = new TextFieldBuilder(TenantConfiguration.VALUE_MAX_SIZE).buildTextComponent(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowDependencies.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowDependencies.java index 1d2a6069b..890144ac0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowDependencies.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowDependencies.java @@ -12,7 +12,7 @@ import org.eclipse.hawkbit.repository.DistributionSetTypeManagement; import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.data.providers.DistributionSetTypeDataProvider; -import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTypeInfo; import org.eclipse.hawkbit.ui.utils.VaadinMessageSource; /** @@ -24,7 +24,7 @@ public class SystemConfigWindowDependencies { private final VaadinMessageSource i18n; private final SpPermissionChecker permissionChecker; private final DistributionSetTypeManagement distributionSetTypeManagement; - private final DistributionSetTypeDataProvider distributionSetTypeDataProvider; + private final DistributionSetTypeDataProvider distributionSetTypeDataProvider; /** * Constructor for VaadinMessageSource @@ -43,7 +43,7 @@ public class SystemConfigWindowDependencies { public SystemConfigWindowDependencies(final SystemManagement systemManagement, final VaadinMessageSource i18n, final SpPermissionChecker permissionChecker, final DistributionSetTypeManagement distributionSetTypeManagement, - final DistributionSetTypeDataProvider distributionSetTypeDataProvider) { + final DistributionSetTypeDataProvider distributionSetTypeDataProvider) { this.systemManagement = systemManagement; this.i18n = i18n; this.permissionChecker = permissionChecker; @@ -82,7 +82,7 @@ public class SystemConfigWindowDependencies { /** * @return Distribution set type data provider */ - public DistributionSetTypeDataProvider getDistributionSetTypeDataProvider() { + public DistributionSetTypeDataProvider getDistributionSetTypeDataProvider() { return distributionSetTypeDataProvider; } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowLayoutComponentBuilder.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowLayoutComponentBuilder.java index 5601bb68f..0e2af6b0a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowLayoutComponentBuilder.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/window/SystemConfigWindowLayoutComponentBuilder.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.ui.tenantconfiguration.window; import org.eclipse.hawkbit.ui.common.data.proxies.ProxySystemConfigWindow; -import org.eclipse.hawkbit.ui.common.data.proxies.ProxyType; +import org.eclipse.hawkbit.ui.common.data.proxies.ProxyTypeInfo; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; @@ -42,32 +42,18 @@ public class SystemConfigWindowLayoutComponentBuilder { * * @return Distribution set type combo box */ - public ComboBox createDistributionSetTypeCombo(final Binder binder) { - final ComboBox distributionSetType = SPUIComponentProvider.getComboBox( + public ComboBox createDistributionSetTypeCombo(final Binder binder) { + final ComboBox dsTypeCombo = SPUIComponentProvider.getComboBox( UIComponentIdProvider.SYSTEM_CONFIGURATION_DEFAULTDIS_COMBOBOX, null, - dependencies.getI18n().getMessage("caption.type"), null, false, ProxyType::getKeyAndName, + dependencies.getI18n().getMessage("caption.type"), null, false, ProxyTypeInfo::getKeyAndName, dependencies.getDistributionSetTypeDataProvider()); - distributionSetType.removeStyleName(ValoTheme.COMBOBOX_SMALL); - distributionSetType.addStyleName(ValoTheme.COMBOBOX_TINY); - distributionSetType.setWidth(330.0F, Unit.PIXELS); + dsTypeCombo.removeStyleName(ValoTheme.COMBOBOX_SMALL); + dsTypeCombo.addStyleName(ValoTheme.COMBOBOX_TINY); + dsTypeCombo.setWidth(330.0F, Unit.PIXELS); - binder.forField(distributionSetType).withConverter(dstType -> { - if (dstType == null) { - return null; - } + binder.forField(dsTypeCombo).bind(ProxySystemConfigWindow::getDsTypeInfo, + ProxySystemConfigWindow::setDsTypeInfo); - return dstType.getId(); - }, dstTypeId -> { - if (dstTypeId == null) { - return null; - } - - final ProxyType dstType = new ProxyType(); - dstType.setId(dstTypeId); - - return dstType; - }).bind(ProxySystemConfigWindow::getDistributionSetTypeId, ProxySystemConfigWindow::setDistributionSetTypeId); - - return distributionSetType; + return dsTypeCombo; } }