ref #9680: show abbrev titlecache/protected and collector titlecache/protected in...
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / AgentEditorInput.java
index a6f0becfaadecadaa5bafff7841f4bdb01c665e6..d45dbfc191381fc31f1b8c5296ac4bfa90c9d7e2 100644 (file)
@@ -8,6 +8,7 @@
 */
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
@@ -19,6 +20,7 @@ import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableExcepti
 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.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.strategy.merge.DefaultMergeStrategy;
 import eu.etaxonomy.cdm.strategy.merge.IMergable;
@@ -33,24 +35,94 @@ import eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
-
 /**
  * @author p.ciardelli
  * @created 25.06.2009
- * @version 1.0
  */
 public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase> {
 
-       private static final long serialVersionUID = 3387950621617078479L;
-
        public static final String ID = "bulkeditor.input.author";
 
        private static AgentEditorInput instance;
 
+       private static final String PROPERTY_NOMENCLATURAL_TITLE = "Abbrev. Title Cache";
+       private static final String PROPERTY_NOMENCLATURAL_TITLECACHE_PROTECTED = "Protect Abbrev. Title Cache";
+       private static final String PROPERTY_FAMILY_NAME = "Family Name";
+       private static final String PROPERTY_OTHER_NAME = "Other/Given Name";
+       private static final String PROPERTY_INITIALS = "Initials";
+       private static final String PROPERTY_TEAM_HAS_MORE_MEMBERS = "et al.";
+       private static final String PROPERTY_COLLECTOR_TITLECACHE = "Collector Title Cache";
+       private static final String PROPERTY_COLLECTOR_TITLECACHE_PROTECTED = "Protect Collector Title Cache";
+
        public static String getID() {
                return ID;
        }
 
+       @Override
+       protected List<String> getPropertyKeys_internal() {
+           List<String> propertyKeysInternal = new ArrayList<>();
+           propertyKeysInternal.add(PROPERTY_NOMENCLATURAL_TITLE);
+           propertyKeysInternal.add(PROPERTY_NOMENCLATURAL_TITLECACHE_PROTECTED);
+           propertyKeysInternal.add(PROPERTY_COLLECTOR_TITLECACHE);
+        propertyKeysInternal.add(PROPERTY_COLLECTOR_TITLECACHE_PROTECTED);
+           propertyKeysInternal.add(PROPERTY_FAMILY_NAME);
+           propertyKeysInternal.add(PROPERTY_OTHER_NAME);
+           propertyKeysInternal.add(PROPERTY_INITIALS);
+           propertyKeysInternal.add(PROPERTY_TEAM_HAS_MORE_MEMBERS);
+           return propertyKeysInternal;
+       }
+
+       @Override
+       public Object getPropertyValue(TeamOrPersonBase cdmBase, String property) {
+           if(property.equals(PROPERTY_NOMENCLATURAL_TITLE)){
+               return cdmBase.getNomenclaturalTitleCache();
+           }
+           else if(property.equals(PROPERTY_NOMENCLATURAL_TITLECACHE_PROTECTED) && cdmBase.isInstanceOf(Team.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, Team.class).isProtectedNomenclaturalTitleCache();
+        }
+           else if(property.equals(PROPERTY_COLLECTOR_TITLECACHE)){
+            return HibernateProxyHelper.deproxy(cdmBase, TeamOrPersonBase.class).getCollectorTitleCache();
+        }
+           else if(property.equals(PROPERTY_COLLECTOR_TITLECACHE_PROTECTED) && cdmBase.isInstanceOf(Team.class)){
+            return HibernateProxyHelper.deproxy(cdmBase, Team.class).isProtectedCollectorTitleCache();
+        }
+           else if(property.equals(PROPERTY_FAMILY_NAME)
+                   && cdmBase.isInstanceOf(Person.class)){
+               return HibernateProxyHelper.deproxy(cdmBase, Person.class).getFamilyName();
+           }
+           else if(property.equals(PROPERTY_OTHER_NAME)
+                   && cdmBase.isInstanceOf(Person.class)){
+               return HibernateProxyHelper.deproxy(cdmBase, Person.class).getGivenName();
+           }
+           else if(property.equals(PROPERTY_INITIALS)
+                   && cdmBase.isInstanceOf(Person.class)){
+               return HibernateProxyHelper.deproxy(cdmBase, Person.class).getInitials();
+           }
+           else if(property.equals(PROPERTY_TEAM_HAS_MORE_MEMBERS)
+                   && cdmBase.isInstanceOf(Team.class)){
+               return HibernateProxyHelper.deproxy(cdmBase, Team.class).isHasMoreMembers();
+           }
+           return super.getPropertyValue(cdmBase, property);
+       }
+
+       @Override
+       public boolean isBooleanProperty(String property) {
+           if(property.equals(PROPERTY_TEAM_HAS_MORE_MEMBERS) || property.equals(PROPERTY_NOMENCLATURAL_TITLECACHE_PROTECTED)
+                   || property.equals(PROPERTY_COLLECTOR_TITLECACHE_PROTECTED)){
+               return true;
+           }
+           return super.isBooleanProperty(property);
+       }
+
+       @Override
+    public boolean isCacheProperty(String property) {
+        if(property.equals(PROPERTY_NOMENCLATURAL_TITLECACHE_PROTECTED)
+                || property.equals(PROPERTY_COLLECTOR_TITLECACHE_PROTECTED)){
+            return true;
+        }
+        return super.isCacheProperty(property);
+    }
+
     @Override
     public String getName() {
                return BulkEditorInputType.AGENT.label;
@@ -64,20 +136,16 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
                return instance;
        }
 
-       /** {@inheritDoc} */
        @Override
        public boolean isMergingEnabled() {
                return true;
        }
 
-
-       /** {@inheritDoc} */
        @Override
        public boolean isConvertingEnabled() {
                return true;
        }
 
-       /** {@inheritDoc} */
        @Override
     public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
                if (entity instanceof IMergable) {
@@ -112,7 +180,6 @@ public class AgentEditorInput extends AbstractBulkEditorInput<TeamOrPersonBase>
         return CdmStore.getService(IAgentService.class).countByTitle(configurator);
     }
 
-       /** {@inheritDoc} */
        @Override
        public List<TeamOrPersonBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {