*/
package eu.etaxonomy.taxeditor.bulkeditor.input;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
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;
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;
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) {
return CdmStore.getService(IAgentService.class).countByTitle(configurator);
}
- /** {@inheritDoc} */
@Override
public List<TeamOrPersonBase> listEntities(IIdentifiableEntityServiceConfigurator configurator) {