AT: committing changes to the TaxEditor Post second round of code review
authora.theys <a.theys@localhost>
Tue, 19 Jun 2012 13:48:37 +0000 (13:48 +0000)
committera.theys <a.theys@localhost>
Tue, 19 Jun 2012 13:48:37 +0000 (13:48 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/UsageTermCollection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/userecords/UseRecordDetailElement.java

index d76d6e575911d8b785ae05123c96e5b6274f10af..5e2e1ddfc75829ed1d7b3c1b392f4f2d7e9b5408 100644 (file)
@@ -6,19 +6,25 @@ package eu.etaxonomy.taxeditor.editor.view.descriptive;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
 /**
@@ -130,8 +136,20 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
                List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();
                for(DescriptionBase description : taxon.getDescriptions()){
                        if(! description.isImageGallery()){
-                               descriptions.add(description);
+                               MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);
+                               Set<Marker> descriptionMarkers = description.getMarkers();
+                               if(descriptionMarkers != null && !descriptionMarkers.isEmpty()) {
+                                       for (Marker marker: descriptionMarkers) {
+                                               if(!(marker.getMarkerType().equals(useMarkertype))) {
+                                                       descriptions.add(description);
+                                               }
+                                       }
+                               }
+                               else {
+                                       descriptions.add(description);
+                               }
                        }
+                       
                }                       
                return descriptions;
        }
index 534e9b59ee28b975cb9273cf68df50441078cc34..eceb609615d4255c10757d480547507e5c6826fc 100644 (file)
@@ -1,3 +1,11 @@
+/**\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
 package eu.etaxonomy.taxeditor.editor.view.uses;\r
 \r
 import java.util.ArrayList;\r
@@ -5,9 +13,9 @@ import java.util.HashSet;
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.Set;\r
-import java.util.UUID;\r
 \r
 import org.eclipse.jface.viewers.ITreeContentProvider;\r
+import org.eclipse.jface.viewers.Viewer;\r
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
@@ -19,19 +27,19 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveContentProvider;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.TermStore;\r
 \r
 /**\r
- * UsesContentProvider Class\r
+ * The class provides the required content to the Uses View\r
  * @author a.theys     \r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
-public class UsesContentProvider extends DescriptiveContentProvider implements ITreeContentProvider {\r
+public class UsesContentProvider implements ITreeContentProvider {\r
 \r
        private static final Object[] NO_CHILDREN = new Object[0];\r
        private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache;\r
@@ -43,10 +51,38 @@ public class UsesContentProvider extends DescriptiveContentProvider implements I
         * @param featureNodeContainerCache a {@link java.util.Map} object.\r
         */\r
        public UsesContentProvider(Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache) {\r
-               super(featureNodeContainerCache);\r
                this.featureNodeContainerCache = featureNodeContainerCache;\r
        }\r
        \r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)\r
+        */\r
+       /** {@inheritDoc} */\r
+       public Object[] getChildren(Object parentElement) {\r
+               if (parentElement instanceof TaxonEditorInput) {\r
+                       return getDescriptions((TaxonEditorInput) parentElement).toArray(); \r
+               }\r
+               else if (parentElement instanceof TaxonDescription) {\r
+                       if ( ! ((TaxonDescription) parentElement).isImageGallery()) {\r
+                               TaxonDescription description = (TaxonDescription) parentElement;\r
+                               \r
+                               FeatureNodeContainerTree containerTree = getContainerTreeForDesription(description);\r
+                               \r
+                               return containerTree.getRoot().getChildren().toArray();\r
+                       }\r
+               }\r
+               else if (parentElement instanceof FeatureNodeContainer){\r
+                       FeatureNodeContainer container = (FeatureNodeContainer) parentElement;\r
+                       if(container.isLeaf()){\r
+                               return container.getDescriptionElements().toArray();\r
+                       }else{\r
+                               return container.getChildren().toArray();\r
+                       }\r
+               }\r
+               \r
+               return NO_CHILDREN;\r
+       }\r
        \r
        private FeatureNodeContainerTree getContainerTreeForDesription(TaxonDescription description){\r
                if(! featureNodeContainerCache.containsKey(description)){\r
@@ -56,6 +92,19 @@ public class UsesContentProvider extends DescriptiveContentProvider implements I
                return featureNodeContainerCache.get(description);\r
        }\r
 \r
+       /** {@inheritDoc} */\r
+       @Override\r
+       public boolean hasChildren(Object element) {\r
+               if (element instanceof TaxonDescription){\r
+                       TaxonDescription description = (TaxonDescription) element;\r
+                       FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);\r
+                       if(containerTree != null && containerTree.getRoot() != null){\r
+                               return containerTree.getRoot().getChildren().size() != 0;\r
+                       }\r
+               } \r
+               return getChildren(element).length != 0;\r
+       }\r
+       \r
        /**\r
         * Retrieves the feature tree associated with the given description\r
         * \r
@@ -96,11 +145,10 @@ public class UsesContentProvider extends DescriptiveContentProvider implements I
                \r
                for(DescriptionBase description : taxon.getDescriptions()){\r
                        if(! description.isImageGallery()){\r
-                               MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseRecordFeature);\r
+                               MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);\r
                                Set<Marker> descriptionMarkers = description.getMarkers();\r
                                if(descriptionMarkers != null) {\r
                                        for (Marker marker: descriptionMarkers) {\r
-                                               //TODO Use the GetbyUUID method\r
                                                if(marker.getMarkerType().equals(useMarkertype)) {\r
                                                        descriptions.add(description);\r
                                                }\r
@@ -111,4 +159,36 @@ public class UsesContentProvider extends DescriptiveContentProvider implements I
                return descriptions;\r
        }\r
 \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)\r
+        */\r
+       /** {@inheritDoc} */\r
+       public Object getParent(Object element) {\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)\r
+        */\r
+       /** {@inheritDoc} */\r
+       public Object[] getElements(Object inputElement) {\r
+               return getChildren(inputElement);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.viewers.IContentProvider#dispose()\r
+        */\r
+       /**\r
+        * <p>dispose</p>\r
+        */\r
+       public void dispose() {\r
+               featureNodeContainerCache.clear();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)\r
+        */\r
+       /** {@inheritDoc} */\r
+       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}    \r
+\r
 }\r
