From a951137d4f2dca4a073dcf01bd81d823111af7d4 Mon Sep 17 00:00:00 2001 From: kaizimmerm Date: Wed, 23 Nov 2016 22:34:37 +0100 Subject: [PATCH] Remove unnecessary DB calls from UI Signed-off-by: kaizimmerm --- .../hawkbit/repository/TargetManagement.java | 6 ++++-- .../repository/model/DistributionSet.java | 18 ------------------ .../jpa/JpaDistributionSetManagement.java | 2 +- .../repository/jpa/TargetTagRepository.java | 4 ++-- .../jpa/model/JpaDistributionSet.java | 19 ------------------- .../jpa/model/JpaSoftwareModule.java | 8 -------- .../DistributionSetSpecification.java | 9 ++++----- .../SoftwareModuleAddUpdateWindow.java | 14 +++++++------- .../dstable/DistributionSetDetails.java | 9 ++++++--- .../dstable/DsMetadataPopupLayout.java | 3 ++- .../DistributionAddUpdateWindowLayout.java | 1 - .../dstable/DistributionDetails.java | 3 +-- .../management/dstable/DistributionTable.java | 2 +- 13 files changed, 28 insertions(+), 70 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java index dcadeb689..84092a7d4 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java @@ -63,7 +63,8 @@ public interface TargetManagement { * * @return number of found {@link Target}s. */ - @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) + @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET + SpringEvalExpressions.HAS_AUTH_OR + + SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) Long countTargetByAssignedDistributionSet(@NotNull Long distId); /** @@ -104,7 +105,8 @@ public interface TargetManagement { * to search for * @return number of found {@link Target}s. */ - @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) + @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET + SpringEvalExpressions.HAS_AUTH_OR + + SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) Long countTargetByInstalledDistributionSet(@NotNull Long distId); /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 3af310a93..f8fc4a7ff 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -11,8 +11,6 @@ package org.eclipse.hawkbit.repository.model; import java.util.List; import java.util.Set; -import org.eclipse.hawkbit.repository.DistributionSetManagement; - /** * A {@link DistributionSet} defines a meta package that combines a set of * {@link SoftwareModule}s which have to be or are provisioned to a @@ -36,12 +34,6 @@ public interface DistributionSet extends NamedVersionedEntity { */ boolean isDeleted(); - /** - * @return immutable {@link List} of {@link DistributionSetMetadata} - * elements. See {@link DistributionSetManagement} to alter. - */ - List getMetadata(); - /** * @return true if {@link DistributionSet} contains a mandatory * migration step, i.e. unfinished {@link Action}s will kept active @@ -49,21 +41,11 @@ public interface DistributionSet extends NamedVersionedEntity { */ boolean isRequiredMigrationStep(); - /** - * @return the assignedTargets - */ - List getAssignedTargets(); - /** * @return the auto assign target filters */ List getAutoAssignFilters(); - /** - * @return the installedTargets - */ - List getInstalledTargets(); - /** * * @return unmodifiableSet of {@link SoftwareModule}. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java index 4a21be5a3..d26a4cb9c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java @@ -231,7 +231,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { } private JpaDistributionSet findDistributionSetAndThrowExceptionIfNotFound(final Long setId) { - final JpaDistributionSet set = (JpaDistributionSet) findDistributionSetByIdWithDetails(setId); + final JpaDistributionSet set = (JpaDistributionSet) findDistributionSetById(setId); if (set == null) { throw new EntityNotFoundException("Distribution set cannot be updated as it does not exixt" + setId); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java index 8000cd8c9..471dd67db 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java @@ -34,7 +34,7 @@ public interface TargetTagRepository */ @Modifying @Transactional(isolation = Isolation.READ_UNCOMMITTED) - Long deleteByName(final String tagName); + Long deleteByName(String tagName); /** * find {@link TargetTag} by its name. @@ -43,7 +43,7 @@ public interface TargetTagRepository * to filter on * @return the {@link TargetTag} if found, otherwise null */ - JpaTargetTag findByNameEquals(final String tagName); + JpaTargetTag findByNameEquals(String tagName); /** * Returns all instances of the type. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java index b57d103a3..33842346f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java @@ -209,7 +209,6 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implemen return deleted; } - @Override public List getMetadata() { if (metadata == null) { return Collections.emptyList(); @@ -241,29 +240,11 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implemen return this; } - @Override - public List getAssignedTargets() { - if (assignedToTargets == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(assignedToTargets); - } - @Override public List getAutoAssignFilters() { return autoAssignFilters; } - @Override - public List getInstalledTargets() { - if (installedAtTargets == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(installedAtTargets); - } - @Override public String toString() { return "DistributionSet [getName()=" + getName() + ", getOptLockRevision()=" + getOptLockRevision() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java index afa252de5..675fe1b0c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java @@ -176,14 +176,6 @@ public class JpaSoftwareModule extends AbstractJpaNamedVersionedEntity implement this.type = type; } - public List getMetadata() { - if (metadata == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(metadata); - } - @Override public String toString() { return "SoftwareModule [deleted=" + deleted + ", name=" + getName() + ", version=" + getVersion() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java index a2c0802a0..b244c906e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java @@ -83,7 +83,6 @@ public final class DistributionSetSpecification { targetRoot.fetch(JpaDistributionSet_.modules, JoinType.LEFT); targetRoot.fetch(JpaDistributionSet_.tags, JoinType.LEFT); targetRoot.fetch(JpaDistributionSet_.type, JoinType.LEFT); - targetRoot.fetch(JpaDistributionSet_.metadata, JoinType.LEFT); query.distinct(true); return predicate; @@ -110,8 +109,8 @@ public final class DistributionSetSpecification { } /** - * {@link Specification} for retrieving {@link DistributionSet}s by - * "like name or like description or like version". + * {@link Specification} for retrieving {@link DistributionSet}s by "like + * name or like description or like version". * * @param subString * to be filtered on @@ -125,8 +124,8 @@ public final class DistributionSetSpecification { } /** - * {@link Specification} for retrieving {@link DistributionSet}s by - * "has at least one of the given tag names". + * {@link Specification} for retrieving {@link DistributionSet}s by "has at + * least one of the given tag names". * * @param tagNames * to be filtered on diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 8c9898639..6d615ead4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -77,8 +77,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { private TextArea descTextArea; - private CommonDialogWindow window; - private Boolean editSwModule = Boolean.FALSE; private Long baseSwModuleId; @@ -133,9 +131,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { public CommonDialogWindow createUpdateSoftwareModuleWindow(final Long baseSwModuleId) { this.baseSwModuleId = baseSwModuleId; resetComponents(); + populateTypeNameCombo(); populateValuesOfSwModule(); - createWindow(); - return window; + return createWindow(); } private void createRequiredComponents() { @@ -157,7 +155,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY); typeComboBox.setNewItemsAllowed(Boolean.FALSE); typeComboBox.setImmediate(Boolean.TRUE); - populateTypeNameCombo(); } private TextField createTextField(final String in18Key, final String id) { @@ -181,7 +178,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { editSwModule = Boolean.FALSE; } - private void createWindow() { + private CommonDialogWindow createWindow() { final Label madatoryStarLabel = new Label("*"); madatoryStarLabel.setStyleName("v-caption v-required-field-indicator"); madatoryStarLabel.setWidth(null); @@ -198,7 +195,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { setCompositionRoot(formLayout); - window = new WindowBuilder(SPUIDefinitions.CREATE_UPDATE_WINDOW) + final CommonDialogWindow window = new WindowBuilder(SPUIDefinitions.CREATE_UPDATE_WINDOW) .caption(i18n.get("upload.caption.add.new.swmodule")).content(this).layout(formLayout).i18n(i18n) .saveDialogCloseListener(new SaveOnDialogCloseListener()).buildCommonDialogWindow(); nameTextField.setEnabled(!editSwModule); @@ -206,6 +203,8 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { typeComboBox.setEnabled(!editSwModule); typeComboBox.focus(); + + return window; } private void addNewBaseSoftware() { @@ -271,6 +270,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { : HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor())); descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY : HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription())); + if (swModle.getType().isDeleted()) { typeComboBox.addItem(swModle.getType().getName()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index 1bd7c1368..fa5008523 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -16,6 +16,7 @@ import java.util.Set; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName; @@ -81,6 +82,9 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet @Autowired private transient DistributionSetManagement distributionSetManagement; + @Autowired + private transient TargetManagement targetManagement; + @Autowired private DsMetadataPopupLayout dsMetadataPopupLayout; @@ -183,9 +187,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private Button assignSoftModuleButton(final String softwareModuleName) { if (getPermissionChecker().hasUpdateDistributionPermission() && manageDistUIState.getLastSelectedDistribution().isPresent() - && distributionSetManagement - .findDistributionSetById(manageDistUIState.getLastSelectedDistribution().get().getId()) - .getAssignedTargets().isEmpty()) { + && targetManagement.countTargetByAssignedDistributionSet( + manageDistUIState.getLastSelectedDistribution().get().getId()) <= 0) { final Button reassignSoftModule = SPUIComponentProvider.getButton(softwareModuleName, "", "", "", true, FontAwesome.TIMES, SPUIButtonStyleSmallNoBorder.class); reassignSoftModule.setEnabled(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java index b7b6a65db..26a1bc8b0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java @@ -73,7 +73,8 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout getMetadataList() { - return Collections.unmodifiableList(getSelectedEntity().getMetadata()); + return Collections.unmodifiableList( + distributionSetManagement.findDistributionSetMetadataByDistributionSetId(getSelectedEntity().getId())); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java index b3b767bc8..b7ddcf773 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionAddUpdateWindowLayout.java @@ -149,7 +149,6 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent { distsetTypeNameComboBox.setImmediate(true); distsetTypeNameComboBox.setNullSelectionAllowed(false); distsetTypeNameComboBox.setId(UIComponentIdProvider.DIST_ADD_DISTSETTYPE); - populateDistSetTypeNameCombo(); descTextArea = new TextAreaBuilder().caption(i18n.get("textfield.description")).style("text-area-style") .prompt(i18n.get("textfield.description")).immediate(true).id(UIComponentIdProvider.DIST_ADD_DESC) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index 19075898b..b838881a9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -202,8 +202,7 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail @Override protected void showMetadata(final ClickEvent event) { - final DistributionSet ds = distributionSetManagement - .findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); + final DistributionSet ds = distributionSetManagement.findDistributionSetById(getSelectedBaseEntityId()); UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null)); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java index fe57dc415..a8d207a4c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java @@ -767,7 +767,7 @@ public class DistributionTable extends AbstractNamedVersionTable