bug fixxing in bulk editor and referencing objects view
authorKatja Luther <k.luther@bgbm.org>
Tue, 10 Mar 2015 09:06:28 +0000 (09:06 +0000)
committerKatja Luther <k.luther@bgbm.org>
Tue, 10 Mar 2015 09:06:28 +0000 (09:06 +0000)
bug fixing in deletion of names and homotypical groups

13 files changed:
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AgentEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/BulkEditorInputType.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/OccurrenceEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/UserEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/entitycreator/NameCreator.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicGroupOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicalGroupBasionymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java

index 95c415566bf6b265b617ef22556c62642e832341..1b0076fbf0f0d57b8771b35ac21c003dd6e0bc71 100644 (file)
@@ -15,6 +15,7 @@ import java.util.UUID;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IEditorInput;
@@ -90,11 +91,7 @@ public class DeleteHandler extends AbstractHandler {
                                IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                                
                                IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;
-                                IViewPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
-                                                   .findView("eu.etaxonomy.taxeditor.bulkeditor.view.referencingobjects");
-                                   if (part != null){
-                                               ((ReferencingObjectsView)part).dispose();
-                                       }
+                               
                                
                                for(Object object : structuredSelection.toList()){
                                        
@@ -144,17 +141,19 @@ public class DeleteHandler extends AbstractHandler {
                                        } catch (Exception e){
                                                MessagingUtils.messageDialog("Exception occured. Could not delete", getClass(), e.getMessage(), null);
                                        }
-                                       if (result.isError() || result.isAbort()|| !result.getExceptions().isEmpty()){
+                                       if (result.isError() || result.isAbort()){
                                                if (!result.getExceptions().isEmpty()) {
-                                                       MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().get(0).getMessage(), null);
+                                                       MessagingUtils.messageDialog("Could not delete", getClass(), result.getExceptions().toString(), null);
                                                }else{
                                                        MessagingUtils.messageDialog("Could not delete", getClass(), "The object could not be deleted. An exception occured.", null);
                                                        
                                                }
                                        }
-                                       if (result.isOk() && result.getExceptions().isEmpty()){
+                                       if (result.isOk() ){
                                                ((BulkEditor) editor).removeAnnotatedLine(annotation);
-                                               
+                                               if(result.getUpdatedObjects().size() != 0 && !result.getExceptions().isEmpty()){
+                                                       MessageDialog.openInformation(null, "Delete successfull", "The Synonym could be deleted, but there is an updated object: " + result.getExceptions().toString());
+                                               }
 
                                        }
                                        if (part != null){
index f9d5845ccfce29db85ab0997ad1cb3124dcbac3f..054392c4805b7bfc8fc4030bdb4ade2935fa1f05 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -20,12 +21,14 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
 import eu.etaxonomy.cdm.api.service.ICommonService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.merge.IMergable;
 import eu.etaxonomy.cdm.strategy.merge.MergeException;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
@@ -58,6 +61,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
+       
+       private static Class serviceClass;
 
        /**
         * <p>NewInstance</p>
@@ -66,6 +71,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
         */
        static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
+               
                return BulkEditorInputType.getInput(inputType);
        }
 
@@ -101,7 +107,10 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @param entityUuid a {@link java.util.UUID} object.
         * @return a T object.
         */
-       protected abstract T loadEntity(UUID entityUuid);
+       protected T loadEntity(UUID entityUuid) {
+               List<String> propertyPaths = Arrays.asList(new String[]{}); 
+               return (T) CdmStore.getService(serviceClass).load(entityUuid, propertyPaths);
+       }
 
        private void setEntityUuid(UUID entityUuid){
                this.entityUuid = entityUuid;
@@ -179,7 +188,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
 
                if(getEntityUuid() != null){
 
-                       T entity = loadEntity(getEntityUuid());
+                       T entity = (T) loadEntity(getEntityUuid());
                        entityList.add(entity);
                        model = entityList;
                }
@@ -191,6 +200,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                        entityList = listEntities(configurator);
 
                        Collections.sort(entityList, queryComparator);
+                       
 
                }
 
index 386e714ebbd18f537a20d76a8a63e96a93cc3830..0ad0400a63e298dcd36cb7764f099343fdc71b26 100644 (file)
@@ -106,12 +106,12 @@ public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {
                return CdmStore.getSearchManager().findTeamOrPersons(configurator);
        }
        
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        public AgentBase loadEntity(UUID uuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IAgentService.class).load(uuid, propertyPaths);
-       }
+       }*/
 
        
        public boolean delete(AgentBase entity) throws ReferencedObjectUndeletableException  {
@@ -122,6 +122,7 @@ public class AgentEditorInput extends AbstractBulkEditorInput<AgentBase> {
 
        /** {@inheritDoc} */
        public boolean save(AgentBase entity) {
+               
                return CdmStore.getService(IAgentService.class).saveOrUpdate(entity) != null;
        }
 
index c35441da3cd22ccbff41e06f137c6ff9f14486c8..eea9b6b501027ee3ee9d600acbada63a870730a9 100644 (file)
@@ -10,6 +10,15 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.menus.CommandContributionItem;
 import org.eclipse.ui.menus.CommandContributionItemParameter;
 
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.service.ReferenceServiceImpl;
+import eu.etaxonomy.cdm.io.dwca.in.INamespaceReader;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
@@ -139,4 +148,29 @@ public enum BulkEditorInputType {
                                        "No input class for the given input type defined.");
                }
        }
+       
+       public static Class getServiceClass(
+                       BulkEditorInputType inputType) {
+               switch (inputType) {
+               case REFERENCE:
+                       return IReferenceService.class;
+               case NAME:
+                       return INameService.class;
+               case AGENT:
+                       return IAgentService.class;
+               case OCCURRENCE:
+                       return IOccurrenceService.class;
+               case NAME_RELATIONSHIP:
+                       return INameService.class;
+               case USER:
+                       return IUserService.class;
+               case GROUP:
+                       return IGroupService.class;
+               case TAXON:
+                       return ITaxonService.class;
+               default:
+                       throw new IllegalStateException(
+                                       "No input class for the given input type defined.");
+               }
+       }
 }
