-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy\r
-* http://www.e-taxonomy.eu\r
-*\r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-package eu.etaxonomy.taxeditor.bulkeditor.input;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.List;\r
-import java.util.UUID;\r
-\r
-import eu.etaxonomy.cdm.api.service.INameService;\r
-import eu.etaxonomy.cdm.api.service.ITaxonService;\r
-import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;\r
-import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;\r
-import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
-import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;\r
-import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.TaxonCreator;\r
-import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;\r
-import eu.etaxonomy.taxeditor.l10n.Messages;\r
-import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
-\r
-public class TaxonEditorInput extends AbstractBulkEditorInput<TaxonBase>{\r
-\r
- private static TaxonEditorInput instance;\r
-\r
- public static final String ID = "bulkeditor.input.taxon";\r
-\r
- private static final String PROPERTY_PUBLISH = "Publish";\r
-\r
- private List<TaxonName> saveNameCandidates = new ArrayList<>();\r
-\r
- public static AbstractBulkEditorInput getInstance() {\r
- if (instance == null) {\r
- instance = new TaxonEditorInput();\r
- }\r
-\r
- return instance;\r
- }\r
-\r
- @Override\r
- protected List<String> getPropertyKeys_internal() {\r
- List<String> propertyKeysInternal = new ArrayList<>();\r
- propertyKeysInternal.add(PROPERTY_PUBLISH);\r
- return propertyKeysInternal;\r
- }\r
-\r
- @Override\r
- public Object getPropertyValue(TaxonBase cdmBase, String property) {\r
- if(property.equals(PROPERTY_PUBLISH)){\r
- return cdmBase.isPublish();\r
- }\r
- return super.getPropertyValue(cdmBase, property);\r
- }\r
-\r
- @Override\r
- public boolean isBooleanProperty(String property) {\r
- if(property.equals(PROPERTY_PUBLISH)){\r
- return true;\r
- }\r
- return super.isBooleanProperty(property);\r
- }\r
-\r
- @Override\r
- public String getName() {\r
- return BulkEditorInputType.TAXON.label;\r
- }\r
-\r
- public static Object getID() {\r
- return ID;\r
- }\r
-\r
- @Override\r
- public List<IBulkEditorSortProvider<TaxonBase>> getSortProviders() {\r
- List<IBulkEditorSortProvider<TaxonBase>> sortProviders = super.getSortProviders();\r
-\r
- sortProviders.add(0, new IdentifiableEntitySortProvider<TaxonBase>());\r
-\r
- return sortProviders;\r
- }\r
-\r
- @Override\r
- public boolean isMergingEnabled() {\r
- return false;\r
- }\r
- @Override\r
- public TaxonBase save(TaxonBase entity) {\r
- return CdmStore.getService(ITaxonService.class).merge(entity, true).getMergedEntity();\r
- }\r
-\r
- @Override\r
- protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
- return CdmStore.getService(ITaxonService.class).countByTitle(configurator);\r
- }\r
-\r
- @Override\r
- public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {\r
-// IFindTaxaAndNamesConfigurator<TaxonBase> newConfig = new FindTaxaAndNamesConfiguratorImpl<>();\r
-// newConfig.setTitleSearchString(configurator.getTitleSearchStringSqlized());\r
-// newConfig.setMatchMode(MatchMode.ANYWHERE);\r
- List<String> propertyPaths = getPropertyPaths();\r
- configurator.setPropertyPaths(propertyPaths);\r
- List<TaxonBase> taxa = CdmStore.getSearchManager().findTaxa(configurator);\r
- List<TaxonBase> taxaCopy = new ArrayList<TaxonBase>();\r
- for (TaxonBase taxon:taxa){\r
-\r
- if (taxon instanceof Taxon){\r
- taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Taxon.class));\r
- }else{\r
- taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Synonym.class));\r
- }\r
- }\r
- return taxaCopy;\r
- }\r
-\r
- @Override\r
- protected TaxonBase loadEntity(UUID entityUuid) {\r
- List<String> propertyPaths = Arrays.asList(new String[]{});\r
- return CdmStore.getService(ITaxonService.class).load(entityUuid, propertyPaths);\r
- }\r
-\r
- @Override\r
- public boolean delete(TaxonBase entity, DeleteConfiguratorBase config) {\r
- if (entity instanceof Taxon){\r
- TaxonDeletionConfigurator taxonConfig = null;\r
- if (config instanceof TaxonDeletionConfigurator){\r
- taxonConfig = (TaxonDeletionConfigurator)config;\r
- }else{\r
-\r
- }\r
-\r
- return CdmStore.getService(ITaxonService.class).deleteTaxon(entity.getUuid(), taxonConfig, null) != null;\r
- } else{\r
- SynonymDeletionConfigurator synConfig = null;\r
- if (config instanceof SynonymDeletionConfigurator){\r
- synConfig = (SynonymDeletionConfigurator)config;\r
- }else{\r
-\r
- }\r
-\r
- return CdmStore.getService(ITaxonService.class).deleteSynonym(entity.getUuid(), synConfig) != null;\r
- }\r
- }\r
-\r
- @Override\r
- protected IEntityCreator<TaxonBase> createEntityCreator() {\r
- return new TaxonCreator();\r
- }\r
-\r
- @Override\r
- public void merge() {\r
-\r
- }\r
-\r
- @Override\r
- public void addSaveCandidate(TaxonBase taxonBase){\r
- if (taxonBase == null){\r
- MessagingUtils.info(Messages.TAXON_EDITOR_INPUT_Selection_lost);\r
- return;\r
- }\r
- if (!taxonBase.getName().getHybridChildRelations().isEmpty()){\r
- for (HybridRelationship rel: taxonBase.getName().getHybridChildRelations()){\r
- if (!rel.getParentName().isPersited()){\r
- this.saveNameCandidates.add(rel.getParentName());\r
- }\r
- if (!rel.getHybridName().isPersited()){\r
- this.saveNameCandidates.add(rel.getHybridName());\r
- }\r
- }\r
- }\r
-\r
- super.addSaveCandidate(taxonBase);\r
- }\r
-\r
- @Override\r
- public void saveModel(boolean resetMerge){\r
- CdmStore.getService(INameService.class).save(this.saveNameCandidates);\r
- super.saveModel(resetMerge);\r
- }\r
-\r
- private List<String> getPropertyPaths(){\r
- List<String> taxonBasePropertyPaths = Arrays.asList(new String[] {\r
- "descriptions.descriptionElements.*",\r
- "typeDesignations"});\r
-\r
- return taxonBasePropertyPaths;\r
- }\r
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+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.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.name.HybridRelationship;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
+import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
+import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.TaxonCreator;
+import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.IdentifiableEntitySortProvider;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class TaxonBulkEditorInput extends AbstractBulkEditorInput<TaxonBase>{
+
+ private static TaxonBulkEditorInput instance;
+
+ public static final String ID = "bulkeditor.input.taxon";
+
+ private static final String PROPERTY_PUBLISH = "Publish";
+
+ private List<TaxonName> saveNameCandidates = new ArrayList<>();
+
+ public static AbstractBulkEditorInput getInstance() {
+ if (instance == null) {
+ instance = new TaxonBulkEditorInput();
+ }
+
+ return instance;
+ }
+
+ @Override
+ protected List<String> getPropertyKeys_internal() {
+ List<String> propertyKeysInternal = new ArrayList<>();
+ propertyKeysInternal.add(PROPERTY_PUBLISH);
+ return propertyKeysInternal;
+ }
+
+ @Override
+ public Object getPropertyValue(TaxonBase cdmBase, String property) {
+ if(property.equals(PROPERTY_PUBLISH)){
+ return cdmBase.isPublish();
+ }
+ return super.getPropertyValue(cdmBase, property);
+ }
+
+ @Override
+ public boolean isBooleanProperty(String property) {
+ if(property.equals(PROPERTY_PUBLISH)){
+ return true;
+ }
+ return super.isBooleanProperty(property);
+ }
+
+ @Override
+ public String getName() {
+ return BulkEditorInputType.TAXON.label;
+ }
+
+ public static Object getID() {
+ return ID;
+ }
+
+ @Override
+ public List<IBulkEditorSortProvider<TaxonBase>> getSortProviders() {
+ List<IBulkEditorSortProvider<TaxonBase>> sortProviders = super.getSortProviders();
+
+ sortProviders.add(0, new IdentifiableEntitySortProvider<TaxonBase>());
+
+ return sortProviders;
+ }
+
+ @Override
+ public boolean isMergingEnabled() {
+ return false;
+ }
+ @Override
+ public TaxonBase save(TaxonBase entity) {
+ return CdmStore.getService(ITaxonService.class).merge(entity, true).getMergedEntity();
+ }
+
+ @Override
+ protected long countEntities(IIdentifiableEntityServiceConfigurator configurator) {
+ return CdmStore.getService(ITaxonService.class).countByTitle(configurator);
+ }
+
+ @Override
+ public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
+// IFindTaxaAndNamesConfigurator<TaxonBase> newConfig = new FindTaxaAndNamesConfiguratorImpl<>();
+// newConfig.setTitleSearchString(configurator.getTitleSearchStringSqlized());
+// newConfig.setMatchMode(MatchMode.ANYWHERE);
+ List<String> propertyPaths = getPropertyPaths();
+ configurator.setPropertyPaths(propertyPaths);
+ List<TaxonBase> taxa = CdmStore.getSearchManager().findTaxa(configurator);
+ List<TaxonBase> taxaCopy = new ArrayList<TaxonBase>();
+ for (TaxonBase taxon:taxa){
+
+ if (taxon instanceof Taxon){
+ taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Taxon.class));
+ }else{
+ taxaCopy.add(HibernateProxyHelper.deproxy(taxon, Synonym.class));
+ }
+ }
+ return taxaCopy;
+ }
+
+ @Override
+ protected TaxonBase loadEntity(UUID entityUuid) {
+ List<String> propertyPaths = Arrays.asList(new String[]{});
+ return CdmStore.getService(ITaxonService.class).load(entityUuid, propertyPaths);
+ }
+
+ @Override
+ public boolean delete(TaxonBase entity, DeleteConfiguratorBase config) {
+ if (entity instanceof Taxon){
+ TaxonDeletionConfigurator taxonConfig = null;
+ if (config instanceof TaxonDeletionConfigurator){
+ taxonConfig = (TaxonDeletionConfigurator)config;
+ }else{
+
+ }
+
+ return CdmStore.getService(ITaxonService.class).deleteTaxon(entity.getUuid(), taxonConfig, null) != null;
+ } else{
+ SynonymDeletionConfigurator synConfig = null;
+ if (config instanceof SynonymDeletionConfigurator){
+ synConfig = (SynonymDeletionConfigurator)config;
+ }else{
+
+ }
+
+ return CdmStore.getService(ITaxonService.class).deleteSynonym(entity.getUuid(), synConfig) != null;
+ }
+ }
+
+ @Override
+ protected IEntityCreator<TaxonBase> createEntityCreator() {
+ return new TaxonCreator();
+ }
+
+ @Override
+ public void merge() {
+
+ }
+
+ @Override
+ public void addSaveCandidate(TaxonBase taxonBase){
+ if (taxonBase == null){
+ MessagingUtils.info(Messages.TAXON_EDITOR_INPUT_Selection_lost);
+ return;
+ }
+ if (!taxonBase.getName().getHybridChildRelations().isEmpty()){
+ for (HybridRelationship rel: taxonBase.getName().getHybridChildRelations()){
+ if (!rel.getParentName().isPersited()){
+ this.saveNameCandidates.add(rel.getParentName());
+ }
+ if (!rel.getHybridName().isPersited()){
+ this.saveNameCandidates.add(rel.getHybridName());
+ }
+ }
+ }
+
+ super.addSaveCandidate(taxonBase);
+ }
+
+ @Override
+ public void saveModel(boolean resetMerge){
+ CdmStore.getService(INameService.class).save(this.saveNameCandidates);
+ super.saveModel(resetMerge);
+ }
+
+ private List<String> getPropertyPaths(){
+ List<String> taxonBasePropertyPaths = Arrays.asList(new String[] {
+ "descriptions.descriptionElements.*",
+ "typeDesignations"});
+
+ return taxonBasePropertyPaths;
+ }
}
\ No newline at end of file