Update root entity merge calls to use new merge method.
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / AgentEditorInput.java
index 1e9ca9ffd69368ae50a1fd15ecb24fe5e92a803c..6423cece7d442a113656cc140cd2a6ebfc6c1e72 100644 (file)
@@ -32,64 +32,34 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 
 
 /**
- * <p>AgentEditorInput class.</p>
- *
  * @author p.ciardelli
  * @created 25.06.2009
  * @version 1.0
  */
 public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase> {
 
-       /**
-        *
-        */
        private static final long serialVersionUID = 3387950621617078479L;
 
-       /** Constant <code>ID="bulkeditor.input.author"</code> */
        public static final String ID = "bulkeditor.input.author";
 
        private static AgentEditorInput instance;
 
-       /**
-        * <p>getID</p>
-        *
-        * @return the iD
-        */
        public static String getID() {
                return ID;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getName()
-        */
-       /**
-        * <p>getName</p>
-        *
-        * @return a {@link java.lang.String} object.
-        */
+
        @Override
     public String getName() {
                return BulkEditorInputType.AGENT.label;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getToolTipText()
-        */
-       /**
-        * <p>getToolTipText</p>
-        *
-        * @return a {@link java.lang.String} object.
-        */
+
        @Override
     public String getToolTipText() {
                return getName();
        }
 
-       /**
-        * <p>Getter for the field <code>instance</code>.</p>
-        *
-        * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
-        */
        public static AbstractBulkEditorInput getInstance() {
                if (instance == null) {
                        instance = new AgentEditorInput();
@@ -97,18 +67,13 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
                return instance;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
-        */
        /** {@inheritDoc} */
        @Override
        public boolean isMergingEnabled() {
                return true;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
-        */
+
        /** {@inheritDoc} */
        @Override
        public boolean isConvertingEnabled() {
@@ -120,9 +85,14 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
     public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
                if (entity instanceof IMergable) {
                        try {
-                               IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
-                               strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
-                               CdmStore.getCommonService().merge((IMergable)mergeTarget, (IMergable)entity, Person.class);
+                               if(entity instanceof Person && mergeTarget instanceof Person) {
+                                   IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
+                                   strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
+                                   CdmStore.getCommonService().merge(mergeTarget.getId(), entity.getId(), Person.class);
+                               } else {
+                                   IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(TeamOrPersonBase.class);
+                                   CdmStore.getCommonService().merge(mergeTarget.getId(), entity.getId(), TeamOrPersonBase.class);
+                               }
                        } catch (MergeException e) {
                                MessagingUtils.errorDialog("Bulk Editor Merge Error",
                                                this,
@@ -150,20 +120,16 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
 
 
        public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException  {
-
                        return CdmStore.getService(IAgentService.class).delete(entity) != null;
 
        }
 
-//     /** {@inheritDoc} */
-//     public boolean save(AgentBase entity) {
-//
-//             return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
-//     }
+       /** {@inheritDoc} */
+       public boolean save(AgentBase entity) {
+
+               return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+       }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getSortProviders()
-        */
        @Override
        public List<IBulkEditorSortProvider<TeamOrPersonBase>> getSortProviders() {
                List<IBulkEditorSortProvider<TeamOrPersonBase>> sortProviders = super.getSortProviders();
@@ -173,20 +139,19 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
                return sortProviders;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
-        */
+
        @Override
        protected IEntityCreator<TeamOrPersonBase> createEntityCreator() {
                return new AgentCreator();
        }
 
        @Override
-       public boolean save(TeamOrPersonBase entity) {
+       public TeamOrPersonBase save(TeamOrPersonBase entity) {
            if(CdmStore.getCurrentSessionManager().isRemoting()) {
-               return CdmStore.getService(IAgentService.class).merge(entity) != null;
+               return (TeamOrPersonBase) CdmStore.getService(IAgentService.class).merge(entity, true).getMergedEntity();
            } else {
-               return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
+               CdmStore.getService(IAgentService.class).saveOrUpdate(entity) ;
+               return entity;
            }
        }
 
@@ -205,4 +170,5 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
 
     }
 
+
 }