From 3f8e87edfd2f2efa693a3e170ed64560806a5c93 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 5 May 2014 13:01:16 +0000 Subject: [PATCH] adding a taxon bulk editor and changes because the delete methods does not throw exceptions anymore --- .gitattributes | 2 + .../OpenBulkEditorContributionItem.java | 2 +- .../bulkeditor/input/BulkEditorInputType.java | 10 +- .../bulkeditor/input/NameEditorInput.java | 4 +- .../bulkeditor/input/TaxonEditorInput.java | 104 ++++++++++++++++++ .../input/entitycreator/TaxonCreator.java | 55 +++++++++ .../name/operation/DeleteTaxonOperation.java | 9 +- .../TransientAgentService.java | 12 +- .../TransientClassificationService.java | 10 +- .../TransientDescriptionService.java | 10 +- .../TransientNameService.java | 12 +- .../TransientOccurenceService.java | 10 +- .../TransientReferenceService.java | 10 +- .../TransientTaxonService.java | 21 ++-- .../TransientTermService.java | 10 +- .../polytomous/operation/DeleteOperation.java | 8 +- ...ChangeAcceptedTaxonToSynonymOperation.java | 9 +- .../navigator/operation/DeleteOperation.java | 29 ++--- .../operation/DeleteTermBaseOperation.java | 20 +--- .../SelectFeatureTreeWizardPage.java | 13 +-- .../taxeditor/store/SearchManager.java | 9 ++ 21 files changed, 289 insertions(+), 80 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java create mode 100644 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java diff --git a/.gitattributes b/.gitattributes index ebd36d16b..65b875931 100644 --- a/.gitattributes +++ b/.gitattributes @@ -97,12 +97,14 @@ eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkedito eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameRelationshipEditorInput.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/ReferenceEditorInput.java -text +eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/AgentCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/GroupCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/NameCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/OccurrenceCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/ReferenceCreator.java -text +eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/UserCreator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/sortprovider/AbstractDateComparator.java -text eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/sortprovider/AbstractSortProvider.java -text diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java index d16a2b089..99f1a7d82 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java @@ -80,7 +80,7 @@ public class OpenBulkEditorContributionItem extends CompoundContributionItem { contributionItems.add(new Separator(groupName)); contributionItems.add(BulkEditorInputType.USER.createContributionItem()); contributionItems.add(BulkEditorInputType.GROUP.createContributionItem()); - + contributionItems.add(BulkEditorInputType.TAXON.createContributionItem()); return contributionItems.toArray(new IContributionItem[contributionItems.size()]); } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java index b40c5ac7a..c35441da3 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java @@ -17,6 +17,7 @@ import eu.etaxonomy.cdm.model.name.NameRelationship; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants; public enum BulkEditorInputType { @@ -26,7 +27,8 @@ public enum BulkEditorInputType { NAME_RELATIONSHIP("Name Relationship", NameRelationshipEditorInput.ID), OCCURRENCE("Specimens and Observations", OccurrenceEditorInput.ID), USER("User", UserEditorInput.ID), - GROUP("Group", GroupEditorInput.ID); + GROUP("Group", GroupEditorInput.ID), + TAXON("Taxon", TaxonEditorInput.ID); public String id; public String label; @@ -86,6 +88,8 @@ public enum BulkEditorInputType { return GROUP; } else if (User.class.isAssignableFrom(clazz)) { return USER; + } else if (Taxon.class.isAssignableFrom(clazz)){ + return TAXON; } return null; } @@ -105,6 +109,8 @@ public enum BulkEditorInputType { return USER; } else if (input instanceof GroupEditorInput) { return GROUP; + } else if (input instanceof TaxonEditorInput){ + return TAXON; } return null; } @@ -126,6 +132,8 @@ public enum BulkEditorInputType { return new UserEditorInput(); case GROUP: return new GroupEditorInput(); + case TAXON: + return new TaxonEditorInput(); default: throw new IllegalStateException( "No input class for the given input type defined."); diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java index 5cec310cd..7dc209328 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java @@ -110,8 +110,8 @@ public class NameEditorInput extends AbstractBulkEditorInput { } /** {@inheritDoc} - * @throws ReferencedObjectUndeletableException */ - public boolean delete(TaxonNameBase entity) throws ReferencedObjectUndeletableException { + **/ + public boolean delete(TaxonNameBase entity) { return CdmStore.getService(INameService.class).delete(entity) != null; } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java new file mode 100644 index 000000000..92b9023ee --- /dev/null +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/TaxonEditorInput.java @@ -0,0 +1,104 @@ +package eu.etaxonomy.taxeditor.bulkeditor.input; + +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.FindTaxaAndNamesConfiguratorImpl; +import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator; +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.model.taxon.TaxonBase; +import eu.etaxonomy.cdm.persistence.query.MatchMode; +import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator; +import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.NameCreator; +import eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator.TaxonCreator; +import eu.etaxonomy.taxeditor.store.CdmStore; + +public class TaxonEditorInput extends AbstractBulkEditorInput{ + + private static TaxonEditorInput instance; + /** Constant ID="bulkeditor.input.taxon" */ + public static final String ID = "bulkeditor.input.taxon"; + + /** + *

Getter for the field instance.

+ * + * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object. + */ + public static AbstractBulkEditorInput getInstance() { + if (instance == null) { + instance = new TaxonEditorInput(); + } + return instance; + } + + + @Override + public String getName() { + return BulkEditorInputType.TAXON.label; + } + + @Override + public String getToolTipText() { + return getName(); + } + + + /** + *

getID

+ * + * @return a {@link java.lang.Object} object. + */ + public static Object getID() { + return ID; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInput#isMergingEnabled() + */ + /** {@inheritDoc} */ + @Override + public boolean isMergingEnabled() { + return false; + } + @Override + public boolean save(TaxonBase entity) { + return CdmStore.getService(ITaxonService.class).saveOrUpdate(entity) != null; + } + + + + /** {@inheritDoc} */ + @Override + public List listEntities(IIdentifiableEntityServiceConfigurator configurator) { + IFindTaxaAndNamesConfigurator newConfig = new FindTaxaAndNamesConfiguratorImpl(); + newConfig.setTitleSearchString(configurator.getTitleSearchStringSqlized()); + newConfig.setMatchMode(MatchMode.ANYWHERE); + + return CdmStore.getSearchManager().findTaxa(configurator); + } + + + @Override + protected TaxonBase loadEntity(UUID entityUuid) { + List propertyPaths = Arrays.asList(new String[]{}); + return CdmStore.getService(ITaxonService.class).load(entityUuid, propertyPaths); + } + + + + /** {@inheritDoc} + * @throws ReferencedObjectUndeletableException */ + public boolean delete(TaxonBase entity) { + return CdmStore.getService(ITaxonService.class).delete(entity) != null; + } + @Override + protected IEntityCreator createEntityCreator() { + return new TaxonCreator(); + } + +} diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java new file mode 100644 index 000000000..526ed9d96 --- /dev/null +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/TaxonCreator.java @@ -0,0 +1,55 @@ +package eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator; + +import java.util.HashMap; +import java.util.Map; + +import eu.etaxonomy.cdm.model.agent.Person; +import eu.etaxonomy.cdm.model.agent.Team; +import eu.etaxonomy.cdm.model.name.Rank; +import eu.etaxonomy.cdm.model.name.TaxonNameBase; +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.preference.PreferencesUtil; +import eu.etaxonomy.taxeditor.store.CdmStore; + +public class TaxonCreator implements IEntityCreator{ + + NameCreator nameCreator; + @Override + public TaxonBase createEntity(String text) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TaxonBase createEntity(Object key, String text) { + TaxonBase taxonBase = null; + if (nameCreator == null){ + nameCreator = new NameCreator(); + } + if (Synonym.class.equals(key)){ + taxonBase = Synonym.NewInstance(nameCreator.createEntity(text), null); + } else{ + taxonBase = Taxon.NewInstance(nameCreator.createEntity(text), null); + } + + return taxonBase; + } + + @Override + public Map getKeyLabelPairs() { + Map result = new HashMap(); + result.put(Synonym.class, "Synonym"); + result.put(Taxon.class, "Taxon"); + return result; + } + + @Override + public boolean savesEntity() { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java index b7b3b75e2..8274cc91f 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java @@ -66,15 +66,10 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{ controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration(); ITaxonService service = controller.getTaxonService(); - try { + - service.deleteTaxon(element, new TaxonDeletionConfigurator(), classification); + String result = service.deleteTaxon(element, new TaxonDeletionConfigurator(), classification); - } catch (DataChangeNoRollbackException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - - } //closeObsoleteEditor(taxon); monitor.worked(40); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java index d31151130..313ef06d0 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientAgentService.java @@ -21,6 +21,7 @@ import org.hibernate.criterion.Criterion; import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.IAgentService; +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.api.service.pager.Pager; @@ -284,7 +285,7 @@ public class TransientAgentService implements IAgentService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(AgentBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(AgentBase persistentObject) { return defaultAgentService.delete(persistentObject); } @@ -735,7 +736,14 @@ public class TransientAgentService implements IAgentService { @Override public Pager findTitleCache(Class clazz, String queryString, Integer pageSize, Integer pageNumber, List orderHints, MatchMode matchMode) { return defaultAgentService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode); - }; + } + + @Override + public List isDeletable(AgentBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + }; diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java index b9890789b..04c4b4520 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientClassificationService.java @@ -21,6 +21,7 @@ import org.hibernate.criterion.Criterion; import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.IClassificationService; +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.api.service.pager.Pager; @@ -299,7 +300,7 @@ public class TransientClassificationService implements IClassificationService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(Classification persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(Classification persistentObject) { return defaultClassificationService.delete(persistentObject); } @@ -914,6 +915,13 @@ public class TransientClassificationService implements IClassificationService { return defaultClassificationService.listChildNodesOfTaxon(taxonUuid, classificationUuid, pageSize, pageIndex, propertyPaths); } + @Override + public List isDeletable(Classification object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java index aa0ba7293..f53599ca6 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientDescriptionService.java @@ -22,6 +22,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.DistributionTree; import eu.etaxonomy.cdm.api.service.IDescriptionService; +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.api.service.pager.Pager; @@ -277,7 +278,7 @@ public class TransientDescriptionService implements IDescriptionService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(DescriptionBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(DescriptionBase persistentObject) { return defaultDescriptionService.delete(persistentObject); } @@ -1094,4 +1095,11 @@ public class TransientDescriptionService implements IDescriptionService { return defaultDescriptionService.getOrderedDistributions(taxonDescriptions, subAreaPreference, statusOrderPreference, hideMarkedAreas, omitLevels, propertyPaths); } + @Override + public List isDeletable(DescriptionBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java index 0ff84199d..50606709f 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientNameService.java @@ -24,6 +24,7 @@ import org.hibernate.criterion.Criterion; import org.hibernate.envers.query.criteria.AuditCriterion; 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.config.NameDeletionConfigurator; import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; @@ -218,7 +219,7 @@ public class TransientNameService implements INameService { * @see eu.etaxonomy.cdm.api.service.INameService#delete(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator) */ @Override - public UUID delete(TaxonNameBase name, NameDeletionConfigurator config) throws ReferencedObjectUndeletableException { + public String delete(TaxonNameBase name, NameDeletionConfigurator config) { return defaultNameService.delete(name, config); } @@ -255,7 +256,7 @@ public class TransientNameService implements INameService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(TaxonNameBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(TaxonNameBase persistentObject) { return defaultNameService.delete(persistentObject); } @@ -1190,5 +1191,12 @@ public class TransientNameService implements INameService { return defaultNameService.getTaggedName(uuid); } + @Override + public List isDeletable(TaxonNameBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java index 3b28f7296..5a226f607 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java @@ -28,6 +28,7 @@ import org.hibernate.search.spatial.impl.Rectangle; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException; import eu.etaxonomy.cdm.api.service.IOccurrenceService; +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.api.service.pager.Pager; @@ -276,7 +277,7 @@ public class TransientOccurenceService implements IOccurrenceService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(SpecimenOrObservationBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(SpecimenOrObservationBase persistentObject) { return defaultService.delete(persistentObject); } @@ -894,5 +895,12 @@ public class TransientOccurenceService implements IOccurrenceService { return defaultService.moveSequence(from, to, sequence); } + @Override + public List isDeletable(SpecimenOrObservationBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java index 72571f0bf..932cae0f7 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java @@ -21,6 +21,7 @@ import org.hibernate.criterion.Criterion; import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.IReferenceService; +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.api.service.pager.Pager; @@ -273,7 +274,7 @@ public class TransientReferenceService implements IReferenceService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(Reference persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(Reference persistentObject) { return defaultReferenceService.delete(persistentObject); } @@ -690,5 +691,12 @@ public class TransientReferenceService implements IReferenceService { return defaultReferenceService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode); } + @Override + public List isDeletable(Reference object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java index ed5bc21d0..da1c1752e 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTaxonService.java @@ -26,6 +26,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.api.service.TaxaAndNamesSearchMode; +import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase; import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator; @@ -255,7 +256,7 @@ public class TransientTaxonService implements ITaxonService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(TaxonBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(TaxonBase persistentObject) { return defaultTaxonService.delete(persistentObject); } @@ -1365,24 +1366,23 @@ public class TransientTaxonService implements ITaxonService { * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator) */ @Override - public void deleteSynonym(Synonym arg0, SynonymDeletionConfigurator arg1) { - defaultTaxonService.deleteSynonym(arg0, arg1); + public String deleteSynonym(Synonym arg0, SynonymDeletionConfigurator arg1) { + return defaultTaxonService.deleteSynonym(arg0, arg1); } /* (non-Javadoc) * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator) */ @Override - public void deleteSynonym(Synonym arg0, Taxon arg1, SynonymDeletionConfigurator arg2) { - defaultTaxonService.deleteSynonym(arg0, arg1, arg2); + public String deleteSynonym(Synonym arg0, Taxon arg1, SynonymDeletionConfigurator arg2) { + return defaultTaxonService.deleteSynonym(arg0, arg1, arg2); } /* (non-Javadoc) * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator, eu.etaxonomy.cdm.model.taxon.Classification) */ @Override - public UUID deleteTaxon(Taxon arg0, TaxonDeletionConfigurator arg1, Classification arg2) - throws DataChangeNoRollbackException { + public String deleteTaxon(Taxon arg0, TaxonDeletionConfigurator arg1, Classification arg2) { return defaultTaxonService.deleteTaxon(arg0, arg1, arg2); } @@ -1421,6 +1421,13 @@ public class TransientTaxonService implements ITaxonService { return defaultTaxonService.listAcceptedTaxaFor(synonymUuid, classificationUuid, pageSize, pageNumber, orderHints, propertyPaths); } + @Override + public List isDeletable(TaxonBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java index f2b6c5627..c80ca961d 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientTermService.java @@ -25,6 +25,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion; import eu.etaxonomy.cdm.api.service.DeleteResult; import eu.etaxonomy.cdm.api.service.ITermService; +import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator; import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException; @@ -330,7 +331,7 @@ public class TransientTermService implements ITermService { * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase) */ @Override - public UUID delete(DefinedTermBase persistentObject) throws ReferencedObjectUndeletableException{ + public String delete(DefinedTermBase persistentObject) { return defaultTermService.delete(persistentObject); } @@ -857,4 +858,11 @@ public class TransientTermService implements ITermService { return defaultTermService.getDefinedTermByIdInVocabulary(id, vocabularyUuid, clazz, pageSize, pageNumber); } + @Override + public List isDeletable(DefinedTermBase object, + DeleteConfiguratorBase config) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/operation/DeleteOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/operation/DeleteOperation.java index 967c481e7..abb15e3a4 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/operation/DeleteOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/operation/DeleteOperation.java @@ -52,11 +52,9 @@ public class DeleteOperation extends AbstractPersistentPostOperation { public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { bind(); - try{ - CdmStore.getService(IPolytomousKeyService.class).delete(key); - }catch(ReferencedObjectUndeletableException e){ - throw new ExecutionException(e.getMessage()); - } + + String result = CdmStore.getService(IPolytomousKeyService.class).delete(key); + return postExecute(null); } diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java index 680a2d308..697b46af5 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/ChangeAcceptedTaxonToSynonymOperation.java @@ -74,12 +74,9 @@ public class ChangeAcceptedTaxonToSynonymOperation extends bind(); Synonym synonym = null; Taxon oldTaxon = (Taxon) HibernateProxyHelper.deproxy(((TaxonNode) taxonNode).getTaxon()); - try { - synonym = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode((TaxonNode) taxonNode, newAcceptedTaxonNode, null, null, null); - } catch (DataChangeNoRollbackException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + + synonym = CdmStore.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode((TaxonNode) taxonNode, newAcceptedTaxonNode, null, null, null); + monitor.worked(40); return postExecute(oldTaxon); diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java index afad39fc6..21629870e 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java @@ -10,7 +10,9 @@ package eu.etaxonomy.taxeditor.navigation.navigator.operation; +import java.util.List; import java.util.Set; +import java.util.UUID; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.operations.IUndoContext; @@ -99,13 +101,9 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ //((TaxonNode) treeNode).delete(); element = ((TaxonNode)taxonNode).getTaxon(); - try { - service.deleteTaxonNode((TaxonNode)taxonNode, config); - } catch (DataChangeNoRollbackException e) { - - throw new ExecutionException(e.getMessage()); - - } + + String result = service.deleteTaxonNode((TaxonNode)taxonNode, config); + //TODO:if result is not a UUIDstring then pop up a message box }else if(taxonNode != null && taxonNode instanceof Classification){ Classification taxonomicTree = (Classification) taxonNode; @@ -114,12 +112,9 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ return null; } }*/ - try{ - CdmStore.getService(IClassificationService.class).delete(taxonomicTree); - }catch(ReferencedObjectUndeletableException e){ - throw new ExecutionException(e.getMessage()); - } - + + String result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree); + /*}else{ try{ @@ -129,11 +124,9 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ } }*/ } else { - try { - service.deleteTaxonNodes(treeNodes, config); - } catch (DataChangeNoRollbackException e) { - throw new ExecutionException(e.getMessage()); - } + + List result =service.deleteTaxonNodes(treeNodes, config); + } monitor.worked(40); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java index 52ebe22c7..c0d897194 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java @@ -78,13 +78,9 @@ public class DeleteTermBaseOperation extends AbstractPostTaxonOperation { } definedEditorInput.getVocabularies().remove((TermVocabulary)termBase); - try{ - CdmStore.getService(IVocabularyService.class).delete((TermVocabulary)termBase); - } catch (DataChangeNoRollbackException e) { - - throw new ExecutionException(e.getMessage()); - - } + + String result = CdmStore.getService(IVocabularyService.class).delete((TermVocabulary)termBase); + } else if (termBase instanceof DefinedTermBase) { @@ -117,13 +113,9 @@ public class DeleteTermBaseOperation extends AbstractPostTaxonOperation { if(vocabulary != null){ vocabulary.removeTerm(definedTermBase); } - try{ - CdmStore.getService(ITermService.class).delete((DefinedTermBase)termBase); - } catch (DataChangeNoRollbackException e) { - - throw new ExecutionException(e.getMessage()); - - } + + String result = CdmStore.getService(ITermService.class).delete((DefinedTermBase)termBase); + } return postExecute(termBase); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java index b53e1ba83..de74faa76 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java @@ -161,16 +161,9 @@ public class SelectFeatureTreeWizardPage extends WizardPage implements ISelectio IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); for(Object element : selection.toArray()){ viewer.remove(element); - try{ - CdmStore.getService(IFeatureTreeService.class).delete((FeatureTree) element); - } catch (DataChangeNoRollbackException d) { - - StoreUtil.warningDialog( - "Feature can not be removed", - this, - "The selected feature can not be removed from the feature tree."); - - } + + String result = CdmStore.getService(IFeatureTreeService.class).delete((FeatureTree) element); + viewer.setSelection(new StructuredSelection(new Object[0])); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java index 99eb03129..91316ef42 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/SearchManager.java @@ -101,6 +101,8 @@ public class SearchManager { return CdmStore.getService(ITaxonService.class).findTaxaAndNamesForEditor(configurator); } + + /** *

findReferences

@@ -240,5 +242,12 @@ public class SearchManager { return configurator.getTitleSearchString().replace(WILDCARD, "%"); } + public List findTaxa(IIdentifiableEntityServiceConfigurator configurator) { + if(checkLargeResult(CdmStore.getService(ITaxonService.class).countByTitle(configurator))){ + return CdmStore.getService(ITaxonService.class).findByTitle(configurator).getRecords(); + } + return NO_RESULTS; + } + } -- 2.34.1