merge-update from trunk\nadded throws to delete methods of transient services
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Dec 2013 12:09:31 +0000 (12:09 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 2 Dec 2013 12:09:31 +0000 (12:09 +0000)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java

index 4257245110c0b00c00b54fc9b4a357318f499acd..42396edbde7b2c225d0ceef02dabb945197c105d 100644 (file)
@@ -22,6 +22,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion;
 
 import eu.etaxonomy.cdm.api.service.IAgentService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.agent.Address;
@@ -283,7 +284,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) {
+    public UUID delete(AgentBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultAgentService.delete(persistentObject);
     }
 
index c316e5e1b52ece992e701e22b71023db9b4692df..856dc47dc9c443198a1ede03543e7d9d26ada5c9 100644 (file)
@@ -22,6 +22,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion;
 
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -298,7 +299,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) {
+    public UUID delete(Classification persistentObject) throws ReferencedObjectUndeletableException{
         return defaultClassificationService.delete(persistentObject);
     }
 
index 33aa4228e92afd02a166279b4563ac9412c340c0..41795641058ac46703b7e58cb0b28330c2e9c903 100644 (file)
@@ -21,6 +21,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion;
 
 import eu.etaxonomy.cdm.api.service.ICollectionService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -241,7 +242,7 @@ public class TransientCollectionService implements ICollectionService {
      * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
      */
     @Override
-    public UUID delete(Collection persistentObject) {
+    public UUID delete(Collection persistentObject) throws ReferencedObjectUndeletableException{
         return defaultCollectionService.delete(persistentObject);
     }
 
index b4d519cb54db07774419a5585a6ed169a4eced8d..b896316cca1e2971ea8eafacaf82214b53b41fd3 100644 (file)
@@ -23,6 +23,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.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -276,7 +277,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) {
+    public UUID delete(DescriptionBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultDescriptionService.delete(persistentObject);
     }
 
index 420c293c042a55bb7019e1dac1a79d58a35b5b3a..13f889cc444a7949492435f57398242d886fdbd2 100644 (file)
@@ -255,7 +255,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) {
+    public UUID delete(TaxonNameBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultNameService.delete(persistentObject);
     }
 
index c42ae7f578b3ab95126fae79a3c6a2545c4c9726..83f1f6619edec7d0ec6d59173774ce0e0b745557 100644 (file)
@@ -29,6 +29,7 @@ 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.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.SearchResult;
 import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
@@ -273,7 +274,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) {
+    public UUID delete(SpecimenOrObservationBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultService.delete(persistentObject);
     }
 
index cfcaca5e1c82a788355bcedaf7249f2d48203fcd..c38e0f42efaed692676e682ba82c02823514ffce 100644 (file)
@@ -22,6 +22,7 @@ import org.hibernate.envers.query.criteria.AuditCriterion;
 
 import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -272,7 +273,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) {
+    public UUID delete(Reference persistentObject) throws ReferencedObjectUndeletableException{
         return defaultReferenceService.delete(persistentObject);
     }
 
index 628fc1389a63bdae7a909b263edf5bfe8f111e38..587b20bbbbabc06d99bf1d7100d2b9329808a18e 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.api.service.search.LuceneMultiSearchException;
 import eu.etaxonomy.cdm.api.service.search.SearchResult;
@@ -254,7 +255,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) {
+    public UUID delete(TaxonBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultTaxonService.delete(persistentObject);
     }
 
index 1dfb05d4956ddc2c64816326be72f3341e1096d4..d8b1269ba9cdc97c6e758b9dfc97ea70956ea72d 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -329,7 +330,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) {
+    public UUID delete(DefinedTermBase persistentObject) throws ReferencedObjectUndeletableException{
         return defaultTermService.delete(persistentObject);
     }
 
index d632a6bcbcbfa7b764a39958b26b5329dad74575..2df882e501934e06fa775e58f4ebfbb5a3b4e432 100644 (file)
@@ -62,9 +62,8 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
 
                String plural = selection.size() > 1 ? "s" : "";
                // Prompt user for confirmation
-               if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Are you sure you want to delete the selected node" + plural +"?")){
-                       return null;
-               }
+               
+               
 
                Iterator selectionIterator = selection.iterator();
                Set<ITaxonTreeNode> treeNodes = new HashSet<ITaxonTreeNode>();
@@ -85,17 +84,27 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                if (treeNodes.size() == 1 ){
                        try {
                                
+                               ITaxonTreeNode treeNode = treeNodes.iterator().next();
+                               ITaxonTreeNode taxonNode =treeNode;
+                               
+                               if (taxonNode instanceof Classification && taxonNode.hasChildNodes()){
+                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification? The tree has children, they will be deleted, too")){
+                                               return null;
+                                       }
+                               } else if (taxonNode instanceof Classification && !taxonNode.hasChildNodes()){
+                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the classification?")){
+                                               return null;
+                                       }
+                               } else {
+                                       if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
+                                               return null;
+                                       }
+                               }
        
                                if (allEditorsClosed){
-                                       ITaxonTreeNode treeNode = treeNodes.iterator().next();
-                                       /*if (treeNode instanceof Classification){
-                                               operation = new DeleteOperation(
-                                                               event.getCommand().getName(), NavigationUtil.getUndoContext(),
-                                                               treeNodes, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
-                       
-                                               NavigationUtil.executeOperation(operation);
-                                       }else {*/
-                                               ITaxonTreeNode taxonNode =treeNode;
+                                       /*if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+                                               return null;
+                                       }*/
                                                operation = new DeleteOperation(
                                                                event.getCommand().getName(), NavigationUtil.getUndoContext(),
                                                                taxonNode, new TaxonDeletionConfigurator(), taxonNavigator, taxonNavigator);
@@ -111,6 +120,9 @@ public class DeleteHandler extends AbstractHandler implements IHandler{
                        }
                } else{
                        try{
+                               if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected nodes?")){
+                                       return null;
+                               }
                                if (allEditorsClosed){
                                        operation = new DeleteOperation(
                                                        event.getCommand().getName(), NavigationUtil.getUndoContext(),
index 49c6f77961672d07d05f151e50074920e8933c19..9cd017a222c44819d6cbb38fbc6bc7dcd39ec05a 100644 (file)
@@ -17,6 +17,8 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.handlers.HandlerUtil;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
@@ -113,16 +115,25 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
                                
                        }else if(taxonNode != null && taxonNode instanceof Classification){
                                Classification taxonomicTree = (Classification) taxonNode;
-                               if(taxonomicTree.hasChildNodes()){
-                                       StoreUtil.warningDialog("Tree is not empty", this, "It is not possible to delete a Taxonomic Tree that " +
-                                                       "is not empty. Please delete included taxa first");
-                               }else{
+                               /*if(taxonomicTree.hasChildNodes()){
+                                       if(! MessageDialog.openConfirm(null, "Confirm Deletion", "The selected tree has children, do yu realy want to delete the whole tree with its children?")){
+                                               return null;
+                                       }
+                               }*/
+                               try{
+                                       CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
+                               }catch(ReferencedObjectUndeletableException e){
+                                       throw new ExecutionException(e.getMessage());
+                               }
+                                       
+                                       
+                               /*}else{
                                        try{
                                        CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
                                        }catch(ReferencedObjectUndeletableException e){
                                                throw new ExecutionException(e.getMessage());
                                        }
-                               }
+                               }*/
                        } else {
                                try {
                                        service.deleteTaxonNodes(treeNodes, config);