index 0cea6eab7433d1cbe38f7e80dad50ff329905f15..feea0619935f65f31f6911c701031f97f4c882d4 100644 (file)
@@ -134,7 +134,10 @@ public class UsesLabelProvider extends ColumnLabelProvider implements
                                text = "No data provided";\r
                        }\r
                        else {\r
-                               ((CategoricalData)element).putModifyingText(CdmStore.getDefaultLanguage(), text);\r
+                               String[] textElements = text.split(";");\r
+                               String dataportalString = textElements[0] + ";" + textElements[1] + ";" + textElements[5] + ";" + textElements[2] + ";" + textElements[3] + ";" + textElements[4] + ";" ;  \r
+                               \r
+                               ((CategoricalData)element).putModifyingText(CdmStore.getDefaultLanguage(), dataportalString);\r
                        }\r
                        return text;\r
                }\r
@@ -168,7 +171,7 @@ public class UsesLabelProvider extends ColumnLabelProvider implements
                else if ((term.getVocabulary() != null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals(vocabularyExpected))) {\r
                        return true;\r
                }\r
-               else if ((vocabularyExpected.equals("Ethnic Group"))  && (term.getVocabulary() != null) && ((term.getPartOf() != null))) {\r
+               else if ((vocabularyExpected.equals(UsageTermCollection.ethnicGroupLabel))  && (term.getVocabulary() == null) && ((term.getPartOf() != null))) {\r
                        return true;\r
                }\r
        return false;\r
index 3f0aea779beb0fd18a65739eca8470df1b0f5422..a5cbf7d25ecee3770a8c735e4398a0479766ef1c 100644 (file)
@@ -1,17 +1,20 @@
 /**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
+ * Copyright (C) 2007 EDIT\r
+ * European Distributed Institute of Taxonomy \r
+ * http://www.e-taxonomy.eu\r
+ * \r
+ * The contents of this file are subject to the Mozilla Public License Version 1.1\r
+ * See LICENSE.TXT at the top of this package for the full license terms.\r
+ */\r
 package eu.etaxonomy.taxeditor.editor.view.uses;\r
 \r
+import java.net.URI;\r
+import java.net.URISyntaxException;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
+import java.util.UUID;\r
 \r
+import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.action.GroupMarker;\r
 import org.eclipse.jface.action.IToolBarManager;\r
@@ -20,6 +23,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.ISelection;\r
 import org.eclipse.jface.viewers.StructuredSelection;\r
 import org.eclipse.jface.viewers.TreeViewer;\r
+import org.eclipse.jface.viewers.Viewer;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.dnd.DND;\r
 import org.eclipse.swt.dnd.Transfer;\r
@@ -30,9 +34,21 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;\r
 import org.eclipse.ui.IEditorInput;\r
 import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IMemento;\r
 import org.eclipse.ui.IWorkbenchActionConstants;\r
 import org.eclipse.ui.IWorkbenchPart;\r
 \r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
+import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.Modifier;\r
+import eu.etaxonomy.cdm.model.description.State;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;\r
 import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
@@ -43,55 +59,82 @@ import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDragList
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;\r
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;\r
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;\r
+import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;\r
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
+import eu.etaxonomy.taxeditor.model.IContextListener;\r
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;\r
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;\r
 import eu.etaxonomy.taxeditor.model.ImageResources;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;\r
 \r
 \r
 /**\r
- * <p>UsesViewPart Class.</p>\r
+ * The Class create a speific Use View to keep the taxonomic view clean\r
  * @author a.theys     \r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
 public class UsesViewPart extends DescriptiveViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {\r
-       \r
-       /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */\r
-       \r
+\r
        public static final String ID = "eu.etaxonomy.taxeditor.editor.view.uses";\r
-       \r
        private TreeViewer viewer;\r
-       \r
        private Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();\r
-       \r
        private ToggleDescriptionAction showAllElementsAction;\r
-       \r
        private ToggleDescriptionAction hideAllElementsAction;\r
 \r
        private int dndOperations = DND.DROP_COPY | DND.DROP_MOVE;\r
        \r
+       \r
        /** {@inheritDoc} */\r
        @Override\r
        public void createViewer(Composite parent) {\r
+               \r
                viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL\r
                                | SWT.V_SCROLL | SWT.FULL_SELECTION));\r
                viewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache));\r
                viewer.setLabelProvider(new UsesLabelProvider());\r
+               \r
+               //viewer.setSorter(new DescriptiveViewerSorter());\r
+               \r
                viewer.setAutoExpandLevel(2);\r
