fix #5759 remove all switches for remoting and standalone
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / AgentEditorInput.java
index 386e714ebbd18f537a20d76a8a63e96a93cc3830..31b7498ca2421f463b3fc1b38d3fcb449d6a5b04 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -13,77 +13,56 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
-import org.eclipse.core.commands.ExecutionException;
-
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
-import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.strategy.merge.DefaultMergeStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergable;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+import eu.etaxonomy.cdm.strategy.merge.MergeException;
+import eu.etaxonomy.cdm.strategy.merge.MergeMode;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.AgentCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
+import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 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<AgentBase> {
+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.
-        */
-       public String getName() {
+
+
+       @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.
-        */
-       public String getToolTipText() {
+
+       @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();
@@ -91,58 +70,112 @@ public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {
                return instance;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled()
-        */
        /** {@inheritDoc} */
        @Override
        public boolean isMergingEnabled() {
-               return false;
+               return true;
        }
 
+
        /** {@inheritDoc} */
        @Override
-       public List<AgentBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {
-               return CdmStore.getSearchManager().findTeamOrPersons(configurator);
+       public boolean isConvertingEnabled() {
+               return true;
+       }
+
+       /** {@inheritDoc} */
+       @Override
+    public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
+               if (entity instanceof IMergable) {
+                       try {
+                               if(entity instanceof Person && mergeTarget instanceof Person) {
+                                   IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
+                                   strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
+                                   CdmStore.getCommonService().merge(mergeTarget.getUuid(), entity.getUuid(), Person.class);
+                               } else {
+                                   IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(TeamOrPersonBase.class);
+                                   CdmStore.getCommonService().merge(mergeTarget.getUuid(), entity.getUuid(), TeamOrPersonBase.class);
+                               }
+                       } catch (MergeException e) {
+                               MessagingUtils.errorDialog("Bulk Editor Merge Error",
+                                               this,
+                                               "Could not merge chosen objects of type " + entity.getClass().getName(),
+                                               TaxeditorBulkeditorPlugin.PLUGIN_ID,
+                                               e,
+                                               true);
+                       }
+               }
+               return true;
        }
-       
+
        /** {@inheritDoc} */
        @Override
+       public List<TeamOrPersonBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {
+               return CdmStore.getSearchManager().findTeamOrPersons(configurator);
+       }
+
+       /** {@inheritDoc}
+       @Override
        public AgentBase loadEntity(UUID uuid) {
-               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               List<String> propertyPaths = Arrays.asList(new String[]{});
                return CdmStore.getService(IAgentService.class).load(uuid, propertyPaths);
-       }
+       }*/
+
 
-       
        public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException  {
-               
-                       return CdmStore.getService(IAgentService.class).delete(entity) != null;                 
-               
+                       return CdmStore.getService(IAgentService.class).delete(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<AgentBase>> getSortProviders() {
-               List<IBulkEditorSortProvider<AgentBase>> sortProviders = super.getSortProviders();
-               
-               sortProviders.add(0, new IdentifiableEntitySortProvider<AgentBase>());
-               
+       public List<IBulkEditorSortProvider<TeamOrPersonBase>> getSortProviders() {
+               List<IBulkEditorSortProvider<TeamOrPersonBase>> sortProviders = super.getSortProviders();
+
+               sortProviders.add(0, new IdentifiableEntitySortProvider<TeamOrPersonBase>());
+
                return sortProviders;
        }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
-        */
+
+
        @Override
-       protected IEntityCreator<AgentBase> createEntityCreator() {
+       protected IEntityCreator<TeamOrPersonBase> createEntityCreator() {
                return new AgentCreator();
        }
 
+       @Override
+       public TeamOrPersonBase save(TeamOrPersonBase entity) {
+          return (TeamOrPersonBase) CdmStore.getService(IAgentService.class).merge(entity, true).getMergedEntity();
+          
+       }
+
+       @Override
+       public boolean delete(TeamOrPersonBase entity)
+                       throws ReferencedObjectUndeletableException {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge()
+     */
+    @Override
+    public void merge() {
+
+    }
+
+
+       @Override
+       protected TeamOrPersonBase loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return HibernateProxyHelper.deproxy(CdmStore.getService(IAgentService.class).load(entityUuid, propertyPaths), TeamOrPersonBase.class);
+       }
+
+
+
 }