\ No newline at end of file
index eb5fb3695de01942d23500117fbb0bbdb4e08f1c..98724faa802a6a0942d057e5507524cf43dc5873 100644 (file)
@@ -86,13 +86,13 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
 
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-        */
+        
        @Override
        protected Group loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IGroupService.class).load(entityUuid, propertyPaths);
        }
-
+*/
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
         */
index 7dc209328f8c0ea0670be559422b31790f1d97ec..c9298f93bd147e80e77643c98f5c56409395dedc 100644 (file)
@@ -102,13 +102,13 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
                return CdmStore.getSearchManager().findNames(configurator);
        }
 
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        public TaxonNameBase loadEntity(UUID uuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(INameService.class).load(uuid, propertyPaths);
        }
-
+*/
        /** {@inheritDoc} 
         **/
        public boolean delete(TaxonNameBase entity)  {
index d9417cd81b0b74ab2c1504a4f3784b7f6dfb7183..8e954f8bd163e28d137a6295c6aee14b8cbc802c 100644 (file)
@@ -69,12 +69,12 @@ public class OccurrenceEditorInput extends AbstractBulkEditorInput<SpecimenOrObs
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
         */
-       /** {@inheritDoc} */
+       /** {@inheritDoc} 
        @Override
        protected SpecimenOrObservationBase loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{});
                return CdmStore.getService(IOccurrenceService.class).load(entityUuid, propertyPaths);
-       }
+       }*/
 
        /* (non-Javadoc)
         * @see org.eclipse.ui.IEditorInput#getName()
index 2d8a7e406807c209c2e5f2c14e6b3eddd19e5f2b..c80733b1e807b558638e0ae860322e959e22f87b 100644 (file)
@@ -87,13 +87,13 @@ public class UserEditorInput extends AbstractBulkEditorInput<User> {
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#loadEntity(java.util.UUID)
-        */
+       
        @Override
        protected User loadEntity(UUID entityUuid) {
                List<String> propertyPaths = Arrays.asList(new String[]{}); 
                return CdmStore.getService(IUserService.class).load(entityUuid, propertyPaths);
        }
-
+ */
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput#createEntityCreator()
         */
index 776b223ea4a1d2359240f4f3d0e5be28686a3ad6..c0fad7860da2ce37bdc6f6a1ea5635ccb6c77a4b 100644 (file)
@@ -35,7 +35,8 @@ public class NameCreator implements IEntityCreator<TaxonNameBase> {
        /** {@inheritDoc} */
        public TaxonNameBase createEntity(String text) {
                TaxonNameBase name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);
-               name.setTitleCache(text);
+               name.setTitleCache(text, true);
+               //name.setTitleCache(text);
                return name;
        }
 
index e031272ddb76842fe8e90bbc9e1f10384018b8ab..fbd5000f4e715fd77206fe1a8a5dddeb2c0c8cd5 100644 (file)
@@ -33,6 +33,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.ui.INullSelectionListener;
+import org.eclipse.ui.ISelectionListener;
 
 import org.eclipse.ui.IWorkbenchPart;
 
@@ -71,7 +72,7 @@ import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
  * @created 08.07.2009
  * @version 1.0
  */
-public class ReferencingObjectsView extends AbstractCdmViewPart implements INullSelectionListener{
+public class ReferencingObjectsView extends AbstractCdmViewPart{
        private static final Logger logger = Logger
                        .getLogger(ReferencingObjectsView.class);
 
@@ -81,6 +82,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        private TableViewer viewer;
 
        private String referencedObjectTitleCache;
+       private ConversationHolder conversation; 
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
@@ -89,7 +91,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        @Override
        public void createViewer(Composite parent) {
                selectionService.addSelectionListener(this);
-               
+               conversation = CdmStore.createConversation();
                viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                                | SWT.V_SCROLL | SWT.FULL_SELECTION);
                createColumns(viewer);
@@ -140,10 +142,12 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                                        @Override
                                        public void run() {
                                                if (entityUUID != null){
-                                                       ConversationHolder conversation = CdmStore.createConversation();
+                                                       
                                                        List<CdmBase> referencingObjects = getReferencingObjects(entityUUID, objectClass);
-                                                       conversation.close();
+                                                       
                                                        updateView(referencingObjects);
+                                                       
+                                                       
                                                }
                                        }
                                });
@@ -168,7 +172,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
                        referencedObject = CdmStore.getService(INameService.class).load(entity);
                } else if (objectClass.getSuperclass().equals(TaxonBase.class)){
                        referencedObject = CdmStore.getService(ITaxonService.class).load(entity);
-               } else if (objectClass.getSuperclass().equals(Reference.class)){
+               } else if (objectClass.equals(Reference.class)){
                        referencedObject = CdmStore.getService(IReferenceService.class).load(entity);
                } else if (objectClass.getSuperclass().equals(SpecimenOrObservationBase.class)){
                        referencedObject = CdmStore.getService(IOccurrenceService.class).load(entity);
@@ -223,11 +227,11 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        private void updateView(List<CdmBase> referencingObjects) {
                if (viewer != null && !viewer.getControl().isDisposed()){
                        viewer.setInput(referencingObjects);
-                       /*if (referencedObjectTitleCache != null){
+                       if (referencedObjectTitleCache != null){
                                setContentDescription("'" + referencedObjectTitleCache + "' is referenced by:");
                        } else {
                                setContentDescription("");
-                       }*/
+                       }
                        showViewer();
                }
        }
