- created utility method in AbstractUtility for sorting/ordering IEnumTerms accordin...
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / input / entitycreator / OccurrenceCreator.java
index 3796a11f461ba6991872f924cf297110ebca7ed7..4c4e1254959cee76dafc334d5c15d784725edac4 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.input.entitycreator;
 
-import java.util.Comparator;
-import java.util.LinkedHashMap;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IStatus;
@@ -27,6 +23,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.newWizard.NewDerivedUnitBaseWizard;
 
 /**
@@ -77,56 +74,9 @@ public class OccurrenceCreator implements
         */
        @Override
        public Map<Object, String> getKeyLabelPairs() {
-               Comparator<Object> comparator = new Comparator<Object>() {
-                         @Override
-            public int compare(Object o1, Object o2) {
-                           String key1 = ((SpecimenOrObservationType)o1).getKey();
-                           String key2 = ((SpecimenOrObservationType)o2).getKey();
-                           return key1.compareTo(key2);
-                         }
-                       };
-               Map<Object, String> result = new LinkedHashMap<Object, String>();
-
-               Map<SpecimenOrObservationType, Set<SpecimenOrObservationType>> typeHierarchy = new TreeMap<SpecimenOrObservationType, Set<SpecimenOrObservationType>>(comparator);
-
-               for(SpecimenOrObservationType sooType : SpecimenOrObservationType.values()) {
-                   Set<SpecimenOrObservationType> childList = new TreeSet<SpecimenOrObservationType>(comparator);
-            // add root element as keys
-            if(sooType.getKindOf()==null){
-                typeHierarchy.put(sooType, childList);
-                   }
-                   // add child element to topmost parent i.e. root
-                   else{
-                       SpecimenOrObservationType root = getRootFor(sooType);
-                       if(typeHierarchy.containsKey(root)){
-                           typeHierarchy.get(root).add(sooType);
-                       }
-                       else{
-                           childList.add(sooType);
-                           typeHierarchy.put(root, childList);
-                       }
-                   }
-               }
-
-               // create list according to the type hierarchy (root elements alphabetically with recursive children also alphabetically)
-               for(Entry<SpecimenOrObservationType, Set<SpecimenOrObservationType>> entry:typeHierarchy.entrySet()){
-                   SpecimenOrObservationType root = entry.getKey();
-                   result.put(root, root.getMessage());
-                   for(SpecimenOrObservationType child:entry.getValue()){
-                       result.put(child, " - " + child.getMessage());
-                   }
-               }
-               return result;
-       }
-
-       private SpecimenOrObservationType getRootFor(SpecimenOrObservationType type){
-           SpecimenOrObservationType parent = type.getKindOf();
-           if(parent==null){
-               return type;
-           }
-           else{
-               return getRootFor(type.getKindOf());
-           }
+           Map<Object, String> keyLabelPairs = new HashMap<Object, String>();
+           keyLabelPairs.putAll(AbstractUtility.orderTerms(Arrays.asList(SpecimenOrObservationType.values())));
+           return keyLabelPairs;
        }
 
        @Override