ref #7505, #6321 Disable parallel loading
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / NameEditorInput.java
index c9298f93bd147e80e77643c98f5c56409395dedc..08deec5acdf32c944ce02baf3a760113ea3e887d 100644 (file)
@@ -1,9 +1,8 @@
-// $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.
 */
@@ -15,9 +14,11 @@ import java.util.List;
 import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.INameService;
+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.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.model.name.HybridRelationship;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.NameCreator;
@@ -29,19 +30,15 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  *
  * @author p.ciardelli
  * @created 20.08.2009
- * @version 1.0
  */
-public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
+public class NameEditorInput extends AbstractBulkEditorInput<TaxonName> {
 
-       /**
-        * 
-        */
        private static final long serialVersionUID = -3085029575759626823L;
        private static NameEditorInput instance;
 
        /** Constant <code>ID="bulkeditor.input.name"</code> */
        public static final String ID = "bulkeditor.input.name";
-       
+
        /**
         * <p>Getter for the field <code>instance</code>.</p>
         *
@@ -53,29 +50,10 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
                }
                return instance;
        }
-       
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getName()
-        */
-       /**
-        * <p>getName</p>
-        *
-        * @return a {@link java.lang.String} object.
-        */
-       public String getName() {
-               return BulkEditorInputType.NAME.label;
-       }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IEditorInput#getToolTipText()
-        */
-       /**
-        * <p>getToolTipText</p>
-        *
-        * @return a {@link java.lang.String} object.
-        */
-       public String getToolTipText() {
-               return getName();
+    @Override
+    public String getName() {
+               return BulkEditorInputType.NAME.label;
        }
 
        /**
@@ -96,68 +74,117 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
                return false;
        }
 
+       @Override
+       protected int getPageSize() {
+           return 50;
+       }
+
+       @Override
+       protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {
+           return CdmStore.getService(INameService.class).countByTitle(configurator);
+       }
+
        /** {@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 loadEntity(UUID uuid) {
-               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               List<String> propertyPaths = Arrays.asList(new String[]{});
                return CdmStore.getService(INameService.class).load(uuid, propertyPaths);
        }
 */
-       /** {@inheritDoc} 
-        **/
-       public boolean delete(TaxonNameBase entity)  {
-               return CdmStore.getService(INameService.class).delete(entity) != null;
+       @Override
+    public boolean delete(TaxonName entity, DeleteConfiguratorBase config)  {
+               NameDeletionConfigurator nameConfig = null;
+               if (config instanceof NameDeletionConfigurator){
+                       nameConfig = (NameDeletionConfigurator) config;
+               } else{
+
+               }
+               return CdmStore.getService(INameService.class).delete(entity.getUuid(), nameConfig) != null;
        }
 
        /** {@inheritDoc} */
-       public boolean save(TaxonNameBase entity) {
-               return CdmStore.getService(INameService.class).saveOrUpdate(entity) != null;
+       @Override
+    public TaxonName save(TaxonName entity) {
+               TaxonName mergedName = null;
+               mergedName =  CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity();
+               return mergedName;
+
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
-        */
        @Override
-       protected IEntityCreator<TaxonNameBase> createEntityCreator() {
+       protected IEntityCreator<TaxonName> createEntityCreator() {
                return new NameCreator();
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getSortProviders()
-        */
        @Override
-       public List<IBulkEditorSortProvider<TaxonNameBase>> getSortProviders() {
-               List<IBulkEditorSortProvider<TaxonNameBase>> sortProviders = super.getSortProviders();
-               
-               sortProviders.add(0, new IdentifiableEntitySortProvider<TaxonNameBase>());
-               
+       public List<IBulkEditorSortProvider<TaxonName>> getSortProviders() {
+               List<IBulkEditorSortProvider<TaxonName>> sortProviders = super.getSortProviders();
+
+               sortProviders.add(0, new IdentifiableEntitySortProvider<>());
+
                return sortProviders;
        }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getTypeText(java.lang.Object)
-        */
+
        @Override
        public String getTypeText(Object entity) {
-               if((entity instanceof TaxonNameBase) && (((TaxonNameBase) entity).getNomenclaturalCode() != null)){
-                       return ((TaxonNameBase) entity).getNomenclaturalCode().getTitleCache();
+               if((entity instanceof TaxonName) && (((TaxonName) entity).getNomenclaturalCode() != null)){
+                       return ((TaxonName) entity).getNomenclaturalCode().getTitleCache();
                }
                return super.getTypeText(entity);
        }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#getText(eu.etaxonomy.cdm.model.common.ICdmBase)
-        */
+
        @Override
-       public String getText(TaxonNameBase entity) {
+       public String getText(TaxonName entity) {
                return (entity).getFullTitleCache();
        }
 
+    @Override
+    public void merge() {
+
+    }
+
+       @Override
+       protected TaxonName loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{});
+               return CdmStore.getService(INameService.class).load(entityUuid, getPropertyPaths());
+       }
+       @Override
+        public void addSaveCandidate(TaxonName name){
+           if (!name.getHybridChildRelations().isEmpty()){
+               for (HybridRelationship rel: name.getHybridChildRelations()){
+                   if (!rel.getParentName().isPersited()){
+                       super.addSaveCandidate(rel.getParentName());
+                   }
+                   if (!rel.getHybridName().isPersited()){
+                    super.addSaveCandidate(rel.getHybridName());
+                }
+               }
+           }
+
+        super.addSaveCandidate(name);
+    }
+
+
+    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.synonyms.synonym.name.status",
+         "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"});
+
+        return nameBasePropertyPaths;
+    }
 
 }