From aa5e4d0601394d470a004db6356d39589a02c677 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Mon, 15 Aug 2016 17:57:52 +0200 Subject: [PATCH] - Fix ds assignment result - Fix drag and drop to assignment Signed-off-by: SirWayne --- .../DistributionSetAssignmentResult.java | 5 ++++ .../jpa/DistributionSetManagementTest.java | 23 +++++++++++++++++++ .../management/targettable/TargetTable.java | 6 +++++ .../targettag/TargetTagFilterButtons.java | 9 +++++++- .../src/main/resources/messages.properties | 1 + .../src/main/resources/messages_de.properties | 1 + .../src/main/resources/messages_en.properties | 1 + 7 files changed, 45 insertions(+), 1 deletion(-) diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java index f21763883..704bb38e9 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java @@ -13,6 +13,7 @@ import java.util.List; import org.eclipse.hawkbit.repository.model.AssignmentResult; import org.eclipse.hawkbit.repository.model.Target; +import org.springframework.util.CollectionUtils; /** * A bean which holds a complex result of an service operation to combine the @@ -61,6 +62,10 @@ public class DistributionSetAssignmentResult extends AssignmentResult { @Override public List getAssignedEntity() { + if (CollectionUtils.isEmpty(assignedTargets)) { + return Collections.emptyList(); + } + return targetManagement.findTargetByControllerID(assignedTargets); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java index b7da2ff06..14f1838b0 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetManagementTest.java @@ -16,6 +16,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import org.eclipse.hawkbit.repository.DistributionSetAssignmentResult; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.exception.DistributionSetTypeUndefinedException; import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; @@ -818,6 +819,28 @@ public class DistributionSetManagementTest extends AbstractJpaIntegrationTest { .isEqualTo(2); } + @Test + @Description("Test different assignment results, after assign a ds") + public void testAlreadyAssignedTargetsToDs() { + DistributionSet dsToTargetAssigned = testdataFactory.createDistributionSet("ds-3"); + + // create assigned DS + dsToTargetAssigned = distributionSetManagement.findDistributionSetByNameAndVersion(dsToTargetAssigned.getName(), + dsToTargetAssigned.getVersion()); + final Target target = new JpaTarget("4712"); + final Target savedTarget = targetManagement.createTarget(target); + final List toAssign = new ArrayList<>(); + toAssign.add(savedTarget); + DistributionSetAssignmentResult assignmentResult = deploymentManagement + .assignDistributionSet(dsToTargetAssigned, toAssign); + assertThat(assignmentResult.getAssignedEntity()).hasSize(1); + + assignmentResult = deploymentManagement.assignDistributionSet(dsToTargetAssigned, toAssign); + assertThat(assignmentResult.getAssignedEntity()).hasSize(0); + + assertThat(distributionSetRepository.findAll()).hasSize(1); + } + private Rollout createRolloutByVariables(final String rolloutName, final String rolloutDescription, final int groupSize, final String filterQuery, final DistributionSet distributionSet, final String successCondition, final String errorCondition) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 4e43ea39b..87ce33e39 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -558,6 +558,12 @@ public class TargetTable extends AbstractTable { } final String targTagName = HawkbitCommonUtil.removePrefix(event.getTransferable().getSourceComponent().getId(), SPUIDefinitions.TARGET_TAG_ID_PREFIXS); + if (targetList.isEmpty()) { + final String actionDidNotWork = i18n.get("message.action.did.not.work", new Object[] {}); + notification.displayValidationError(actionDidNotWork); + return; + } + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java index e9d3f6e1e..7ecea2f9c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java @@ -158,7 +158,7 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { final TableTransferable tbl = (TableTransferable) event.getTransferable(); final Table source = tbl.getSourceComponent(); if (source.getId().equals(SPUIComponentIdProvider.TARGET_TABLE_ID)) { - processTargetDrop(event); + UI.getCurrent().access(() -> processTargetDrop(event)); } } } @@ -216,11 +216,18 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { private void processTargetDrop(final DragAndDropEvent event) { final com.vaadin.event.dd.TargetDetails targetDetails = event.getTargetDetails(); final TableTransferable transferable = (TableTransferable) event.getTransferable(); + @SuppressWarnings("unchecked") final AbstractTable targetTable = (AbstractTable) transferable .getSourceComponent(); final Set targetSelected = targetTable.getDeletedEntityByTransferable(transferable); + if (targetSelected.isEmpty()) { + final String actionDidNotWork = i18n.get("message.action.did.not.work", new Object[] {}); + notification.displayValidationError(actionDidNotWork); + return; + } + final Set targetList = targetSelected.stream().map(t -> t.getControllerId()) .collect(Collectors.toSet()); diff --git a/hawkbit-ui/src/main/resources/messages.properties b/hawkbit-ui/src/main/resources/messages.properties index bb399ddf1..6a68eeff8 100644 --- a/hawkbit-ui/src/main/resources/messages.properties +++ b/hawkbit-ui/src/main/resources/messages.properties @@ -287,6 +287,7 @@ message.forcequit.action.failed = Force Quitting the action is not possible ! message.forcequit.action.confirm = Attention!\nForce quit should only be used when the assignment action is not working properly.\nForce quitting an action has no effect on the connected target. It is just resetting \nthe data stored on the SP update server. \nAre you absolutely sure that you want to force quit this action? message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed message.action.not.allowed = Action not allowed +message.action.did.not.work = Action did not work. Please try again. message.onlyone.distribution.assigned = Only one distribution set can be assigned message.onlyone.distribution.dropallowed = Only one distribution set can be dropped message.error.missing.typename = Missing Type Name diff --git a/hawkbit-ui/src/main/resources/messages_de.properties b/hawkbit-ui/src/main/resources/messages_de.properties index fa62091fd..e46be6b6e 100644 --- a/hawkbit-ui/src/main/resources/messages_de.properties +++ b/hawkbit-ui/src/main/resources/messages_de.properties @@ -284,6 +284,7 @@ message.force.action.confirm = Are you sure that you want to force this action? message.force.action.success = Action forced successfully ! message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed message.action.not.allowed = Action not allowed +message.action.did.not.work = Action did not work. Please try again. message.onlyone.distribution.assigned = Only one distribution set can be assigned message.onlyone.distribution.dropallowed = Only one distribution set can be dropped message.error.missing.typename = Missing Type Name diff --git a/hawkbit-ui/src/main/resources/messages_en.properties b/hawkbit-ui/src/main/resources/messages_en.properties index 65e63c228..4328b83f8 100644 --- a/hawkbit-ui/src/main/resources/messages_en.properties +++ b/hawkbit-ui/src/main/resources/messages_en.properties @@ -282,6 +282,7 @@ message.force.action.confirm = Are you sure that you want to force this action? message.force.action.success = Action forced successfully ! message.distribution.no.update = distribution {0} set is already assigned to targets and cannot be changed message.action.not.allowed = Action not allowed +message.action.did.not.work = Action did not work. Please try again. message.onlyone.distribution.assigned = Only one distribution set can be assigned message.onlyone.distribution.dropallowed = Only one distribution set can be dropped message.error.missing.typename = Missing Type Name