updated operations to use the new TermEditorInput and also added pop-up warnings...
authorCherian Mathew <c.mathew@bgbm.org>
Thu, 18 Jul 2013 13:27:19 +0000 (13:27 +0000)
committerCherian Mathew <c.mathew@bgbm.org>
Thu, 18 Jul 2013 13:27:19 +0000 (13:27 +0000)
 - user tries to delete a CDM system vocabulary / term
 - user tries to add a defined term base object to a vocabulary / term if the corresponding term class is not available (via the getEmptyDefinedTermBase() method in TermType)

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/CreateDefinedTermOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/CreateTermVocabularyOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/DeleteTermBaseOperation.java

index cc2512f0dff4e0f6a76be72b1a25092368c4df6a..7677096e1ec1dc2fa291fc8bd4a85ca4704f39e2 100644 (file)
@@ -14,17 +14,15 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.core.runtime.Status;\r
 \r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
-import eu.etaxonomy.cdm.model.location.NamedArea;\r
-import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
-import eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditorInput;\r
-import eu.etaxonomy.taxeditor.editor.definedterm.input.NamedAreaEditorInput;\r
+import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
 /**\r
  * @author l.morris\r
@@ -36,7 +34,7 @@ public class CreateDefinedTermOperation extends AbstractPostOperation {
        \r
 \r
        private TermBase parentTermBase;\r
-       private AbstractDefinedTermEditorInput editorInput; \r
+       private TermEditorInput definedTermInput;\r
 \r
        /**\r
         * @param label\r
@@ -44,10 +42,13 @@ public class CreateDefinedTermOperation extends AbstractPostOperation {
         * @param postOperationEnabled\r
         */\r
        public CreateDefinedTermOperation(String label,\r
-                       IUndoContext undoContext, TermBase termBase, IPostOperationEnabled postOperationEnabled) {\r
+                       IUndoContext undoContext, \r
+                       TermBase termBase,\r
+                       TermEditorInput definedTermInput,\r
+                       IPostOperationEnabled postOperationEnabled) {\r
                super(label, undoContext, postOperationEnabled);\r
                this.parentTermBase = termBase;\r
-               editorInput = ((DefinedTermEditor)postOperationEnabled).getDefinedTermEditorInput();\r
+               this.definedTermInput = definedTermInput;\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -57,16 +58,22 @@ public class CreateDefinedTermOperation extends AbstractPostOperation {
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
                \r
-               DefinedTermBase newTerm = editorInput.createTermInstance();                             \r
-               \r
-               newTerm.setLabel("Untitled");\r
+               DefinedTermBase newTerm = definedTermInput.getTermType().getEmptyDefinedTermBase();\r
+               if (newTerm == null) {\r
+                       IStatus status = \r
+                                       new Status(IStatus.CANCEL, \r
+                                                       StoreUtil.getPluginId(), \r
+                                                       "Creation of term corresponding to type '" + definedTermInput.getTermType().getMessage() + "' is not yet supported");\r
+                       StoreUtil.warningDialog("Cannot create term", newTerm, status);\r
+                       return status;\r
+               }\r
                \r
                if (parentTermBase instanceof TermVocabulary){\r
                        TermVocabulary vocabulary = (TermVocabulary) parentTermBase;\r
                        vocabulary.addTerm(newTerm);\r
                } else if (parentTermBase instanceof DefinedTermBase) {\r
-                       DefinedTermBase parent = (DefinedTermBase) parentTermBase;\r
-                       parent.addIncludes(newTerm);\r
+                       DefinedTermBase parent = (DefinedTermBase) parentTermBase;                      \r
+                       parent.addIncludes(newTerm);                    \r
                        TermVocabulary vocabulary = parent.getVocabulary();\r
                        vocabulary.addTerm(newTerm);\r
                }\r
index a8950ee64d0b32f2a338cb765653652b195fbe4e..cad587c2b0fc97115a231414322731d1d0fbf797 100644 (file)
@@ -9,6 +9,8 @@
 */\r
 package eu.etaxonomy.taxeditor.editor.definedterm.operation;\r
 \r
+import java.net.URI;\r
+\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
@@ -16,10 +18,14 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;\r
 \r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.TermType;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
+import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 /**\r
@@ -29,17 +35,19 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */\r
 public class CreateTermVocabularyOperation extends AbstractPostOperation {\r
 \r
-       private DefinedTermEditor definedTermEditor;\r
-\r
+       private TermEditorInput definedEditorInput;\r
+       \r
        /**\r
         * @param label\r
         * @param undoContext\r
         * @param postOperationEnabled\r
         */\r
        public CreateTermVocabularyOperation(String label,\r
-                       IUndoContext undoContext, DefinedTermEditor definedTermEditor) {\r
-               super(label, undoContext, definedTermEditor);\r
-               this.definedTermEditor = definedTermEditor;\r
+                       IUndoContext undoContext, \r
+                       TermEditorInput definedEditorInput, \r
+                       IPostOperationEnabled postOperationEnabled) {\r
+               super(label, undoContext, postOperationEnabled);\r
+               this.definedEditorInput = definedEditorInput;\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -48,10 +56,16 @@ public class CreateTermVocabularyOperation extends AbstractPostOperation {
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
-\r
-               TermVocabulary termVocabulary = OrderedTermVocabulary.NewInstance(null, "Untitled", null, null);\r
+       \r
+               TermVocabulary termVocabulary = \r
+                                       TermVocabulary.NewInstance(definedEditorInput.getTermType(),\r
+                                               null, \r
+                                               "Untitled", \r
+                                               null, \r
+                                               null);          \r
+               \r
                CdmStore.getService(IVocabularyService.class).save(termVocabulary);\r
-               definedTermEditor.getInMemoryVocabularies().add(termVocabulary);\r
+               definedEditorInput.getVocabularies().add(termVocabulary);\r
                \r
                return postExecute(termVocabulary);\r
        }\r
index 7ce678596023257ecbc9a33514990097f6c92c0b..c5bbd9c4ec4a1f9319e4fcc8b8fd0377eb325fe7 100644 (file)
@@ -18,11 +18,14 @@ import org.eclipse.core.runtime.Status;
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
+import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
@@ -33,6 +36,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  */\r
 public class DeleteTermBaseOperation extends AbstractPostOperation {\r
 \r
+       private TermEditorInput definedEditorInput;\r
        private TermBase termBase;\r
        private DefinedTermEditor definedTermEditor;\r
        /**\r
@@ -40,11 +44,14 @@ public class DeleteTermBaseOperation extends AbstractPostOperation {
         * @param undoContext\r
         * @param postOperationEnabled\r
         */\r
-       public DeleteTermBaseOperation(String label, IUndoContext undoContext, TermBase termBase,\r
-                       DefinedTermEditor definedTermEditor) {\r
-               super(label, undoContext, definedTermEditor);\r
+       public DeleteTermBaseOperation(String label, \r
+                       IUndoContext undoContext, \r
+                       TermBase termBase,\r
+                       TermEditorInput definedEditorInput,\r
+                       IPostOperationEnabled postOperationEnabled) {\r
+               super(label, undoContext, postOperationEnabled);\r
                this.termBase = termBase;\r
-               this.definedTermEditor = definedTermEditor;\r
+               this.definedEditorInput = definedEditorInput;           \r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -57,25 +64,39 @@ public class DeleteTermBaseOperation extends AbstractPostOperation {
                \r
                \r
                if (termBase instanceof TermVocabulary) {\r
+                       if (((TermVocabulary)termBase).getCreatedBy() == null) {\r
+                               IStatus status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "This is a CDM system vocabulary");\r
+                               StoreUtil.warningDialog("Cannot delete vocabulary", termBase, status);\r
+                               return status;\r
+                       }\r
                        \r
                        if (!((TermVocabulary)termBase).getTerms().isEmpty()) {\r
                                IStatus status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "Delete all terms from this vocaulary before deleting the vocabulary.");\r
                                StoreUtil.warningDialog("Vocabulary not empty", termBase, status);\r
                                return status;\r
-                       }\r
-                       definedTermEditor.getInMemoryVocabularies().remove(termBase); \r
+                       }                       \r
+\r
+                       definedEditorInput.getVocabularies().remove((TermVocabulary)termBase); \r
                        CdmStore.getService(IVocabularyService.class).delete((TermVocabulary)termBase);\r
                        \r
+                       \r
                } else if (termBase instanceof DefinedTermBase) {\r
                        \r
                        \r
                        DefinedTermBase definedTermBase = (DefinedTermBase) termBase;\r
+                       \r
+                       if (((DefinedTermBase)termBase).getCreatedBy() == null) {\r
+                               IStatus status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "This is a CDM system defined term");\r
+                               StoreUtil.warningDialog("Cannot delete defined term", termBase, status);\r
+                               return status;\r
+                       }\r
                        if(!definedTermBase.getIncludes().isEmpty()){\r
                                IStatus status = new Status(IStatus.CANCEL, StoreUtil.getPluginId(), "This term includes other terms. Please delete the included terms before deleting this term.");                            \r
                                StoreUtil.warningDialog("Term has included terms", termBase, status);\r
                                return status;\r
                        } \r
                                                \r
+\r
                        DefinedTermBase partOf = definedTermBase.getPartOf();\r
                        if(partOf != null){\r
                                partOf.removeIncludes(definedTermBase);\r