+               \r
+               \r
+               \r
                Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };\r
                viewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(\r
                                this));\r
                viewer.addDropSupport(dndOperations, transfers,\r
                                new DescriptionElementDropAdapter(viewer));\r
+                                               \r
+               // Propagate selection from viewer\r
                getSite().setSelectionProvider(viewer);\r
+               \r
                showAllElementsAction = new ToggleDescriptionAction(false);             \r
                hideAllElementsAction = new ToggleDescriptionAction(true);\r
+               \r
+               // Add context menu to tree\r
                createMenu();\r
+               \r
                createToolbar();\r
+               \r
        }\r
        \r
-       \r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()\r
+        */\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       protected ISelection getInitialSelection() {\r
+               if(getEditor() != null){\r
+                       return new StructuredSelection(getEditor().getEditorInput());\r
+               }       \r
+               \r
+               return super.getInitialSelection();\r
+       }\r
        \r
        private void createToolbar() {\r
                IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();\r
@@ -99,6 +142,25 @@ public class UsesViewPart extends DescriptiveViewPart implements IPartContentHas
                toolBarManager.add(hideAllElementsAction);\r
        }\r
        \r
+       \r
+       private void createMenu(){\r
+               MenuManager menuManager = new MenuManager();\r
+               menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));\r
+               \r
+               getSite().registerContextMenu(menuManager, viewer);\r
+\r
+               // FIXME for some reason this is not working\r
+               menuManager.add(showAllElementsAction);\r
+               menuManager.add(hideAllElementsAction);\r
+                               \r
+               Control control = viewer.getControl();\r
+               Menu menu = menuManager.createContextMenu(control);\r
+               \r
+               control.setMenu(menu);  \r
+       }\r
+       \r
+\r
+       \r
        @Override\r
        public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
                if(EditorUtil.getActiveEditor() == null){\r
@@ -129,26 +191,24 @@ public class UsesViewPart extends DescriptiveViewPart implements IPartContentHas
                        }\r
                        showViewer();\r
                }\r
-       }\r
-       \r
-       \r
-       private void createMenu(){\r
-               MenuManager menuManager = new MenuManager();\r
-               menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));\r
                \r
-               getSite().registerContextMenu(menuManager, viewer);\r
+       }\r
 \r
-               // FIXME for some reason this is not working\r
-               menuManager.add(showAllElementsAction);\r
-               menuManager.add(hideAllElementsAction);\r
-                               \r
-               Control control = viewer.getControl();\r
-               Menu menu = menuManager.createContextMenu(control);\r
+\r
+\r
+       /*@Override\r
+       public void showViewer(IWorkbenchPart part, IStructuredSelection selection) {\r
+               this.part = part;               \r
+       \r
+               Object element = selection.getFirstElement();\r
                \r
-               control.setMenu(menu);  \r
-       }\r
+               getViewer().setInput(descService.listTaxonDescriptions((Taxon) element, null, null, null, null, null, null));\r
+               \r
+               showViewer();   \r
+       }*/\r
+       \r
+       \r
        \r
-\r
        private class ToggleDescriptionAction extends Action{\r
                private boolean expanded;\r
                \r
@@ -182,5 +242,45 @@ public class UsesViewPart extends DescriptiveViewPart implements IPartContentHas
                        setImageAndTooltip();\r
                }\r
        }\r
+       \r
+       /** {@inheritDoc} */\r
+       @Override\r
+       public boolean postOperation(CdmBase objectAffectedByOperation) {\r
+               viewer.refresh();\r
+               return super.postOperation(objectAffectedByOperation);\r
+       }\r
+       \r
+       /** {@inheritDoc} */\r
+       @Override\r
+       public void changed(Object object) {\r
+               for(FeatureNodeContainerTree containerTree : featureNodeContainerCache.values()){\r
+                       containerTree.buildTree();\r
+               }\r
+               viewer.refresh();\r
+               \r
+               if(object instanceof DescriptionElementBase){\r
+                       DescriptionElementBase descriptionElement = (DescriptionElementBase) object;\r
+                       DescriptionBase description = descriptionElement.getInDescription();\r
+                       FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);\r
+                       \r
+                       FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);\r
+                       viewer.expandToLevel(featureNodeContainer, 1);\r
+                       \r
+               }\r
+\r
+               if(object != null){\r
+                       StructuredSelection selection = new StructuredSelection(object);\r
+                       viewer.setSelection(selection, true);\r
+               }\r
+\r
+               super.changed(object);\r
+       }\r
+       \r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       public Viewer getViewer() {\r
+               return viewer;\r
+       }\r
 \r
 }\r
index 8f6e696e782177958e1fbbe440ec385068176b7b..758d0dec752382e4f0a27a4199c293f2476ca1d1 100644 (file)
@@ -1,3 +1,11 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
 package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
 \r
 import org.eclipse.core.commands.ExecutionException;\r
