import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.texteditor.AbstractDocumentProvider;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
private ILineDisplayStrategy lineDisplayStrategy;
private final IEditorInput input;
+ private ConversationHolder conversation;
+
+ /**
+ * @return the conversation
+ */
+ public ConversationHolder getConversation() {
+ return conversation;
+ }
+
+ /**
+ * @param conversation the conversation to set
+ */
+ public void setConversation(ConversationHolder conversation) {
+ this.conversation = conversation;
+ }
/**
* <p>Constructor for AnnotatedLineDocumentProvider.</p>
*/
public AnnotatedLineDocumentProvider(IEditorInput input){
this.input = input;
+ this.conversation = ((AbstractBulkEditorInput)input).getConversation();
}
/** {@inheritDoc} */
// Get new containers from annotation model
LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);
Iterator iterator = model.getAnnotationIterator();
+ if (!this.conversation.isBound()){
+ this.conversation.bind();
+ }
+
while (iterator.hasNext()) {
Annotation annotation = (Annotation) iterator.next();
if (annotation instanceof IEntityContainer<?>) {
IEntityContainer<?> container = (IEntityContainer<?>) annotation;
+
if (container.isMarkedAsNew() || container.isDirty()) {
+
Object entity = persistenceService.save(container.getEntity()); // save
container.setEntity(entity);
container.setDirty(false);
}
}
}
+ this.conversation.commit(true);
for (LineAnnotation annotation : model.getDeletedAnnotations()) {
if (annotation.isMarkedAsNew()) {
continue;
protected void doSetInput(IEditorInput input) throws CoreException {
AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
-
+
provider.setLineDisplayStrategy(lineDisplayStrategy, input);
setDocumentProvider(provider);
public LineAnnotation createAnnotatedLine(Object entity) {
IEditorInput input = getEditorInput();
+ this.conversation.close();
+ this.conversation = ((AbstractBulkEditorInput)input).getConversation();
AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
LineAnnotation annotation = null;
conversation.commit(true);
getEditorInput().dispose();
- initializeEditor();
+ getEditorInput().bind();
getEditorInput().performSearch(query);
refresh();
import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* <p>OpenBulkEditorHandler class.</p>
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
private List<T> model;
private IEntityCreator<T> entityCreator;
+ private final ConversationHolder conversation;
private static Class serviceClass;
public AbstractBulkEditorInput() {
super(true);
+ this.conversation = CdmStore.createConversation();
}
/**
// TODO Auto-generated method stub
return null;
}
+
+ public ConversationHolder getConversation() {
+ return conversation;
+ }
}
package eu.etaxonomy.taxeditor.bulkeditor.input;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import java.util.UUID;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
/** {@inheritDoc} */
@Override
public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
- return CdmStore.getSearchManager().findNames(configurator);
+
+ configurator.setPropertyPaths(getPropertyPaths());
+ return CdmStore.getSearchManager().findNames(configurator, this.getConversation());
}
/** {@inheritDoc}
/** {@inheritDoc} */
@Override
public TaxonNameBase save(TaxonNameBase entity) {
- if(CdmStore.getCurrentSessionManager().isRemoting()) {
- return CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
- } else {
- CdmStore.getService(INameService.class).saveOrUpdate(entity);
- return entity;
- }
+ TaxonNameBase mergedName = null;
+
+ if(CdmStore.getCurrentSessionManager().isRemoting()) {
+ mergedName = CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
+ }
+
+ return mergedName;
+
}
/* (non-Javadoc)
}
+ private List<String> getPropertyPaths(){
+ List<String> nameBasePropertyPaths = Arrays.asList(new String[] {
+ "name.descriptions",
+ "name.typeDesignations",
+ "name.status",
+ "name.nomenclaturalReference.inReference",
+ "name.taxonBases.taxonNodes",
+ "name.relationsFromThisName",
+ "name.relationsToThisName",
+ "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status",
+ "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"});
+
+ return nameBasePropertyPaths;
+ }
}