package org.ovirt.engine.ui.uicommonweb; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.ovirt.engine.core.common.businessentities.Tags; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; public interface TagAssigningModel<T> { default void postGetAttachedTags(TagListModel tagListModel) { if (getLastExecutedCommand() == getAssignTagsCommand()) { getAllAttachedTags().stream() .collect(Collectors.groupingBy(Tags::getTagId, Collectors.counting())) .forEach((id, count) -> getAttachedTagsToEntities().put(id, count.intValue() == getSelectedItems().size())); tagListModel.setAttachedTagsToEntities(getAttachedTagsToEntities()); } else if ("OnAssignTags".equals(getLastExecutedCommand().getName())) { //$NON-NLS-1$ postOnAssignTags(tagListModel.getAttachedTagsToEntities()); } } UICommand getAssignTagsCommand(); UICommand getLastExecutedCommand(); List<Tags> getAllAttachedTags(); Map<Guid, Boolean> getAttachedTagsToEntities(); List<T> getSelectedItems(); void postOnAssignTags(Map<Guid, Boolean> attachedTags); }