import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.GroupEditorInput;
import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
getEditorInput().addSaveCandidate(changedTaxon);
input.replaceInModel(changedTaxon);
}
+ }else if(element instanceof Group){
+ Group oldGroup = ((GroupEditorInput)input).getEntityFromModel((Group)element);
+ ((GroupEditorInput)input).getSaveUserCandidates().addAll(oldGroup.getMembers());
+ getEditorInput().addSaveCandidate((Group)element);
+ input.replaceInModel((CdmBase) element);
}else{
getEditorInput().addSaveCandidate((CdmBase)element);
input.replaceInModel((CdmBase) element);
}
}
+ @Inject
+ @Optional
+ private void updatefromDelete(@UIEventTopic(WorkbenchEventConstants.REMOVE_USER) User user) {
+ if (input instanceof GroupEditorInput){
+ ((GroupEditorInput)input).getSaveUserCandidates().add(user);
+ }
+ }
+
}
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.cdm.strategy.merge.IMergable;
import eu.etaxonomy.cdm.strategy.merge.MergeException;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
}
}
if (!saveCandidates.isEmpty()){
- CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+ List<MergeResult<T>> results = CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+ for (MergeResult<T> result: results){
+ if (result.getMergedEntity() != null){
+ T entitiy = result.getMergedEntity();
+ }
+
+ }
}
if(resetMerge){
//merge entities
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.persistence.query.OrderHint;
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
public static final String ID = "bulkeditor.input.group";
private static GroupEditorInput instance;
+ private Set<User> saveUserCandidates = new HashSet<>();
+
public static GroupEditorInput getInstance() {
if(instance == null){
return new GroupNameComparator();
}
+ @Override
+ public void saveModel(boolean resetMerge){
+ super.saveModel(resetMerge);
+ if (!saveUserCandidates.isEmpty()){
+ CdmStore.getService(IUserService.class).merge(new ArrayList<>(saveUserCandidates), true);
+ }
+ saveUserCandidates.clear();
+ }
+
+ public Group getEntityFromModel(Group group){
+ return this.getModel().get(this.getModel().indexOf(group));
+ }
+
+ public Set<User> getSaveUserCandidates() {
+ return saveUserCandidates;
+ }
+
+ public void setSaveUserCandidates(Set<User> saveUserCandidates) {
+ this.saveUserCandidates = saveUserCandidates;
+ }
+
+
}
public static final String REFRESH_DETAILS = "REFRESH/DETAILS/DISTRIBUTION";
+ public static final String REMOVE_USER = "UPDATE/GROUP/REMOVEUSER";
+
}