#5160 Use new merge methods with uuids as parameters
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / AbstractBulkEditorInput.java
index 5a7cccc119a7ae8ca03599d85595af7a614f2c8a..00f746d977cb26c97514f565407ab3a4928d0453 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -22,6 +23,7 @@ import org.eclipse.ui.IPersistableElement;
 
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.MarkerType;
@@ -34,6 +36,7 @@ import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.CdmBaseSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.TitleCacheComparator;
 import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
+import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -45,16 +48,21 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0
  * @param <T>
  */
-public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEditorInput, IEntityPersistenceService<T> {
+public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEntitySessionInput implements IEditorInput ,
+    IEntityPersistenceService<T> {
 
        private UUID entityUuid;
 
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
-       
+
        private static Class serviceClass;
 
+       public AbstractBulkEditorInput() {
+           super(true);
+       }
+
        /**
         * <p>NewInstance</p>
         *
@@ -62,7 +70,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
         */
        static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
-               
+
                return BulkEditorInputType.getInput(inputType);
        }
 
@@ -99,7 +107,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a T object.
         */
        protected T loadEntity(UUID entityUuid) {
-               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               List<String> propertyPaths = Arrays.asList(new String[]{});
                return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths);
        }
 
@@ -179,7 +187,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
 
                if(getEntityUuid() != null){
 
-                       T entity = (T) loadEntity(getEntityUuid());
+                       T entity = loadEntity(getEntityUuid());
                        entityList.add(entity);
                        model = entityList;
                }
@@ -191,7 +199,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                        entityList = listEntities(configurator);
 
                        Collections.sort(entityList, queryComparator);
-                       
+
 
                }
 
@@ -207,6 +215,14 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                return false;
        }
 
+       /**
+        * <p>isMergingEnabled</p>
+        *
+        * @return a boolean.
+        */
+       public boolean isConvertingEnabled() {
+               return false;
+       }
        /**
         * <p>isMarkerTypeEditingEnabled</p>
         *
@@ -217,16 +233,13 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                return false;
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#merge(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
-        */
+
        /** {@inheritDoc} */
        @Override
     public boolean merge(T entity, T mergeTarget) {
                if (entity instanceof IMergable) {
                        try {
-                               CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, null);                             
+                               CdmStore.getCommonService().merge(mergeTarget.getUuid(), entity.getUuid(), (Class<? extends CdmBase>)entity.getClass());
                        } catch (MergeException e) {
                                MessagingUtils.errorDialog("Bulk Editor Merge Error",
                                                this,
@@ -239,13 +252,10 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                return true;
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#create(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
-        */
+
        /** {@inheritDoc} */
        @Override
-    public boolean create(T entity) {
+    public T create(T entity) {
                return save(entity);
        }
 
@@ -277,7 +287,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * Returns a textual representation given object. The default implementation
         * in the abstract base class returns the simple name of the class, this may
         * be overwritten to something more specific in subclasses.
-        * 
+        *
         * @param entity
         * @return a textual representation given object.
         */
@@ -302,9 +312,35 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        /**
         * @return
         */
-       public List<?> getModel() {
+       public List<T> getModel() {
                return model;
        }
 
+       protected boolean replaceInModel(T entity) {
+           int index = model.indexOf(entity);
+           if(index >= 0) {
+               model.set(index, entity);
+               return true;
+           } else {
+               return false;
+           }
+       }
 
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+     */
+    @Override
+    public   List<T> getRootEntities() {
+        return getModel();
+    }
+
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
+     */
+    @Override
+    public Map<Object, List<String>> getPropertyPathsMap() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }