From 8a26ded4c418c5ed4b82ebcb8bea64dd97ad6c8f Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 27 Mar 2016 10:39:29 +0200 Subject: [PATCH] Extended tests for tag toggle and fixed a typo on the assigment result classes. Signed-off-by: Kai Zimmermann --- ...istributionSetTagAssigmentResultEvent.java | 8 +- .../event/TargetTagAssigmentResultEvent.java | 8 +- .../repository/DistributionSetManagement.java | 41 +++--- .../repository/SoftwareManagement.java | 14 +- .../repository/SoftwareModuleRepository.java | 10 +- ...> DistributionSetTagAssignmentResult.java} | 18 +-- ...lt.java => TargetTagAssignmentResult.java} | 18 +-- .../org/eclipse/hawkbit/TestDataUtil.java | 2 +- .../repository/ControllerManagementTest.java | 19 +-- ...ava => DistributionSetManagementTest.java} | 11 +- .../hawkbit/repository/TagManagementTest.java | 128 +++++++++++++++--- .../resource/DistributionSetTagResource.java | 4 +- .../rest/resource/TargetTagResource.java | 4 +- .../resource/SoftwareModuleResourceTest.java | 23 ++-- .../SoftwareModuleAddUpdateWindow.java | 30 ++-- .../tagdetails/DistributionTagToken.java | 16 +-- .../ui/common/tagdetails/TargetTagToken.java | 16 +-- .../management/dstable/DistributionTable.java | 6 +- .../event/DistributionTagDropEvent.java | 4 +- .../management/targettable/TargetTable.java | 4 +- .../targettag/TargetTagFilterButtons.java | 4 +- .../hawkbit/ui/utils/HawkbitCommonUtil.java | 27 ++-- 22 files changed, 232 insertions(+), 183 deletions(-) rename hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/{DistributionSetTagAssigmentResult.java => DistributionSetTagAssignmentResult.java} (80%) rename hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/{TargetTagAssigmentResult.java => TargetTagAssignmentResult.java} (82%) rename hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/{SoftwareManagementForDSTest.java => DistributionSetManagementTest.java} (99%) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java index 9a8a485b4..e10b9a51f 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java @@ -8,14 +8,14 @@ */ package org.eclipse.hawkbit.eventbus.event; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; /** * A event for assignment target tag. */ public class DistributionSetTagAssigmentResultEvent { - private final DistributionSetTagAssigmentResult assigmentResult; + private final DistributionSetTagAssignmentResult assigmentResult; /** * Constructor. @@ -23,11 +23,11 @@ public class DistributionSetTagAssigmentResultEvent { * @param assigmentResult * the assignment result- */ - public DistributionSetTagAssigmentResultEvent(final DistributionSetTagAssigmentResult assigmentResult) { + public DistributionSetTagAssigmentResultEvent(final DistributionSetTagAssignmentResult assigmentResult) { this.assigmentResult = assigmentResult; } - public DistributionSetTagAssigmentResult getAssigmentResult() { + public DistributionSetTagAssignmentResult getAssigmentResult() { return assigmentResult; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java index 405595de0..6bdc3aebd 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java @@ -8,14 +8,14 @@ */ package org.eclipse.hawkbit.eventbus.event; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; /** * A event for assignment target tag. */ public class TargetTagAssigmentResultEvent { - private final TargetTagAssigmentResult assigmentResult; + private final TargetTagAssignmentResult assigmentResult; /** * Constructor. @@ -23,11 +23,11 @@ public class TargetTagAssigmentResultEvent { * @param assigmentResult * the assignment result- */ - public TargetTagAssigmentResultEvent(final TargetTagAssigmentResult assigmentResult) { + public TargetTagAssigmentResultEvent(final TargetTagAssignmentResult assigmentResult) { this.assigmentResult = assigmentResult; } - public TargetTagAssigmentResult getAssigmentResult() { + public TargetTagAssignmentResult getAssigmentResult() { return assigmentResult; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java index 88e222e64..890333697 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java @@ -38,7 +38,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata_; import org.eclipse.hawkbit.repository.model.DistributionSetTag; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.DistributionSetTypeElement; import org.eclipse.hawkbit.repository.model.DistributionSet_; @@ -68,9 +68,6 @@ import com.google.common.eventbus.EventBus; /** * Business facade for managing the {@link DistributionSet}s. * - * - * - * */ @Transactional(readOnly = true) @Validated @@ -140,15 +137,15 @@ public class DistributionSetManagement { * @param sets * to toggle for * @param tag - * to toogle - * @return {@link DistributionSetTagAssigmentResult} with all metadata of + * to toggle + * @return {@link DistributionSetTagAssignmentResult} with all meta data of * the assignment outcome. */ @Modifying @Transactional @NotNull @PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY) - public DistributionSetTagAssigmentResult toggleTagAssignment(@NotEmpty final List sets, + public DistributionSetTagAssignmentResult toggleTagAssignment(@NotEmpty final List sets, @NotNull final DistributionSetTag tag) { return toggleTagAssignment(sets.stream().map(ds -> ds.getId()).collect(Collectors.toList()), tag.getName()); } @@ -163,42 +160,42 @@ public class DistributionSetManagement { * to toggle for * @param tagName * to toggle - * @return {@link DistributionSetTagAssigmentResult} with all metadata of + * @return {@link DistributionSetTagAssignmentResult} with all meta data of * the assignment outcome. */ @Modifying @Transactional @NotNull @PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY) - public DistributionSetTagAssigmentResult toggleTagAssignment(@NotEmpty final Collection dsIds, + public DistributionSetTagAssignmentResult toggleTagAssignment(@NotEmpty final Collection dsIds, @NotNull final String tagName) { final Iterable sets = findDistributionSetListWithDetails(dsIds); final DistributionSetTag myTag = tagManagement.findDistributionSetTag(tagName); - DistributionSetTagAssigmentResult result; - final List allDSs = new ArrayList<>(); + DistributionSetTagAssignmentResult result; + final List toBeChangedDSs = new ArrayList<>(); for (final DistributionSet set : sets) { if (set.getTags().add(myTag)) { - allDSs.add(set); + toBeChangedDSs.add(set); } } - // unassigment case - if (allDSs.isEmpty()) { + // un-assignment case + if (toBeChangedDSs.isEmpty()) { for (final DistributionSet set : sets) { if (set.getTags().remove(myTag)) { - allDSs.add(set); + toBeChangedDSs.add(set); } } - result = new DistributionSetTagAssigmentResult(dsIds.size() - allDSs.size(), 0, allDSs.size(), - Collections.emptyList(), distributionSetRepository.save(allDSs), myTag); + result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), 0, toBeChangedDSs.size(), + Collections.emptyList(), distributionSetRepository.save(toBeChangedDSs), myTag); } else { - result = new DistributionSetTagAssigmentResult(dsIds.size() - allDSs.size(), allDSs.size(), 0, - distributionSetRepository.save(allDSs), Collections.emptyList(), myTag); + result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), toBeChangedDSs.size(), 0, + distributionSetRepository.save(toBeChangedDSs), Collections.emptyList(), myTag); } - final DistributionSetTagAssigmentResult resultAssignment = result; + final DistributionSetTagAssignmentResult resultAssignment = result; afterCommit.afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment))); // no reason to persist the tag @@ -436,7 +433,7 @@ public class DistributionSetManagement { * @param spec * of the search * @param pageable - * parametsr for paging + * parameter for paging * * @return the found {@link SoftwareModuleType}s */ @@ -1059,7 +1056,7 @@ public class DistributionSetManagement { afterCommit.afterCommit(() -> { - final DistributionSetTagAssigmentResult result = new DistributionSetTagAssigmentResult(0, save.size(), 0, + final DistributionSetTagAssignmentResult result = new DistributionSetTagAssignmentResult(0, save.size(), 0, save, Collections.emptyList(), tag); eventBus.post(new DistributionSetTagAssigmentResultEvent(result)); }); diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java index b51019338..ec1954b35 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java @@ -258,10 +258,6 @@ public class SoftwareManagement { return artifactManagement.findSoftwareModuleById(id); } - // TODO: discuss this method, does not seem to make sense to search by name - // and version without type. It also makes no sense to return collection - // here. It should be a single result based on ytpe,name,version (like the - // constraint). /** * retrieves {@link SoftwareModule}s by their name AND version. * @@ -269,13 +265,15 @@ public class SoftwareManagement { * of the {@link SoftwareModule} * @param version * of the {@link SoftwareModule} - * @return the found {@link SoftwareModule}s + * @param type + * of the {@link SoftwareModule} + * @return the found {@link SoftwareModule} or null */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) - public List findSoftwareModuleByNameAndVersion(@NotEmpty final String name, - @NotEmpty final String version) { + public SoftwareModule findSoftwareModuleByNameAndVersion(@NotEmpty final String name, + @NotEmpty final String version, @NotNull final SoftwareModuleType type) { - return softwareModuleRepository.findByNameAndVersion(name, version); + return softwareModuleRepository.findOneByNameAndVersionAndType(name, version, type); } /** diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java index 44682da64..d70e8226f 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java @@ -43,15 +43,19 @@ public interface SoftwareModuleRepository Long countByType(SoftwareModuleType type); /** - * Retrieves {@link SoftwareModule}s by filtering on name AND version. + * Retrieves {@link SoftwareModule} by filtering on name AND version AND + * type (which is unique per tenant. * * @param name * to be filtered on * @param version * to be filtered on - * @return the found {@link SoftwareModule}s with the given name AND verion + * @param type + * to be filtered on + * @return the found {@link SoftwareModule} with the given name AND version + * AND type */ - List findByNameAndVersion(String name, String version); + SoftwareModule findOneByNameAndVersionAndType(String name, String version, SoftwareModuleType type); /** * deletes the {@link SoftwareModule}s with the given IDs. diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java similarity index 80% rename from hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java rename to hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java index d7ed57305..eddd10c1b 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java @@ -11,10 +11,10 @@ package org.eclipse.hawkbit.repository.model; import java.util.List; /** - * Result object for {@link DistributionSetTag} assigments. + * Result object for {@link DistributionSetTag} assignments. * */ -public class DistributionSetTagAssigmentResult extends AssignmentResult { +public class DistributionSetTagAssignmentResult extends AssignmentResult { private final int unassigned; private final List assignedDs; @@ -37,7 +37,7 @@ public class DistributionSetTagAssigmentResult extends AssignmentResult { * @param distributionSetTag * the assigned or unassigned tag */ - public DistributionSetTagAssigmentResult(final int alreadyAssigned, final int assigned, final int unassigned, + public DistributionSetTagAssignmentResult(final int alreadyAssigned, final int assigned, final int unassigned, final List assignedDs, final List unassignedDs, final DistributionSetTag distributionSetTag) { super(assigned, alreadyAssigned); @@ -47,30 +47,18 @@ public class DistributionSetTagAssigmentResult extends AssignmentResult { this.distributionSetTag = distributionSetTag; } - /** - * @return the unassigned - */ public int getUnassigned() { return unassigned; } - /** - * @return the distributionSetTag - */ public DistributionSetTag getDistributionSetTag() { return distributionSetTag; } - /** - * @return the assignedDs - */ public List getAssignedDs() { return assignedDs; } - /** - * @return the unassignedDs - */ public List getUnassignedDs() { return unassignedDs; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java similarity index 82% rename from hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java rename to hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java index b12b80d58..789e6adf2 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java @@ -11,13 +11,10 @@ package org.eclipse.hawkbit.repository.model; import java.util.List; /** - * Result object for {@link TargetTag} assigments. - * - * - * + * Result object for {@link TargetTag} assignments. * */ -public class TargetTagAssigmentResult extends AssignmentResult { +public class TargetTagAssignmentResult extends AssignmentResult { private final int unassigned; private final List assignedTargets; @@ -40,7 +37,7 @@ public class TargetTagAssigmentResult extends AssignmentResult { * @param targetTag * the assigned or unassigned tag */ - public TargetTagAssigmentResult(final int alreadyAssigned, final int assigned, final int unassigned, + public TargetTagAssignmentResult(final int alreadyAssigned, final int assigned, final int unassigned, final List assignedTargets, final List unassignedTargets, final TargetTag targetTag) { super(assigned, alreadyAssigned); this.unassigned = unassigned; @@ -49,23 +46,14 @@ public class TargetTagAssigmentResult extends AssignmentResult { this.targetTag = targetTag; } - /** - * @return the unassigned - */ public int getUnassigned() { return unassigned; } - /** - * @return the assignedTargets - */ public List getAssignedTargets() { return assignedTargets; } - /** - * @return the unassignedTargets - */ public List getUnassignedTargets() { return unassignedTargets; } diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java index befcd6a8a..b2fa1f735 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java @@ -143,7 +143,7 @@ public class TestDataUtil { } public static List generateDistributionSetTags(final int number) { - final List result = new ArrayList(); + final List result = new ArrayList<>(); for (int i = 0; i < number; i++) { result.add(new DistributionSetTag("tag" + i, "tagdesc" + i, "" + i)); diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java index a3913da2b..ebe57d2b1 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java @@ -9,7 +9,6 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; -import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -43,7 +42,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { distributionSetManagement); Target savedTarget = targetManagement.createTarget(target); - final List toAssign = new ArrayList(); + final List toAssign = new ArrayList<>(); toAssign.add(savedTarget); assertThat(savedTarget.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.UNKNOWN); @@ -74,8 +73,8 @@ public class ControllerManagementTest extends AbstractIntegrationTest { .isEqualTo(3); } - @Test - @Description("Register a controller which not exist") + @Test(expected = ConstraintViolationException.class) + @Description("Register a controller which does not exist") public void testfindOrRegisterTargetIfItDoesNotexist() { final Target target = controllerManagament.findOrRegisterTargetIfItDoesNotexist("AA", null); assertThat(target).as("target should not be null").isNotNull(); @@ -84,12 +83,8 @@ public class ControllerManagementTest extends AbstractIntegrationTest { assertThat(target).as("Target should be the equals").isEqualTo(sameTarget); assertThat(targetRepository.count()).as("Only 1 target should be registred").isEqualTo(1L); - try { - controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); - fail("target with empty controller id should not be registred"); - } catch (final ConstraintViolationException e) { - // ok - } + // throws exception + controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); } @Test @@ -101,7 +96,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { final DistributionSet ds = TestDataUtil.generateDistributionSet("", softwareManagement, distributionSetManagement); Target savedTarget = targetManagement.createTarget(target); - final List toAssign = new ArrayList(); + final List toAssign = new ArrayList<>(); toAssign.add(savedTarget); savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedTargets().iterator().next(); Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); @@ -124,7 +119,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { final ActionStatus actionStatusMessage3 = new ActionStatus(savedAction, Action.Status.FINISHED, System.currentTimeMillis()); actionStatusMessage3.addMessage("finish"); - savedAction = controllerManagament.addUpdateActionStatus(actionStatusMessage3, savedAction); + controllerManagament.addUpdateActionStatus(actionStatusMessage3, savedAction); targetManagement.findTargetByControllerID("Rabbit").getTargetInfo().getUpdateStatus(); diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java similarity index 99% rename from hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java rename to hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java index 30f4a8cb0..352d28e15 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java @@ -44,15 +44,12 @@ import ru.yandex.qatools.allure.annotations.Features; import ru.yandex.qatools.allure.annotations.Stories; /** - * {@link SoftwareManagement} test focused on {@link DistributionSet} and - * {@link DistributionSetType} related stuff. - * - * + * {@link DistributionSetManagement} tests. * */ @Features("Component Tests - Repository") -@Stories("Software Management") -public class SoftwareManagementForDSTest extends AbstractIntegrationTest { +@Stories("DistributionSet Management") +public class DistributionSetManagementTest extends AbstractIntegrationTest { @Test @Description("Tests the successfull module update of unused distribution set type which is in fact allowed.") @@ -159,8 +156,6 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest { assertThat(distributionSetManagement.findDistributionSetTypeByKey("softdeleted").isDeleted()).isEqualTo(true); } - // TODO: kzimmerm: test N+1 - @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that it is not possible to create a DS that already exists (unique constraint is on name,version for DS).") public void createDuplicateDistributionSetsFailsWithException() { diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java index eb263b242..69ad50f02 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java @@ -10,9 +10,11 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.TestDataUtil; @@ -20,9 +22,11 @@ import org.eclipse.hawkbit.repository.DistributionSetFilter.DistributionSetFilte import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.Tag; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.junit.Before; import org.junit.Test; import org.slf4j.LoggerFactory; @@ -158,6 +162,98 @@ public class TagManagementTest extends AbstractIntegrationTest { return new DistributionSetFilterBuilder(); } + @Test + @Description("Verifies the toogle mechanism by means on assigning tag if at least on DS in the list does not have" + + "the tag yet. Unassign if all of them have the tag already.") + public void assignAndUnassignDistributionSetTags() { + final List groupA = TestDataUtil.generateDistributionSets(20, softwareManagement, + distributionSetManagement); + final List groupB = TestDataUtil.generateDistributionSets("unassigned", 20, softwareManagement, + distributionSetManagement); + + final DistributionSetTag tag = tagManagement + .createDistributionSetTag(new DistributionSetTag("tag1", "tagdesc1", "")); + + // toggle A only -> A is now assigned + DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(groupA, tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + groupA.stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + // toggle A+B -> A is still assigned and B is assigned as well + result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(20); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + groupB.stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + // toggle A+B -> both unassigned + result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(0); + assertThat(result.getAssignedDs()).isEmpty(); + assertThat(result.getUnassigned()).isEqualTo(40); + assertThat(result.getUnassignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + concat(groupB, groupA).stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + } + + @Test + @Description("Verifies the toogle mechanism by means on assigning tag if at least on target in the list does not have" + + "the tag yet. Unassign if all of them have the tag already.") + public void assignAndUnassignTargetTags() { + final List groupA = targetManagement.createTargets(TestDataUtil.generateTargets(20, "")); + final List groupB = targetManagement.createTargets(TestDataUtil.generateTargets(20, "groupb")); + + final TargetTag tag = tagManagement.createTargetTag(new TargetTag("tag1", "tagdesc1", "")); + + // toggle A only -> A is now assigned + TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(groupA, tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + groupA.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getTargetTag()).isEqualTo(tag); + + // toggle A+B -> A is still assigned and B is assigned as well + result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(20); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + groupB.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getTargetTag()).isEqualTo(tag); + + // toggle A+B -> both unassigned + result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(0); + assertThat(result.getAssignedTargets()).isEmpty(); + assertThat(result.getUnassigned()).isEqualTo(40); + assertThat(result.getUnassignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + concat(groupB, groupA).stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getTargetTag()).isEqualTo(tag); + + } + + @SafeVarargs + private final List concat(final List... targets) { + final List result = new ArrayList<>(); + Arrays.asList(targets).forEach(result::addAll); + return result; + } + @Test @Description("Ensures that all tags are retrieved through repository.") public void findAllTargetTags() { @@ -266,48 +362,38 @@ public class TagManagementTest extends AbstractIntegrationTest { } } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameException() { tagManagement.createTargetTag(new TargetTag("A")); - try { - tagManagement.createTargetTag(new TargetTag("A")); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + tagManagement.createTargetTag(new TargetTag("A")); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameExceptionAfterUpdate() { tagManagement.createTargetTag(new TargetTag("A")); final TargetTag tag = tagManagement.createTargetTag(new TargetTag("B")); tag.setName("A"); - try { - tagManagement.updateTargetTag(tag); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + + tagManagement.updateTargetTag(tag); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameException() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); - try { - tagManagement.createDistributionSetTag(new DistributionSetTag("A")); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + tagManagement.createDistributionSetTag(new DistributionSetTag("A")); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameExceptionAfterUpdate() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); final DistributionSetTag tag = tagManagement.createDistributionSetTag(new DistributionSetTag("B")); tag.setName("A"); - try { - tagManagement.updateDistributionSetTag(tag); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + + tagManagement.updateDistributionSetTag(tag); } @Test diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index 63b864758..96a45aa6e 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTagRestApi; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; @@ -135,7 +135,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { final DistributionSetTag tag = findDistributionTagById(distributionsetTagId); - final DistributionSetTagAssigmentResult assigmentResult = this.distributionSetManagement + final DistributionSetTagAssignmentResult assigmentResult = this.distributionSetManagement .toggleTagAssignment(findDistributionSetIds(assignedDSRequestBodies), tag.getName()); final DistributionSetTagAssigmentResultRest tagAssigmentResultRest = new DistributionSetTagAssigmentResultRest(); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 0e4bf9ec9..7ef9489ca 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.TargetTagRestApi; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; @@ -130,7 +130,7 @@ public class TargetTagResource implements TargetTagRestApi { LOG.debug("Toggle Target assignment {} for target tag {}", assignedTargetRequestBodies.size(), targetTagId); final TargetTag targetTag = findTargetTagById(targetTagId); - final TargetTagAssigmentResult assigmentResult = this.targetManagement + final TargetTagAssignmentResult assigmentResult = this.targetManagement .toggleTagAssignment(findTargetControllerIds(assignedTargetRequestBodies), targetTag.getName()); final TargetTagAssigmentResultRest tagAssigmentResultRest = new TargetTagAssigmentResultRest(); diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java index 09ae7978f..1d2222c9a 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java @@ -169,7 +169,7 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo artifactManagement .loadLocalArtifactBinary((LocalArtifact) softwareManagement .findSoftwareModuleWithDetails(sm.getId()).getArtifacts().get(0)) - .getFileInputStream())); + .getFileInputStream())); // hashes assertThat(artifactManagement.findLocalArtifactByFilename("origFilename").get(0).getSha1Hash()) @@ -773,12 +773,12 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(jsonPath("[2].createdBy", equalTo("uploadTester"))) .andExpect(jsonPath("[2].createdAt", not(equalTo(0)))).andReturn(); - final SoftwareModule osCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name1", "version1") - .get(0); - final SoftwareModule jvmCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name2", "version1") - .get(0); - final SoftwareModule ahCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name3", "version1") - .get(0); + final SoftwareModule osCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name1", "version1", + osType); + final SoftwareModule jvmCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name2", "version1", + runtimeType); + final SoftwareModule ahCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name3", "version1", + appType); assertThat( JsonPath.compile("[0]_links.self.href").read(mvcResult.getResponse().getContentAsString()).toString()) @@ -930,8 +930,10 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(jsonPath("[1]key", equalTo(knownKey2))) .andExpect(jsonPath("[1]value", equalTo(knownValue2))); - final SoftwareModuleMetadata metaKey1 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey1)); - final SoftwareModuleMetadata metaKey2 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey2)); + final SoftwareModuleMetadata metaKey1 = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey1)); + final SoftwareModuleMetadata metaKey2 = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey2)); assertThat(metaKey1.getValue()).as("Metadata key is wrong").isEqualTo(knownValue1); assertThat(metaKey2.getValue()).as("Metadata key is wrong").isEqualTo(knownValue2); @@ -957,7 +959,8 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("key", equalTo(knownKey))).andExpect(jsonPath("value", equalTo(updateValue))); - final SoftwareModuleMetadata assertDS = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); + final SoftwareModuleMetadata assertDS = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); assertThat(assertDS.getValue()).as("Metadata is wrong").isEqualTo(updateValue); } 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 3cc5c8dc1..7e05e8c63 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 @@ -28,8 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.spring.events.EventBus; -import com.vaadin.event.FieldEvents.TextChangeEvent; -import com.vaadin.event.FieldEvents.TextChangeListener; import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -245,27 +243,21 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { } private void addDescriptionTextChangeListener() { - descTextArea.addTextChangeListener(new TextChangeListener() { - @Override - public void textChange(final TextChangeEvent event) { - if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { - saveSoftware.setEnabled(false); - } else { - saveSoftware.setEnabled(true); - } + descTextArea.addTextChangeListener(event -> { + if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { + saveSoftware.setEnabled(false); + } else { + saveSoftware.setEnabled(true); } }); } private void addVendorTextChangeListener() { - vendorTextField.addTextChangeListener(new TextChangeListener() { - @Override - public void textChange(final TextChangeEvent event) { - if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { - saveSoftware.setEnabled(false); - } else { - saveSoftware.setEnabled(true); - } + vendorTextField.addTextChangeListener(event -> { + if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { + saveSoftware.setEnabled(false); + } else { + saveSoftware.setEnabled(true); } }); } @@ -280,7 +272,7 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { final String description = HawkbitCommonUtil.trimAndNullIfEmpty(descTextArea.getValue()); final String type = typeComboBox.getValue() != null ? typeComboBox.getValue().toString() : null; if (mandatoryCheck(name, version, type)) { - if (HawkbitCommonUtil.isDuplicate(name, version)) { + if (HawkbitCommonUtil.isDuplicate(name, version, type)) { uiNotifcation.displayValidationError( i18n.get("message.duplicate.softwaremodule", new Object[] { name, version })); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java index c8824e455..d6d37d5c0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java @@ -26,7 +26,7 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; @@ -100,7 +100,7 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected void assignTag(final String tagNameSelected) { if (tagNameSelected != null) { - final DistributionSetTagAssigmentResult result = toggleAssignment(tagNameSelected); + final DistributionSetTagAssignmentResult result = toggleAssignment(tagNameSelected); if (result.getAssigned() >= 1 && NOTAGS_SELECTED) { eventBus.publish(this, ManagementUIEvent.ASSIGN_DISTRIBUTION_TAG); } @@ -109,10 +109,10 @@ public class DistributionTagToken extends AbstractTagToken { } } - private DistributionSetTagAssigmentResult toggleAssignment(final String tagNameSelected) { + private DistributionSetTagAssignmentResult toggleAssignment(final String tagNameSelected) { final Set distributionList = new HashSet<>(); distributionList.add(selectedDS.getId()); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, tagNameSelected); uinotification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(tagNameSelected, result, i18n)); return result; @@ -120,7 +120,7 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected void unassignTag(final String tagName) { - final DistributionSetTagAssigmentResult result = toggleAssignment(tagName); + final DistributionSetTagAssignmentResult result = toggleAssignment(tagName); if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_DISTRIBUTION_TAG); } @@ -202,7 +202,7 @@ public class DistributionTagToken extends AbstractTagToken { @EventBusListenerMethod(scope = EventScope.SESSION) void onTargetTagAssigmentResultEvent(final DistributionSetTagAssigmentResultEvent event) { - final DistributionSetTagAssigmentResult assignmentResult = event.getAssigmentResult(); + final DistributionSetTagAssignmentResult assignmentResult = event.getAssigmentResult(); final DistributionSetTag tag = assignmentResult.getDistributionSetTag(); if (isAssign(assignmentResult)) { addNewToken(tag.getId()); @@ -212,7 +212,7 @@ public class DistributionTagToken extends AbstractTagToken { } - protected boolean isAssign(final DistributionSetTagAssigmentResult assignmentResult) { + protected boolean isAssign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { final List assignedDsNames = assignmentResult.getAssignedDs().stream().map(t -> t.getId()) .collect(Collectors.toList()); @@ -223,7 +223,7 @@ public class DistributionTagToken extends AbstractTagToken { return false; } - protected boolean isUnassign(final DistributionSetTagAssigmentResult assignmentResult) { + protected boolean isUnassign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { final List assignedDsNames = assignmentResult.getUnassignedDs().stream().map(t -> t.getId()) .collect(Collectors.toList()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java index 8982be759..b21b8f075 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentEvent; @@ -68,7 +68,7 @@ public class TargetTagToken extends AbstractTargetTagToken { @Override protected void assignTag(final String tagNameSelected) { if (tagNameSelected != null) { - final TargetTagAssigmentResult result = toggleAssignment(tagNameSelected); + final TargetTagAssignmentResult result = toggleAssignment(tagNameSelected); if (result.getAssigned() >= 1 && NOTAGS_SELECTED) { eventBus.publish(this, ManagementUIEvent.ASSIGN_TARGET_TAG); } @@ -77,17 +77,17 @@ public class TargetTagToken extends AbstractTargetTagToken { } } - private TargetTagAssigmentResult toggleAssignment(final String tagNameSelected) { + private TargetTagAssignmentResult toggleAssignment(final String tagNameSelected) { final Set targetList = new HashSet<>(); targetList.add(selectedTarget.getControllerId()); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, tagNameSelected); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, tagNameSelected); uinotification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(tagNameSelected, result, i18n)); return result; } @Override protected void unassignTag(final String tagName) { - final TargetTagAssigmentResult result = toggleAssignment(tagName); + final TargetTagAssignmentResult result = toggleAssignment(tagName); if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_TARGET_TAG); } @@ -139,7 +139,7 @@ public class TargetTagToken extends AbstractTargetTagToken { @EventBusListenerMethod(scope = EventScope.SESSION) void onTargetTagAssigmentResultEvent(final TargetTagAssigmentResultEvent event) { - final TargetTagAssigmentResult assignmentResult = event.getAssigmentResult(); + final TargetTagAssignmentResult assignmentResult = event.getAssigmentResult(); final TargetTag targetTag = assignmentResult.getTargetTag(); if (isAssign(assignmentResult)) { addNewToken(targetTag.getId()); @@ -149,7 +149,7 @@ public class TargetTagToken extends AbstractTargetTagToken { } - protected boolean isAssign(final TargetTagAssigmentResult assignmentResult) { + protected boolean isAssign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { final List assignedTargetNames = assignmentResult.getAssignedTargets().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); @@ -160,7 +160,7 @@ public class TargetTagToken extends AbstractTargetTagToken { return false; } - protected boolean isUnassign(final TargetTagAssigmentResult assignmentResult) { + protected boolean isUnassign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { final List unassignedTargetNamesList = assignmentResult.getUnassignedTargets().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); 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 4f4aa8b2f..0cc857c30 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 @@ -25,7 +25,7 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.ui.common.table.AbstractTable; @@ -360,7 +360,7 @@ public class DistributionTable extends AbstractTable { final String distTagName = HawkbitCommonUtil.removePrefix(event.getTransferable().getSourceComponent().getId(), SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distList, distTagName); notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); @@ -564,7 +564,7 @@ public class DistributionTable extends AbstractTable { .getItemProperty(SPUILabelDefinitions.VAR_DIST_ID_NAME).getValue(); final Button pinBtn = getPinBtn(itemId, dist.getName(), dist.getVersion()); saveDistributionPinnedBtn(pinBtn); - pinBtn.addClickListener(event -> addPinClickListener(event)); + pinBtn.addClickListener(this::addPinClickListener); rePinDistribution(pinBtn, dist.getId()); return pinBtn; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java index 21013a55e..f8d53bdef 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.ui.management.state.DistributionTableFilters; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.I18N; @@ -147,7 +147,7 @@ public class DistributionTagDropEvent implements DropHandler { SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS); final List tagsClickedList = distFilterParameters.getDistSetTags(); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, distTagName); notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); 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 88d82bd9d..3a1051eac 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 @@ -32,7 +32,7 @@ import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.eclipse.hawkbit.ui.common.table.AbstractTable; import org.eclipse.hawkbit.ui.filter.FilterExpression; @@ -656,7 +656,7 @@ public class TargetTable extends AbstractTable implements Handler { } final String targTagName = HawkbitCommonUtil.removePrefix(event.getTransferable().getSourceComponent().getId(), SPUIDefinitions.TARGET_TAG_ID_PREFIXS); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); 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 9d93962da..30f036432 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 @@ -23,7 +23,7 @@ import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetTag; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons; import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; @@ -248,7 +248,7 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); if (result.getAssigned() >= 1 && managementUIState.getTargetTableFilters().isNoTagSelected()) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java index e697e220e..67e71ba4f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java @@ -25,13 +25,13 @@ import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.im.authentication.UserPrincipal; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo.PollStatus; -import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status; @@ -802,13 +802,16 @@ public final class HawkbitCommonUtil { * as string * @param version * as string + * @param type + * key as string * @return boolean as flag */ - public static boolean isDuplicate(final String name, final String version) { + public static boolean isDuplicate(final String name, final String version, final String type) { final SoftwareManagement swMgmtService = SpringContextHelper.getBean(SoftwareManagement.class); - final List swModulesList = swMgmtService.findSoftwareModuleByNameAndVersion(name, version); + final SoftwareModule swModule = swMgmtService.findSoftwareModuleByNameAndVersion(name, version, + swMgmtService.findSoftwareModuleTypeByKey(type)); boolean duplicate = false; - if (swModulesList != null && !swModulesList.isEmpty()) { + if (swModule != null) { duplicate = true; } return duplicate; @@ -875,7 +878,7 @@ public final class HawkbitCommonUtil { * I18N * @return message */ - public static String getTargetTagAssigmentMsg(final String targTagName, final TargetTagAssigmentResult result, + public static String getTargetTagAssigmentMsg(final String targTagName, final TargetTagAssignmentResult result, final I18N i18n) { final StringBuilder formMsg = new StringBuilder(); final int assignedCount = result.getAssigned(); @@ -922,7 +925,7 @@ public final class HawkbitCommonUtil { * @return message */ public static String getDistributionTagAssignmentMsg(final String targTagName, - final DistributionSetTagAssigmentResult result, final I18N i18n) { + final DistributionSetTagAssignmentResult result, final I18N i18n) { final StringBuilder formMsg = new StringBuilder(); final int assignedCount = result.getAssigned(); final int alreadyAssignedCount = result.getAlreadyAssigned(); @@ -1359,12 +1362,12 @@ public final class HawkbitCommonUtil { * details of status and count * @return String */ - public static String getFormattedString(Map details) { - StringBuilder val = new StringBuilder(); + public static String getFormattedString(final Map details) { + final StringBuilder val = new StringBuilder(); if (details == null || details.isEmpty()) { return null; } - for (Entry entry : details.entrySet()) { + for (final Entry entry : details.entrySet()) { val.append(entry.getKey()).append(":").append(entry.getValue()).append(","); } return val.substring(0, val.length() - 1); @@ -1382,8 +1385,8 @@ public final class HawkbitCommonUtil { * label id * @return */ - public static String getStatusLabelDetailsInString(String value, String style, String id) { - StringBuilder val = new StringBuilder(); + public static String getStatusLabelDetailsInString(final String value, final String style, final String id) { + final StringBuilder val = new StringBuilder(); if (!Strings.isNullOrEmpty(value)) { val.append("value:").append(value).append(","); }