Merge branch 'master' into Rollout_Management_issues_refactor

This commit is contained in:
venu1278
2016-04-14 14:50:38 +05:30
11 changed files with 142 additions and 166 deletions

View File

@@ -21,6 +21,7 @@ import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent;
import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent;
import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent;
import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent;
import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent;
/** /**
* The default hawkbit event provider. * The default hawkbit event provider.
@@ -34,6 +35,7 @@ public class HawkbitEventProvider implements UIEventProvider {
SINGLE_EVENTS.add(TargetTagCreatedBulkEvent.class); SINGLE_EVENTS.add(TargetTagCreatedBulkEvent.class);
SINGLE_EVENTS.add(DistributionSetTagCreatedBulkEvent.class); SINGLE_EVENTS.add(DistributionSetTagCreatedBulkEvent.class);
SINGLE_EVENTS.add(DistributionSetTagDeletedEvent.class); SINGLE_EVENTS.add(DistributionSetTagDeletedEvent.class);
SINGLE_EVENTS.add(TargetTagDeletedEvent.class);
SINGLE_EVENTS.add(DistributionSetTagUpdateEvent.class); SINGLE_EVENTS.add(DistributionSetTagUpdateEvent.class);
SINGLE_EVENTS.add(RolloutGroupChangeEvent.class); SINGLE_EVENTS.add(RolloutGroupChangeEvent.class);
SINGLE_EVENTS.add(RolloutChangeEvent.class); SINGLE_EVENTS.add(RolloutChangeEvent.class);

View File

@@ -8,16 +8,15 @@
*/ */
package org.eclipse.hawkbit.ui.artifacts.footer; package org.eclipse.hawkbit.ui.artifacts.footer;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent;
import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria; import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria;
import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState;
import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout; import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.management.event.DragEvent;
import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider;
import org.eclipse.hawkbit.ui.utils.SPUIDefinitions;
import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.EventScope;
@@ -155,13 +154,9 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout {
private void addToDeleteList(final Table sourceTable, final TableTransferable transferable) { private void addToDeleteList(final Table sourceTable, final TableTransferable transferable) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Set<Long> swModuleSelected = (Set<Long>) sourceTable.getValue(); final AbstractTable<?, Long> swTable = (AbstractTable<?, Long>) sourceTable;
final Set<Long> swModuleIdNameSet = new HashSet<>(); final Set<Long> swModuleIdNameSet = swTable.getDeletedEntityByTransferable(transferable);
if (!swModuleSelected.contains(transferable.getData(SPUIDefinitions.ITEMID))) {
swModuleIdNameSet.add((Long) transferable.getData(SPUIDefinitions.ITEMID));
} else {
swModuleIdNameSet.addAll(swModuleSelected);
}
swModuleIdNameSet.forEach(id -> { swModuleIdNameSet.forEach(id -> {
final String swModuleName = (String) sourceTable.getContainerDataSource().getItem(id) final String swModuleName = (String) sourceTable.getContainerDataSource().getItem(id)
.getItemProperty(SPUILabelDefinitions.NAME_VERSION).getValue(); .getItemProperty(SPUILabelDefinitions.NAME_VERSION).getValue();

View File

@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.common.table;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -231,6 +232,30 @@ public abstract class AbstractTable<E extends NamedEntity, I> extends Table {
} }
} }
/**
* Return the entity which should be deleted by a transferable
*
* @param transferable
* the table transferable
* @return set of entities id which will deleted
*/
@SuppressWarnings("unchecked")
public Set<I> getDeletedEntityByTransferable(final TableTransferable transferable) {
final Set<I> selectedEntities = (Set<I>) getTableValue(this);
final Set<I> ids = new HashSet<>();
final Object tranferableData = transferable.getData(SPUIDefinitions.ITEMID);
if (tranferableData == null) {
return ids;
}
if (!selectedEntities.contains(tranferableData)) {
ids.add((I) tranferableData);
} else {
ids.addAll(selectedEntities);
}
return ids;
}
protected abstract E findEntityByTableValue(I lastSelectedId); protected abstract E findEntityByTableValue(I lastSelectedId);
protected abstract void publishEntityAfterValueChange(E selectedLastEntity); protected abstract void publishEntityAfterValueChange(E selectedLastEntity);

View File

@@ -29,6 +29,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType;
import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable; import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
@@ -210,15 +211,9 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
private void onDrop(final DragAndDropEvent event) { private void onDrop(final DragAndDropEvent event) {
final TableTransferable transferable = (TableTransferable) event.getTransferable(); final TableTransferable transferable = (TableTransferable) event.getTransferable();
final Table source = transferable.getSourceComponent(); @SuppressWarnings("unchecked")
final Set<Long> softwareModuleSelected = (Set<Long>) source.getValue(); final AbstractTable<?, Long> source = (AbstractTable<SoftwareModule, Long>) transferable.getSourceComponent();
final Set<Long> softwareModulesIdList = new HashSet<>(); final Set<Long> softwareModulesIdList = source.getDeletedEntityByTransferable(transferable);
if (!softwareModuleSelected.contains(transferable.getData("itemId"))) {
softwareModulesIdList.add((Long) transferable.getData("itemId"));
} else {
softwareModulesIdList.addAll(softwareModuleSelected);
}
final AbstractSelectTargetDetails dropData = (AbstractSelectTargetDetails) event.getTargetDetails(); final AbstractSelectTargetDetails dropData = (AbstractSelectTargetDetails) event.getTargetDetails();
@@ -229,11 +224,6 @@ public class DistributionSetTable extends AbstractNamedVersionTable<Distribution
} }
} }
/**
* @param source
* @param softwareModulesIdList
* @param item
*/
private void handleDropEvent(final Table source, final Set<Long> softwareModulesIdList, final Item item) { private void handleDropEvent(final Table source, final Set<Long> softwareModulesIdList, final Item item) {
final Long distId = (Long) item.getItemProperty("id").getValue(); final Long distId = (Long) item.getItemProperty("id").getValue();
final String distName = (String) item.getItemProperty("name").getValue(); final String distName = (String) item.getItemProperty("name").getValue();

View File

@@ -20,6 +20,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetIdName;
import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName; import org.eclipse.hawkbit.repository.model.SoftwareModuleIdName;
import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout; import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent;
import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria;
import org.eclipse.hawkbit.ui.distributions.event.DragEvent; import org.eclipse.hawkbit.ui.distributions.event.DragEvent;
@@ -188,13 +189,8 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
private void addInDeleteDistributionList(final Table sourceTable, final TableTransferable transferable) { private void addInDeleteDistributionList(final Table sourceTable, final TableTransferable transferable) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Set<DistributionSetIdName> distSelected = (Set<DistributionSetIdName>) sourceTable.getValue(); final AbstractTable<?, DistributionSetIdName> table = (AbstractTable<?, DistributionSetIdName>) sourceTable;
final Set<DistributionSetIdName> distributionIdNameSet = new HashSet<>(); final Set<DistributionSetIdName> distributionIdNameSet = table.getDeletedEntityByTransferable(transferable);
if (!distSelected.contains(transferable.getData(SPUIDefinitions.ITEMID))) {
distributionIdNameSet.add((DistributionSetIdName) transferable.getData(SPUIDefinitions.ITEMID));
} else {
distributionIdNameSet.addAll(distSelected);
}
/* /*
* Flags to identify whether all dropped distributions are already in * Flags to identify whether all dropped distributions are already in
* the deleted list (or) some distributions are already in the deleted * the deleted list (or) some distributions are already in the deleted
@@ -224,15 +220,10 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout {
} }
private void addToSWDeleteList(final Table sourceTable, final TableTransferable transferable) { private void addToSWDeleteList(final Table sourceTable, final TableTransferable transferable) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Set<Long> swModuleSelected = (Set<Long>) sourceTable.getValue(); final AbstractTable<?, Long> swTable = (AbstractTable<?, Long>) sourceTable;
final Set<Long> swModuleIdNameSet = new HashSet<>(); final Set<Long> swModuleIdNameSet = swTable.getDeletedEntityByTransferable(transferable);
if (!swModuleSelected.contains(transferable.getData(SPUIDefinitions.ITEMID))) {
swModuleIdNameSet.add((Long) transferable.getData(SPUIDefinitions.ITEMID));
} else {
swModuleIdNameSet.addAll(swModuleSelected);
}
swModuleIdNameSet.forEach(id -> { swModuleIdNameSet.forEach(id -> {
final String swModuleName = (String) sourceTable.getContainerDataSource().getItem(id) final String swModuleName = (String) sourceTable.getContainerDataSource().getItem(id)
.getItemProperty(SPUILabelDefinitions.NAME_VERSION).getValue(); .getItemProperty(SPUILabelDefinitions.NAME_VERSION).getValue();

View File

@@ -26,6 +26,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetIdName;
import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable; import org.eclipse.hawkbit.ui.common.table.AbstractNamedVersionTable;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType; import org.eclipse.hawkbit.ui.common.table.BaseEntityEventType;
import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider;
import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent;
@@ -350,17 +351,12 @@ public class DistributionTable extends AbstractNamedVersionTable<DistributionSet
} }
} }
@SuppressWarnings("unchecked")
private void assignTargetToDs(final DragAndDropEvent event) { private void assignTargetToDs(final DragAndDropEvent event) {
final TableTransferable transferable = (TableTransferable) event.getTransferable(); final TableTransferable transferable = (TableTransferable) event.getTransferable();
final Table source = transferable.getSourceComponent(); final AbstractTable<?, TargetIdName> source = (AbstractTable<?, TargetIdName>) transferable
final Set<TargetIdName> targetsSelected = getTableValue(source); .getSourceComponent();
final Set<TargetIdName> targetDetailsList = new HashSet<>(); final Set<TargetIdName> targetDetailsList = source.getDeletedEntityByTransferable(transferable);
if (!targetsSelected.contains(transferable.getData("itemId"))) {
targetDetailsList.add((TargetIdName) transferable.getData("itemId"));
} else {
targetDetailsList.addAll(targetsSelected);
}
final AbstractSelectTargetDetails dropData = (AbstractSelectTargetDetails) event.getTargetDetails(); final AbstractSelectTargetDetails dropData = (AbstractSelectTargetDetails) event.getTargetDetails();

View File

@@ -8,7 +8,6 @@
*/ */
package org.eclipse.hawkbit.ui.management.event; package org.eclipse.hawkbit.ui.management.event;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -17,6 +16,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement;
import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.SpPermissionChecker;
import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.repository.model.DistributionSetIdName;
import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
import org.eclipse.hawkbit.ui.common.table.AbstractTable;
import org.eclipse.hawkbit.ui.management.state.DistributionTableFilters; import org.eclipse.hawkbit.ui.management.state.DistributionTableFilters;
import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil;
import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.I18N;
@@ -68,8 +68,6 @@ public class DistributionTagDropEvent implements DropHandler {
@Autowired @Autowired
private ManagementViewAcceptCriteria managementViewAcceptCriteria; private ManagementViewAcceptCriteria managementViewAcceptCriteria;
private static final String ITEMID = "itemId";
@Override @Override
public void drop(final DragAndDropEvent event) { public void drop(final DragAndDropEvent event) {
if (validate(event) && isNoTagAssigned(event)) { if (validate(event) && isNoTagAssigned(event)) {
@@ -132,23 +130,20 @@ public class DistributionTagDropEvent implements DropHandler {
final com.vaadin.event.dd.TargetDetails targetDetails = event.getTargetDetails(); final com.vaadin.event.dd.TargetDetails targetDetails = event.getTargetDetails();
final TableTransferable transferable = (TableTransferable) event.getTransferable(); final TableTransferable transferable = (TableTransferable) event.getTransferable();
final Table source = transferable.getSourceComponent();
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
final Set<DistributionSetIdName> distSelected = (Set<DistributionSetIdName>) source.getValue(); final AbstractTable<?, DistributionSetIdName> source = (AbstractTable<?, DistributionSetIdName>) transferable
final Set<Long> distributionList = new HashSet<>(); .getSourceComponent();
if (!distSelected.contains(transferable.getData(ITEMID))) {
distributionList.add(((DistributionSetIdName) transferable.getData(ITEMID)).getId()); final Set<DistributionSetIdName> distSelected = source.getDeletedEntityByTransferable(transferable);
} else { final Set<Long> distributionList = distSelected.stream().map(entity -> entity.getId())
distributionList.addAll(distSelected.stream().map(t -> t.getId()).collect(Collectors.toList())); .collect(Collectors.toSet());
}
final String distTagName = HawkbitCommonUtil.removePrefix(targetDetails.getTarget().getId(), final String distTagName = HawkbitCommonUtil.removePrefix(targetDetails.getTarget().getId(),
SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS); SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS);
final List<String> tagsClickedList = distFilterParameters.getDistSetTags(); final List<String> tagsClickedList = distFilterParameters.getDistSetTags();
final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, final DistributionSetTagAssignmentResult result = distributionSetManagement
distTagName); .toggleTagAssignment(distributionList, distTagName);
notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n)); notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n));
if (result.getUnassigned() >= 1 && !tagsClickedList.isEmpty()) { if (result.getUnassigned() >= 1 && !tagsClickedList.isEmpty()) {

View File

@@ -8,7 +8,6 @@
*/ */
package org.eclipse.hawkbit.ui.management.footer; package org.eclipse.hawkbit.ui.management.footer;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.TagManagement;
@@ -258,14 +257,9 @@ public class DeleteActionsLayout extends AbstractDeleteActionsLayout {
} }
private void addInDeleteDistributionList(final Table sourceTable, final TableTransferable transferable) { private void addInDeleteDistributionList(final Table sourceTable, final TableTransferable transferable) {
final Set<DistributionSetIdName> distSelected = AbstractTable.getTableValue(sourceTable); @SuppressWarnings("unchecked")
final Set<DistributionSetIdName> distributionIdNameSet = new HashSet<>(); final AbstractTable<?, DistributionSetIdName> distTable = (AbstractTable<?, DistributionSetIdName>) sourceTable;
final Set<DistributionSetIdName> distributionIdNameSet = distTable.getDeletedEntityByTransferable(transferable);
if (!distSelected.contains(transferable.getData(SPUIDefinitions.ITEMID))) {
distributionIdNameSet.add((DistributionSetIdName) transferable.getData(SPUIDefinitions.ITEMID));
} else {
distributionIdNameSet.addAll(distSelected);
}
final DistributionSetIdName dsInBulkUpload = managementUIState.getTargetTableFilters().getBulkUpload() final DistributionSetIdName dsInBulkUpload = managementUIState.getTargetTableFilters().getBulkUpload()
.getDsNameAndVersion(); .getDsNameAndVersion();
@@ -273,32 +267,38 @@ public class DeleteActionsLayout extends AbstractDeleteActionsLayout {
distributionIdNameSet.remove(dsInBulkUpload); distributionIdNameSet.remove(dsInBulkUpload);
} }
if (!distributionIdNameSet.isEmpty()) { if (distributionIdNameSet.isEmpty()) {
return;
/*
* Flags to identify whether all dropped distributions are already
* in the deleted list (or) some distributions are already in the
* deleted distribution list.
*/
final int existingDeletedDistributionsSize = managementUIState.getDeletedDistributionList().size();
managementUIState.getDeletedDistributionList().addAll(distributionIdNameSet);
final int newDeletedDistributionsSize = managementUIState.getDeletedDistributionList().size();
if (newDeletedDistributionsSize == existingDeletedDistributionsSize) {
/*
* No new distributions are added, all distributions dropped now
* are already available in the delete list. Hence display
* warning message accordingly.
*/
notification.displayValidationError(i18n.get("message.targets.already.deleted"));
} else if (newDeletedDistributionsSize - existingDeletedDistributionsSize != distributionIdNameSet.size()) {
/*
* Not the all distributions dropped now are added to the delete
* list. There are some distributions are already there in the
* delete list. Hence display warning message accordingly.
*/
notification.displayValidationError(i18n.get("message.dist.deleted.pending"));
}
} }
checkDeletedDistributionSets(distributionIdNameSet);
}
private void checkDeletedDistributionSets(final Set<DistributionSetIdName> distributionIdNameSet) {
final int existingDeletedDistributionsSize = managementUIState.getDeletedDistributionList().size();
managementUIState.getDeletedDistributionList().addAll(distributionIdNameSet);
final int newDeletedDistributionsSize = managementUIState.getDeletedDistributionList().size();
showAlreadyDeletedDistributionSetNotfication(existingDeletedDistributionsSize, newDeletedDistributionsSize,
"message.dists.already.deleted");
showPendingDeletedNotifaction(distributionIdNameSet, existingDeletedDistributionsSize,
newDeletedDistributionsSize, "message.dist.deleted.pending");
}
private void showPendingDeletedNotifaction(final Set<?> currentValues, final int existingDeletedSize,
final int newDeletedSize, final String messageKey) {
if (newDeletedSize - existingDeletedSize == currentValues.size()) {
return;
}
notification.displayValidationError(i18n.get(messageKey));
}
private void showAlreadyDeletedDistributionSetNotfication(final int existingDeletedSize, final int newDeletedSize,
final String messageKey) {
if (newDeletedSize != existingDeletedSize) {
return;
}
notification.displayValidationError(i18n.get(messageKey));
} }
private boolean isDsInUseInBulkUpload(final Set<DistributionSetIdName> distributionIdNameSet, private boolean isDsInUseInBulkUpload(final Set<DistributionSetIdName> distributionIdNameSet,
@@ -312,38 +312,23 @@ public class DeleteActionsLayout extends AbstractDeleteActionsLayout {
} }
private void addInDeleteTargetList(final Table sourceTable, final TableTransferable transferable) { private void addInDeleteTargetList(final Table sourceTable, final TableTransferable transferable) {
final Set<TargetIdName> targetSelected = AbstractTable.getTableValue(sourceTable); @SuppressWarnings("unchecked")
final AbstractTable<?, TargetIdName> targetTable = (AbstractTable<?, TargetIdName>) sourceTable;
final Set<TargetIdName> targetIdNameSet = targetTable.getDeletedEntityByTransferable(transferable);
final Set<TargetIdName> targetIdNameSet = new HashSet<>(); checkDeletedTargets(targetIdNameSet);
if (!targetSelected.contains(transferable.getData(SPUIDefinitions.ITEMID))) { }
targetIdNameSet.add((TargetIdName) transferable.getData(SPUIDefinitions.ITEMID));
} else {
targetIdNameSet.addAll(targetSelected);
}
/* private void checkDeletedTargets(final Set<TargetIdName> targetIdNameSet) {
* Flags to identify whether all dropped targets are already in the
* deleted list (or) some target are already in the deleted distribution
* list.
*/
final int existingDeletedTargetsSize = managementUIState.getDeletedTargetList().size(); final int existingDeletedTargetsSize = managementUIState.getDeletedTargetList().size();
managementUIState.getDeletedTargetList().addAll(targetIdNameSet); managementUIState.getDeletedTargetList().addAll(targetIdNameSet);
final int newDeletedTargetsSize = managementUIState.getDeletedTargetList().size(); final int newDeletedTargetsSize = managementUIState.getDeletedTargetList().size();
if (newDeletedTargetsSize == existingDeletedTargetsSize) {
/* showAlreadyDeletedDistributionSetNotfication(existingDeletedTargetsSize, newDeletedTargetsSize,
* No new targets are added, all targets dropped now are already "message.targets.already.deleted");
* available in the delete list. Hence display warning message
* accordingly. showPendingDeletedNotifaction(targetIdNameSet, existingDeletedTargetsSize, newDeletedTargetsSize,
*/ "message.target.deleted.pending");
notification.displayValidationError(i18n.get("message.targets.already.deleted"));
} else if (newDeletedTargetsSize - existingDeletedTargetsSize != targetIdNameSet.size()) {
/*
* Not the all targets dropped now are added to the delete list.
* There are some targets are already there in the delete list.
* Hence display warning message accordingly.
*/
notification.displayValidationError(i18n.get("message.target.deleted.pending"));
}
} }
private void updateActionCount() { private void updateActionCount() {

View File

@@ -107,7 +107,6 @@ public class TargetTable extends AbstractTable<Target, TargetIdName> implements
private static final long serialVersionUID = -2300392868806614568L; private static final long serialVersionUID = -2300392868806614568L;
private static final int PROPERTY_DEPT = 3; private static final int PROPERTY_DEPT = 3;
private static final String ITEMID = "itemId";
private static final String ACTION_NOT_ALLOWED_MSG = "message.action.not.allowed"; private static final String ACTION_NOT_ALLOWED_MSG = "message.action.not.allowed";
@Autowired @Autowired
@@ -634,14 +633,9 @@ public class TargetTable extends AbstractTable<Target, TargetIdName> implements
private static Set<DistributionSetIdName> getDraggedDistributionSet(final TableTransferable transferable, private static Set<DistributionSetIdName> getDraggedDistributionSet(final TableTransferable transferable,
final Table source) { final Table source) {
final Set<DistributionSetIdName> distSelected = getTableValue(source); @SuppressWarnings("unchecked")
final Set<DistributionSetIdName> distributionIdSet = new HashSet<>(); final AbstractTable<?, DistributionSetIdName> distTable = (AbstractTable<?, DistributionSetIdName>) source;
if (!distSelected.contains(transferable.getData(ITEMID))) { return distTable.getDeletedEntityByTransferable(transferable);
distributionIdSet.add((DistributionSetIdName) transferable.getData(ITEMID));
} else {
distributionIdSet.addAll(distSelected);
}
return distributionIdSet;
} }
private Boolean validateDragAndDropWrapper(final Component compsource) { private Boolean validateDragAndDropWrapper(final Component compsource) {
@@ -858,6 +852,7 @@ public class TargetTable extends AbstractTable<Target, TargetIdName> implements
eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.REFRESH_TARGETS)); eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.REFRESH_TARGETS));
} }
@SuppressWarnings("unchecked")
private void updateVisibleItemOnEvent(final TargetInfo targetInfo, final Target target, private void updateVisibleItemOnEvent(final TargetInfo targetInfo, final Target target,
final TargetIdName targetIdName) { final TargetIdName targetIdName) {
final LazyQueryContainer targetContainer = (LazyQueryContainer) getContainerDataSource(); final LazyQueryContainer targetContainer = (LazyQueryContainer) getContainerDataSource();
@@ -880,8 +875,8 @@ public class TargetTable extends AbstractTable<Target, TargetIdName> implements
* @param targetInfoUpdateEvents * @param targetInfoUpdateEvents
* list of target info update event * list of target info update event
*/ */
@SuppressWarnings("unchecked")
private void onTargetInfoUpdateEvents(final List<TargetInfoUpdateEvent> targetInfoUpdateEvents) { private void onTargetInfoUpdateEvents(final List<TargetInfoUpdateEvent> targetInfoUpdateEvents) {
@SuppressWarnings("unchecked")
final List<Object> visibleItemIds = (List<Object>) getVisibleItemIds(); final List<Object> visibleItemIds = (List<Object>) getVisibleItemIds();
boolean shoulTargetsUpdated = false; boolean shoulTargetsUpdated = false;
Target lastSelectedTarget = null; Target lastSelectedTarget = null;

View File

@@ -8,7 +8,6 @@
*/ */
package org.eclipse.hawkbit.ui.management.targettable; package org.eclipse.hawkbit.ui.management.targettable;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.repository.model.DistributionSetIdName;
@@ -379,15 +378,9 @@ public class TargetTableHeader extends AbstractTableHeader {
} }
private Set<DistributionSetIdName> getDropppedDistributionDetails(final TableTransferable transferable) { private Set<DistributionSetIdName> getDropppedDistributionDetails(final TableTransferable transferable) {
final Set<DistributionSetIdName> distSelected = AbstractTable.getTableValue(transferable.getSourceComponent()); @SuppressWarnings("unchecked")
final Set<DistributionSetIdName> distributionIdSet = new HashSet<>(); final AbstractTable<?, DistributionSetIdName> distTable = (AbstractTable<?, DistributionSetIdName>) transferable.getSourceComponent();
if (!distSelected.contains(transferable.getData("itemId"))) { return distTable.getDeletedEntityByTransferable(transferable);
distributionIdSet.add((DistributionSetIdName) transferable.getData("itemId"));
} else {
distributionIdSet.addAll(distSelected);
}
return distributionIdSet;
} }
private void addFilterTextField(final DistributionSetIdName distributionSetIdName) { private void addFilterTextField(final DistributionSetIdName distributionSetIdName) {

View File

@@ -8,7 +8,6 @@
*/ */
package org.eclipse.hawkbit.ui.management.targettag; package org.eclipse.hawkbit.ui.management.targettag;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -79,8 +78,6 @@ public class TargetTagFilterButtons extends AbstractFilterButtons {
@Autowired @Autowired
private transient TargetManagement targetManagement; private transient TargetManagement targetManagement;
private static final String ITEMID = "itemId";
TargetTagFilterButtonClick filterButtonClickBehaviour; TargetTagFilterButtonClick filterButtonClickBehaviour;
/** /**
@@ -213,35 +210,46 @@ public class TargetTagFilterButtons extends AbstractFilterButtons {
} }
private void processTargetDrop(final DragAndDropEvent event) { private void processTargetDrop(final DragAndDropEvent event) {
final com.vaadin.event.dd.TargetDetails targetDetails = event.getTargetDetails(); final com.vaadin.event.dd.TargetDetails targetDetails = event.getTargetDetails();
final TableTransferable transferable = (TableTransferable) event.getTransferable(); final TableTransferable transferable = (TableTransferable) event.getTransferable();
final Table source = transferable.getSourceComponent(); @SuppressWarnings("unchecked")
final AbstractTable<?, TargetIdName> targetTable = (AbstractTable<?, TargetIdName>) transferable
.getSourceComponent();
final Set<TargetIdName> targetSelected = AbstractTable.getTableValue(source); final Set<TargetIdName> targetSelected = targetTable.getDeletedEntityByTransferable(transferable);
final Set<String> targetList = new HashSet<>(); final Set<String> targetList = targetSelected.stream().map(t -> t.getControllerId())
if (transferable.getData(ITEMID) != null) { .collect(Collectors.toSet());
if (!targetSelected.contains(transferable.getData(ITEMID))) {
targetList.add(((TargetIdName) transferable.getData(ITEMID)).getControllerId());
} else {
targetList.addAll(targetSelected.stream().map(t -> t.getControllerId()).collect(Collectors.toList()));
}
final String targTagName = HawkbitCommonUtil.removePrefix(targetDetails.getTarget().getId(), final String targTagName = HawkbitCommonUtil.removePrefix(targetDetails.getTarget().getId(),
SPUIDefinitions.TARGET_TAG_ID_PREFIXS); SPUIDefinitions.TARGET_TAG_ID_PREFIXS);
final List<String> tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName);
notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(targTagName, result, i18n));
final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); publishAssignTargetTagEvent(result);
notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(targTagName, result, i18n));
if (result.getAssigned() >= 1 && managementUIState.getTargetTableFilters().isNoTagSelected()) { publishUnAssignTargetTagEvent(targTagName, result);
eventBus.publish(this, ManagementUIEvent.ASSIGN_TARGET_TAG);
} }
if (result.getUnassigned() >= 1 && !tagsClickedList.isEmpty() && tagsClickedList.contains(targTagName)) {
eventBus.publish(this, ManagementUIEvent.UNASSIGN_TARGET_TAG); private void publishUnAssignTargetTagEvent(final String targTagName, final TargetTagAssignmentResult result) {
} final List<String> tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags();
final boolean isTargetTagUnAssigned = result.getUnassigned() >= 1 && !tagsClickedList.isEmpty()
&& tagsClickedList.contains(targTagName);
if (!isTargetTagUnAssigned) {
return;
} }
eventBus.publish(this, ManagementUIEvent.UNASSIGN_TARGET_TAG);
}
private void publishAssignTargetTagEvent(final TargetTagAssignmentResult result) {
final boolean isNewTargetTagAssigned = result.getAssigned() >= 1
&& managementUIState.getTargetTableFilters().isNoTagSelected();
if (!isNewTargetTagAssigned) {
return;
}
eventBus.publish(this, ManagementUIEvent.ASSIGN_TARGET_TAG);
} }
private boolean validateIfSourceisTargetTable(final Table source) { private boolean validateIfSourceisTargetTable(final Table source) {
@@ -288,6 +296,7 @@ public class TargetTagFilterButtons extends AbstractFilterButtons {
} }
} }
@SuppressWarnings("unchecked")
private void addNewTargetTag(final TargetTag newTargetTag) { private void addNewTargetTag(final TargetTag newTargetTag) {
final LazyQueryContainer targetTagContainer = (LazyQueryContainer) getContainerDataSource(); final LazyQueryContainer targetTagContainer = (LazyQueryContainer) getContainerDataSource();
final Object addItem = targetTagContainer.addItem(); final Object addItem = targetTagContainer.addItem();