@@ -262,7 +266,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        /** {@inheritDoc} */
        @Override
        public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {
-               this.part = part;
+       //      this.part = part;
                
                updateReferencingObjects(((IdentifiableEntity) selection.getFirstElement()).getUuid(),selection.getFirstElement().getClass() );
        }
@@ -270,6 +274,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        /** {@inheritDoc} */
        @Override
        public void dispose() {
+               conversation.close();
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                super.dispose();
@@ -304,6 +309,7 @@ public class ReferencingObjectsView extends AbstractCdmViewPart implements INull
        }
        
        public void refresh(){
+               
                selectionService.removePostSelectionListener(this);
                selectionService.removeSelectionListener(this);
                selectionService.addPostSelectionListener(this);
index 06a3013b87f9c25cb86ea782bb1d34bba62d9f5c..89a8bf7cff49ea6e9c28996775b27bc25a33e8b8 100644 (file)
@@ -85,7 +85,7 @@ public class ChangeHomotypicGroupOperation extends AbstractPostTaxonOperation {
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
 
                // Switch groups
-               oldHomotypicalGroup.removeTypifiedName(synonymName);
+               oldHomotypicalGroup.removeTypifiedName(synonymName, false);
                monitor.worked(40);
                newHomotypicalGroup = HibernateProxyHelper.deproxy(newHomotypicalGroup, HomotypicalGroup.class);
                newHomotypicalGroup.addTypifiedName(synonymName);
@@ -134,7 +134,7 @@ public class ChangeHomotypicGroupOperation extends AbstractPostTaxonOperation {
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
 
                // Switch groups
-               newHomotypicalGroup.removeTypifiedName(synonymName);
+               newHomotypicalGroup.removeTypifiedName(synonymName, false);
                oldHomotypicalGroup.addTypifiedName(synonymName);
 
                // Redraw editor if it exists
index 8a462f6ee35925426df0620fe869e2b0e80050e3..679b3396e261973291c1feebb38623e9219ab80d 100644 (file)
@@ -24,7 +24,6 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.cdm.remote.dto.tdwg.voc.TaxonName;
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
index 9cdf90fc566f11606278881c901a4633761de2d6..7ac2fd7de10e7f1bdb47a9a850a355d09800485f 100644 (file)
@@ -82,6 +82,8 @@ public class DeleteSynonymOperation extends AbstractPostTaxonOperation {
                                        DeleteResult result = service.deleteSynonym(synonym, null);
                                        if (result.isError()){
                                                MessageDialog.openError(null, "Delete failed", result.getExceptions().get(0).getMessage());
+                                       } else if (result.getUpdatedObjects().size() != 0){
+                                               MessageDialog.openInformation(null, "Delete successfull", "The Synonym could be deleted, but there is an updated object: " + result.getExceptions().get(0).getMessage());
                                        }
                                }
                        //      taxon.removeSynonym(synonym);