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;
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;
/**
*/
@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