index ed891f794d94f3dbffc23b7344b89aa59f0a2400..de2ced2d27d745c457b55af678cbeb654075a1db 100644 (file)
@@ -27,7 +27,8 @@ public class UsageTermCollection {
        public final static String useSummaryFeatureLabel = "Use";\r
        \r
        public final static UUID uuidUseCategoryVocabulary = UUID.fromString("67430d7c-fd43-4e9d-af5e-d0dca3f74931");\r
-       public final static String useCategoryVocabularyLabel = "Use Record";\r
+       public final static String useCategoryVocabularyLabel = "Use Category";\r
+       public final static String useSubCategoryVocabularyLabel = "Use SubCategory";\r
        public final static UUID uuidUseCategoryDummy = UUID.fromString("983a7184-6a51-489e-aca1-f21fc4fdbae3");\r
        public final static UUID uuidUseSubCategoryDummy = UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62");\r
        \r
index 361a220a29dc73e3196659ee27480ba21a1245f4..b51cf74e37a1a3b3f61b7c4a0284664e354389fc 100644 (file)
@@ -6,13 +6,9 @@ import java.util.List;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
-import java.util.UUID;\r
-\r
 import org.apache.log4j.Logger;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
-\r
-import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
@@ -20,6 +16,7 @@ import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.Modifier;\r
 import eu.etaxonomy.cdm.model.description.State;\r
 import eu.etaxonomy.cdm.model.description.StateData;\r
+import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.TermStore;\r
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;\r
@@ -29,7 +26,8 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 \r
 \r
 /**\r
- * UseRecordDetailElement Class\r
+ * The context manager mediates context start/stop and workbench shutdowns to all registered listeners.\r
+ *\r
  * @author a.theys     \r
  * @created mar 13, 2012\r
  * @version 1.0\r
@@ -57,47 +55,47 @@ public class UseRecordDetailElement extends
        protected void createControls(ICdmFormElement formElement,\r
                        CategoricalData entity, int style) {\r
 \r
-               combo_UseCategory = formFactory.createTermComboElement(State.class,     this, "Use Category", null, style);\r
+               combo_UseCategory = formFactory.createTermComboElement(State.class,     this, UsageTermCollection.useCategoryVocabularyLabel, null, style);\r
                combo_UseCategory.addSelectionListener(this);\r
-               combo_UseSubCategory = formFactory.createTermComboElement(State.class, this, "Use SubCategory", null, style);\r
-               combo_PlantPart = formFactory.createTermComboElement(Modifier.class, this, "Plant Part", null, style);\r
-               combo_HumanGroup = formFactory.createTermComboElement(Modifier.class, this, "Human Group", null, style);\r
+               combo_UseSubCategory = formFactory.createTermComboElement(State.class, this, UsageTermCollection.useSubCategoryVocabularyLabel, null, style);\r
+               combo_PlantPart = formFactory.createTermComboElement(Modifier.class, this, UsageTermCollection.plantPartLabel, null, style);\r
+               combo_HumanGroup = formFactory.createTermComboElement(Modifier.class, this, UsageTermCollection.humanGroupLabel, null, style);\r
                combo_HumanGroup.addSelectionListener(this);\r
-               combo_EthnicGroup = formFactory.createTermComboElement(Modifier.class, this, "Ethnic Group", null, style);\r
-               combo_Country   = formFactory.createTermComboElement(Modifier.class, this, "Country", null, style);\r
+               combo_EthnicGroup = formFactory.createTermComboElement(Modifier.class, this, UsageTermCollection.ethnicGroupLabel, null, style);\r
+               combo_Country   = formFactory.createTermComboElement(Modifier.class, this, UsageTermCollection.countryLabel, null, style);\r
                \r
 \r
                List<State> termsUseCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false));\r
                combo_UseCategory.setTerms(termsUseCategory);\r
-               combo_UseCategory.setSelection(stateSelection("Use Category"));\r
+               combo_UseCategory.setSelection(stateSelection(UsageTermCollection.useCategoryVocabularyLabel));\r
                \r
                List<State> termsSubCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false), combo_UseCategory.getSelection());\r
                \r
                if (termsSubCategory != null) {\r
                        combo_UseSubCategory.setTerms(termsSubCategory);\r
-                       combo_UseSubCategory.setSelection(stateSelection("Use SubCategory"));\r
+                       combo_UseSubCategory.setSelection(stateSelection(UsageTermCollection.useSubCategoryVocabularyLabel));\r
                        combo_UseSubCategory.setEnabled(true);\r
                }\r
                else {\r
                        combo_UseSubCategory.setEnabled(false);\r
                }\r
                \r
-               List<Modifier> plantPartsToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Plant Part");\r
+               List<Modifier> plantPartsToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), UsageTermCollection.plantPartLabel);\r
                combo_PlantPart.setTerms(plantPartsToAdd);\r
-               combo_PlantPart.setSelection(modifierSelection("Plant Part"));\r
+               combo_PlantPart.setSelection(modifierSelection(UsageTermCollection.plantPartLabel));\r
                \r
-               List<Modifier> countriesToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Country");\r
+               List<Modifier> countriesToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), UsageTermCollection.countryLabel);\r
                combo_Country.setTerms(countriesToAdd);\r
-               combo_Country.setSelection(modifierSelection("Country"));\r
+               combo_Country.setSelection(modifierSelection(UsageTermCollection.countryLabel));\r
                \r
-               List<Modifier> humanGroupToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), "Human Group");\r
+               List<Modifier> humanGroupToAdd = setModifierComboTerms(TermStore.getTerms(Modifier.class, null, false), UsageTermCollection.humanGroupLabel);\r
                combo_HumanGroup.setTerms(humanGroupToAdd);\r
-               combo_HumanGroup.setSelection(modifierSelection("Human Group"));\r
+               combo_HumanGroup.setSelection(modifierSelection(UsageTermCollection.humanGroupLabel));\r
                \r
                List<Modifier> ethnicGroupToAdd = setEthnicGroupComboTerms(TermStore.getTerms(Modifier.class, null, false), combo_HumanGroup.getSelection());\r
                if (ethnicGroupToAdd != null) {\r
                        combo_EthnicGroup.setTerms(ethnicGroupToAdd);\r
-                       combo_EthnicGroup.setSelection(modifierSelection("Ethnic Group"));\r
+                       combo_EthnicGroup.setSelection(modifierSelection(UsageTermCollection.ethnicGroupLabel));\r
                        combo_EthnicGroup.setEnabled(true);\r
                } else {\r
                        combo_EthnicGroup.setEnabled(false);\r
@@ -106,57 +104,37 @@ public class UseRecordDetailElement extends
        }\r
 \r
        private Modifier modifierSelection(String comboCategory) {\r
-               Modifier returnModifier = null;\r
                if(!getEntity().getModifiers().isEmpty()) {\r
                        for (Modifier modifier : getEntity().getModifiers()) {\r
                                if(GetVocabularyType(modifier, comboCategory)) {\r
-                                       returnModifier = modifier;\r
+                                       return modifier;\r
                                }\r
                        }\r
-               } \r
-               \r
-               if (returnModifier == null) {\r
-                       if (comboCategory == "Country") {\r
-                               returnModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("761dddee-bfa2-41f4-82df-3a19c71adee0")); \r
-                       } else if (comboCategory == "Plant Part") {\r
-                               returnModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("30150a82-a12f-4278-96ad-7ce708efa082")); \r
-                       } else if (comboCategory == "Human Group") {\r
-                               returnModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("c4b63327-2548-429d-8d55-81fdba5900a5")); \r
-                       } else if (comboCategory == "Ethnic Group") {\r
-                               returnModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("3ca851e5-d0d4-41cd-9066-f79e246c36c2")); \r
-                       }\r
+               } else {\r
+                       return null;\r
                }\r
-               \r
-               \r
-               return returnModifier;\r
+               return null;\r
                \r
        }\r
        \r
        private State stateSelection(String comboCategory) {\r
-               State returnState = null;\r
                if (!getEntity().getStates().isEmpty()) {\r
                        for (StateData statedata : getEntity().getStates()) {\r
                                if (statedata.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
                                        String testString = statedata.getModifyingText().get(CdmStore.getDefaultLanguage()).getText();\r
                                        if(testString.equals(comboCategory)) {\r
                                                if(statedata.getState() !=null) {\r
-                                                       returnState = statedata.getState();\r
+                                                       return statedata.getState();\r
                                                }\r
                                        }\r
                                }                               \r
                        }\r
                }\r
-       \r
-               if (returnState == null) {\r
-                       if (comboCategory == "Use Category") {\r
-                               returnState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("983a7184-6a51-489e-aca1-f21fc4fdbae3"));\r
-                               \r
-                       } else if (comboCategory == "Use SubCategory") {\r
-                               returnState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
-                       }\r
+               else {\r
+                       return null;\r
                }\r
+               return null;\r
                \r
-               return returnState;\r
        }\r
        \r
        private List<Modifier> setModifierComboTerms(List<Modifier> listOfTerms, String modType) {\r
@@ -180,10 +158,10 @@ public class UseRecordDetailElement extends
                List<State> termsToAdd = new ArrayList<State>();\r
                for (State term : listOfTerms) {\r
 \r
-                       if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals("Use Category"))) {\r
+                       if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(UsageTermCollection.useCategoryVocabularyLabel))) {\r
                                termsToAdd.add(term);\r
                        }\r
-                       else if ((term.getVocabulary() !=null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals("Use Category"))) {\r
+                       else if ((term.getVocabulary() !=null) && (term.getPartOf() == null) && (term.getVocabulary().getTitleCache().equals(UsageTermCollection.useCategoryVocabularyLabel))) {\r
                                termsToAdd.add(term);\r
                        }\r
                }\r
@@ -209,7 +187,7 @@ public class UseRecordDetailElement extends
                else if (!getEntity().getStates().isEmpty()) {\r
                        for (StateData stateData : getEntity().getStates()) {\r
                                if (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {\r
-                                       if ((stateData.getState() != null) && (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == "Use Category")) {\r
+                                       if ((stateData.getState() != null) && (stateData.getModifyingText().get(CdmStore.getDefaultLanguage()).getText() == UsageTermCollection.useCategoryVocabularyLabel)) {\r
                                                for (State term : listOfTerms) {\r
                                                        if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(stateData.getState().getTitleCache()))) {\r
                                                                termsToAdd.add(term);\r
@@ -249,7 +227,7 @@ public class UseRecordDetailElement extends
                        for (Modifier modifier : getEntity().getModifiers()) {\r
                                if (modifier.getMarkers() != null) {\r
                                        for (Marker marker : modifier.getMarkers()) {\r
-                                               if(marker.getMarkerType().getTitleCache().equals("Human Group")) {\r
+                                               if(marker.getMarkerType().getTitleCache().equals(UsageTermCollection.humanGroupLabel)) {\r
                                                        for (Modifier term : listOfTerms) {\r
                                                                if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(modifier.getTitleCache()))) {\r
                                                                        termsToAdd.add(modifier);\r
@@ -279,7 +257,7 @@ public class UseRecordDetailElement extends
                                if (!getEntity().getStates().isEmpty()) {\r
                                        for (StateData useCategoryStateDataCheck : getEntity().getStates()) {\r
                                                Map<Language, LanguageString> modText = useCategoryStateDataCheck.getModifyingText();\r
-                                               if(modText.get(CdmStore.getDefaultLanguage()) != null && modText.get(CdmStore.getDefaultLanguage()).getText().equals("Use Category")) {\r
+                                               if(modText.get(CdmStore.getDefaultLanguage()) != null && modText.get(CdmStore.getDefaultLanguage()).getText().equals(UsageTermCollection.useCategoryVocabularyLabel)) {\r
                                                        if(!useCategoryStateDataCheck.getState().getTitleCache().equals(combo_UseCategory.getSelection().getTitleCache())) {\r
                                                                isUseCategoryChanged = true;\r
                                                        }\r
@@ -292,23 +270,18 @@ public class UseRecordDetailElement extends
                                                Map<Language, LanguageString> modifyingText = existingStateData\r
                                                                .getModifyingText();\r
                                                if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
-                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals("Use Category")) {\r
+                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals(UsageTermCollection.useCategoryVocabularyLabel)) {\r
                                                                isChanged = true;\r
                                                                if(!existingStateData.getState().getTitleCache().equals(combo_UseCategory.getSelection().getTitleCache())) {\r
                                                                        itrExistingStates.remove();\r
                                                                        StateData stateData = StateData.NewInstance(combo_UseCategory.getSelection());\r
                                                                        stateData.setState(combo_UseCategory.getSelection());\r
-                                                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use Category");\r
+                                                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(),UsageTermCollection.useCategoryVocabularyLabel);\r
                                                                        itrExistingStates.add(stateData);\r
                                                                        \r
                                                                }\r
-                                                       } else if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals("Use SubCategory") && isUseCategoryChanged == true) {\r
+                                                       } else if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals(UsageTermCollection.useSubCategoryVocabularyLabel) && isUseCategoryChanged == true) {\r
                                                                itrExistingStates.remove();\r
-                                                               State naUseSubCatState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
-                                                               StateData subCatStateData = StateData.NewInstance(naUseSubCatState);\r
-                                                               subCatStateData.setState(naUseSubCatState);\r
-                                                               subCatStateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
-                                                               getEntity().addState(subCatStateData);\r
                                                        }\r
                                                }\r
                                        }\r
@@ -319,19 +292,11 @@ public class UseRecordDetailElement extends
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseCategory.getSelection());\r
                                        stateData.setState(combo_UseCategory.getSelection());\r
-                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use Category");\r
+                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), UsageTermCollection.useCategoryVocabularyLabel);\r
                                        getEntity().addState(stateData);\r
-                                       State naUseSubCatState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
-                                       StateData subCatStateData = StateData.NewInstance(naUseSubCatState);\r
-                                       subCatStateData.setState(naUseSubCatState);\r
-                                       subCatStateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
-                                       getEntity().addState(subCatStateData);\r
-                                       \r
                                }\r
                                \r
-                               State naUseSubCatState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
                                combo_UseSubCategory.setEnabled(true);\r
-                               combo_UseSubCategory.setSelection(naUseSubCatState);\r
        \r
                        }\r
                        else {\r
@@ -341,22 +306,12 @@ public class UseRecordDetailElement extends
                                                StateData stateToRemove = itr.next();\r
                                                itr.remove();\r
                                        }\r
-                                       State naUseCatState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("983a7184-6a51-489e-aca1-f21fc4fdbae3"));\r
-                                       StateData stateData = StateData.NewInstance(naUseCatState);\r
-                                       stateData.setState(naUseCatState);\r
-                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use Category");\r
-                                       getEntity().addState(stateData);\r
                                        List<State> termsSubCategory = new ArrayList<State>();\r
-                                       State  naUseSubCatState = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
-                                       StateData subCatStateData = StateData.NewInstance(naUseSubCatState);\r
-                                       subCatStateData.setState(naUseSubCatState);\r
-                                       subCatStateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
-                                       getEntity().addState(subCatStateData);\r
-                                       termsSubCategory.add(naUseSubCatState);\r
-                                       \r
+                                       State emptyState = State.NewInstance();\r
+                                       termsSubCategory.add(emptyState);\r
                                        combo_UseSubCategory.setTerms(termsSubCategory);\r
                                        combo_UseSubCategory.setEnabled(false);\r
-                               }                               \r
+                               }\r
                        }\r
                }\r
                        \r
@@ -370,13 +325,13 @@ public class UseRecordDetailElement extends
                                                Map<Language, LanguageString> modifyingText = existingStateData\r
                                                                .getModifyingText();\r
                                                if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
-                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals("Use SubCategory")) {\r
+                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals(UsageTermCollection.useSubCategoryVocabularyLabel)) {\r
                                                                isChanged = true;\r
                                                                if(!existingStateData.getState().getTitleCache().equals(combo_UseSubCategory.getSelection().getTitleCache())) {\r
                                                                        itrExistingStates.remove();\r
                                                                        StateData stateData = StateData.NewInstance(combo_UseSubCategory.getSelection());\r
                                                                        stateData.setState(combo_UseSubCategory.getSelection());\r
-                                                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(),"Use SubCategory");\r
+                                                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(),UsageTermCollection.useSubCategoryVocabularyLabel);\r
                                                                        itrExistingStates.add(stateData);\r
                                                                }\r
                                                        }\r
@@ -388,7 +343,7 @@ public class UseRecordDetailElement extends
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseSubCategory.getSelection());\r
                                        stateData.setState(combo_UseSubCategory.getSelection());\r
-                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
+                                       stateData.putModifyingText(CdmStore.getDefaultLanguage(), UsageTermCollection.useSubCategoryVocabularyLabel);\r
                                        getEntity().addState(stateData);\r
                                }\r
        \r
@@ -401,18 +356,12 @@ public class UseRecordDetailElement extends
                                                                .getModifyingText();\r
 \r
                                                if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
-                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText() == "Use SubCategory") {\r
+                                                       if (modifyingText.get(CdmStore.getDefaultLanguage()).getText() == UsageTermCollection.useSubCategoryVocabularyLabel) {\r
                                                                itrStateData.remove();\r
                                                        }\r
                                                }\r
                                        }\r
                                }\r
-                               State  naUseSubCat = (State) CdmStore.getService(ITermService.class).find(UUID.fromString("a8d80223-5c79-4063-8c6b-4dc8681e9c62"));\r
-                               StateData stateData = StateData.NewInstance(naUseSubCat);\r
-                               stateData.setState(naUseSubCat);\r
-                               stateData.putModifyingText(CdmStore.getDefaultLanguage(), "Use SubCategory");\r
-                               getEntity().addState(stateData);\r
-                               \r
                        }\r
                }\r
                if (eventSource == combo_PlantPart) {\r
@@ -420,7 +369,7 @@ public class UseRecordDetailElement extends
                                Iterator<Modifier> itrExistingModifiers = getEntity().getModifiers().iterator();\r
                                while (itrExistingModifiers.hasNext()) {\r
                                        Modifier modifier = itrExistingModifiers.next();\r
-                                       if(GetVocabularyType(modifier, "Plant Part")) {\r
+                                       if(GetVocabularyType(modifier, UsageTermCollection.plantPartLabel)) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
                                                \r
@@ -433,13 +382,11 @@ public class UseRecordDetailElement extends
                                        Iterator<Modifier> itr = modifiers.iterator();\r
                                        while (itr.hasNext()) {\r
                                                Modifier currentMod = itr.next();\r
-                                               if(GetVocabularyType(currentMod, "Plant Part")) {\r
+                                               if(GetVocabularyType(currentMod, UsageTermCollection.plantPartLabel)) {\r
                                                        itr.remove();\r
                                                }\r
                                        }\r
                                }\r
-                               Modifier naPlantPartModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("30150a82-a12f-4278-96ad-7ce708efa082"));\r
-                               getEntity().addModifier(naPlantPartModifier);\r
                                \r
                        }\r
                }\r
@@ -448,7 +395,7 @@ public class UseRecordDetailElement extends
                                Iterator<Modifier> itrExistingModifiers = getEntity().getModifiers().iterator();\r
                                while (itrExistingModifiers.hasNext()) {\r
                                        Modifier modifier = itrExistingModifiers.next();\r
-                                       if(GetVocabularyType(modifier, "Country")) {\r
+                                       if(GetVocabularyType(modifier, UsageTermCollection.countryLabel)) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
                                                \r
@@ -461,22 +408,18 @@ public class UseRecordDetailElement extends
                                        Iterator<Modifier> itr = modifiers.iterator();\r
                                        while (itr.hasNext()) {\r
                                                Modifier currentMod = itr.next();\r
-                                               if(GetVocabularyType(currentMod, "Country")) {\r
+                                               if(GetVocabularyType(currentMod, UsageTermCollection.countryLabel)) {\r
                                                        itr.remove();\r
                                                }\r
                                        }\r
                                }\r
-                               Modifier naCountryModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("761dddee-bfa2-41f4-82df-3a19c71adee0"));\r
-                               getEntity().addModifier(naCountryModifier);\r
                        }\r
                }\r
                if (eventSource == combo_HumanGroup) {\r
-                       Modifier naHumanGroupModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("c4b63327-2548-429d-8d55-81fdba5900a5"));\r
-                       Modifier naEthnicGroupModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("3ca851e5-d0d4-41cd-9066-f79e246c36c2"));\r
                        if (combo_HumanGroup.getSelection() != null) {\r
                                boolean isHumanGroupChanged = true;\r
                                for (Modifier modToCheck: getEntity().getModifiers()) {\r
-                                       if(modToCheck.equals(combo_HumanGroup.getSelection()) && (GetVocabularyType(modToCheck, "Human Group"))) {\r
+                                       if(modToCheck.equals(combo_HumanGroup.getSelection()) && (GetVocabularyType(modToCheck, UsageTermCollection.humanGroupLabel))) {\r
                                                isHumanGroupChanged = false;\r
                                }\r
                                \r
@@ -485,7 +428,7 @@ public class UseRecordDetailElement extends
                                Iterator<Modifier> itrExistingModifiers = getEntity().getModifiers().iterator();\r
                                while (itrExistingModifiers.hasNext()) {\r
                                        Modifier modifier = itrExistingModifiers.next();\r
-                                       if((GetVocabularyType(modifier, "Human Group") || GetVocabularyType(modifier, "Ethnic Group")) && isHumanGroupChanged) {\r
+                                       if((GetVocabularyType(modifier, UsageTermCollection.humanGroupLabel) || GetVocabularyType(modifier, UsageTermCollection.ethnicGroupLabel)) && isHumanGroupChanged) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
                                                \r
@@ -493,30 +436,23 @@ public class UseRecordDetailElement extends
                                if(isHumanGroupChanged){\r
                                        Modifier humanGroup = combo_HumanGroup.getSelection();\r
                                        getEntity().addModifier(humanGroup);\r
-                                       getEntity().addModifier(naEthnicGroupModifier);\r
-                                       \r
                                }\r
-                               \r
                                combo_EthnicGroup.setEnabled(true);\r
-                               combo_EthnicGroup.setSelection(naEthnicGroupModifier);\r
-                               \r
                        } else {\r
                                Set<Modifier> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
                                        Iterator<Modifier> itr = modifiers.iterator();\r
                                        while (itr.hasNext()) {\r
                                                Modifier currentMod = itr.next();\r
-                                               if(GetVocabularyType(currentMod, "Human Group") || GetVocabularyType(currentMod, "Ethnic Group")) {\r
+                                               if(GetVocabularyType(currentMod, UsageTermCollection.humanGroupLabel) || GetVocabularyType(currentMod, UsageTermCollection.ethnicGroupLabel)) {\r
                                                        itr.remove();\r
                                                }\r
                                        }\r
                                }\r
-                               getEntity().addModifier(naHumanGroupModifier);\r
-                               getEntity().addModifier(naEthnicGroupModifier);\r
                                List<Modifier> emptyListToResetComboBox = new ArrayList<Modifier>();\r
-                               emptyListToResetComboBox.add(naEthnicGroupModifier);\r
+                               Modifier emptyMod = Modifier.NewInstance();\r
+                               emptyListToResetComboBox.add(emptyMod);\r
                                combo_EthnicGroup.setTerms(emptyListToResetComboBox);\r
-                               combo_EthnicGroup.setSelection(naEthnicGroupModifier);\r
                                combo_EthnicGroup.setEnabled(false);\r
                                \r
                        }\r
@@ -540,14 +476,12 @@ public class UseRecordDetailElement extends
                                        Iterator<Modifier> itr = modifiers.iterator();\r
                                        while (itr.hasNext()) {\r
                                                Modifier currentMod = itr.next();\r
-                                               if(GetVocabularyType(currentMod, "Ethnic Group")) {\r
+                                               if(GetVocabularyType(currentMod, UsageTermCollection.ethnicGroupLabel)) {\r
                                                        itr.remove();\r
                                                }\r
                                        }\r
                                        \r
                                }\r
-                               Modifier naEthnicGroupModifier = (Modifier) CdmStore.getService(ITermService.class).find(UUID.fromString("3ca851e5-d0d4-41cd-9066-f79e246c36c2"));\r
-                               getEntity().addModifier(naEthnicGroupModifier);\r
                        }\r
                }\r
        }\r
@@ -561,7 +495,7 @@ public class UseRecordDetailElement extends
                else if ((term.getVocabulary() != null) && (term.getPartOf()==null) && (term.getVocabulary().getTitleCache().equals(vocabularyExpected))) {\r
                        return true;\r
                }\r
-               else if ((vocabularyExpected.equals("Ethnic Group"))  && (term.getVocabulary() != null) && ((term.getPartOf() != null))) {\r
+               else if ((vocabularyExpected.equals(UsageTermCollection.ethnicGroupLabel))  && (term.getVocabulary() == null) && ((term.getPartOf() != null))) {\r
                        return true;\r
                }\r
        return false;\r
@@ -583,6 +517,7 @@ public class UseRecordDetailElement extends
                                State selectedUseCategory = combo_UseCategory.getSelection();\r
                                if (selectedUseCategory != null) {\r
                                        combo_UseSubCategory.setTerms(setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory));\r
+                               \r
                                        if (!getEntity().getStates().isEmpty()) {\r
                                                Iterator<StateData> itrExistingState = getEntity().getStates().iterator();\r
                                                while(itrExistingState.hasNext()) {\r
@@ -590,8 +525,8 @@ public class UseRecordDetailElement extends
                                                        Map<Language, LanguageString> modifyingText = existingStateData.getModifyingText();\r
                                                        if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
                                                                if (modifyingText.get(CdmStore.getDefaultLanguage())\r
-                                                                               .getText().equals("Use SubCategory")) {\r
-                                                                       combo_UseSubCategory.setSelection(stateSelection("Use SubCategory"));\r
+                                                                               .getText().equals(UsageTermCollection.useSubCategoryVocabularyLabel)) {\r
+                                                                       combo_UseSubCategory.setSelection(stateSelection(UsageTermCollection.useSubCategoryVocabularyLabel));\r
                                                                }\r
                                                        }\r
                                                }\r
@@ -608,8 +543,8 @@ public class UseRecordDetailElement extends
                                                Iterator<Modifier> iterModifiers = getEntity().getModifiers().iterator();\r
                                                while (iterModifiers.hasNext()) {\r
                                                        Modifier existingModifier = iterModifiers.next();\r
-                                                       if(GetVocabularyType(existingModifier, "Ethnic Group")) {\r
-                                                               combo_EthnicGroup.setSelection(modifierSelection("Ethnic Group"));\r
+                                                       if(GetVocabularyType(existingModifier, UsageTermCollection.ethnicGroupLabel)) {\r
+                                                               combo_EthnicGroup.setSelection(modifierSelection(UsageTermCollection.ethnicGroupLabel));\r
                                                        }\r
                                                }\r
                                        }\r