- set CdmFormFactory.createTermComboElement() to deprecated
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / TermManager.java
index 255d22a5b54d69c295ad0ede3f3464457cb531fd..c890f1c6b825b911a2cbb7bb6c499e2c58047c2b 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -22,6 +22,7 @@ import org.eclipse.ui.IMemento;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
 
 /**
@@ -30,29 +31,38 @@ import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
  * @version 1.0
  */
 public class TermManager extends ContextListenerAdapter{
-       
+
        private static final String TERMS = "terms";
        private static final String TERM = "term";
        private static final String HIDE = "hide";
-       
+
        private static final String CLASS = "class";
        private static final String UUID_STRING = "uuid";
-       
-       private Map<String, Collection<UUID>> hiddenTermsMap = new HashMap<String, Collection<UUID>>();
-       
+
+       private final Map<String, Collection<UUID>> hiddenTermsMap = new HashMap<String, Collection<UUID>>();
+
        public TermManager(){
                CdmStore.getContextManager().addContextListener(this);
        }
-       
+
        /**
-        * 
+        *
+        * @param clazz
+        * @return
+        */
+       public List<DefinedTermBase<?>> getPreferredTerms(TermType termType){
+           return getFilteredTerms(TermStore.getTerms(termType, null));
+       }
+
+       /**
+        *
         * @param clazz
         * @return
         */
        public <T extends DefinedTermBase> List<T> getPreferredTerms(Class<T> clazz){
                return getFilteredTerms(TermStore.getTerms(clazz));
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
         */
@@ -62,13 +72,13 @@ public class TermManager extends ContextListenerAdapter{
                if(memento == null){
                        return;
                }
-               
+
                IMemento terms = memento.getChild(TERMS);
 
                if(terms == null){
                        return;
                }
-               
+
                for(IMemento term : terms.getChildren(TERM)){
                        String typeName = term.getString(CLASS);
                        Collection<UUID> hiddenTermUuids = new ArrayList<UUID>();
@@ -80,7 +90,7 @@ public class TermManager extends ContextListenerAdapter{
                        hiddenTermsMap.put(typeName, hiddenTermUuids);
                }
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
         */
@@ -88,7 +98,7 @@ public class TermManager extends ContextListenerAdapter{
        public void contextStop(IMemento memento, IProgressMonitor monitor) {
                saveTerms(memento, monitor);
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
         */
@@ -96,10 +106,12 @@ public class TermManager extends ContextListenerAdapter{
        public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
                saveTerms(memento, monitor);
        }
-       
+
        private void saveTerms(IMemento memento, IProgressMonitor monitor){
-               if(memento == null) return;
-               
+               if(memento == null) {
+            return;
+        }
+
                IMemento terms = memento.createChild(TERMS);
                for (String preferredTerm : hiddenTermsMap.keySet()){
                        IMemento term = terms.createChild(TERM);
@@ -110,7 +122,7 @@ public class TermManager extends ContextListenerAdapter{
                        }
                }
        }
-       
+
        /**
         * Generic method to get term preferences for a term vocabulary
         *
@@ -120,27 +132,30 @@ public class TermManager extends ContextListenerAdapter{
        public <T extends DefinedTermBase> List<T> getFilteredTerms(List<T> initialTerms){
 
                List<T> filteredTerms = new ArrayList<T>();
-               
+
                String typeName = getTermClass(initialTerms);
                Collection<UUID> hiddenTermUuids = hiddenTermsMap.get(typeName);
-               
+
                if(hiddenTermUuids == null){
                        return initialTerms;
                }
-               
-               for (T term : initialTerms){                    
+
+               for (T term : initialTerms){
                        if(! hiddenTermUuids.contains(term.getUuid())){
                                filteredTerms.add(term);
                        }
                }
-               
-               return filteredTerms;           
+
+               return filteredTerms;
        }
-       
+
        private <T extends DefinedTermBase> String getTermClass(Collection<T> initialTerms){
-               return initialTerms.iterator().next().getClass().getName();
+           if(!initialTerms.isEmpty()){
+               return initialTerms.iterator().next().getClass().getName();
+           }
+           return null;
        }
-       
+
 //     /**
 //      * <p>getPreferredSpecimenTypeDesignationStatus</p>
 //      *
@@ -154,49 +169,49 @@ public class TermManager extends ContextListenerAdapter{
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<NameTypeDesignationStatus> getPreferredNameTypeDesignationStatus() { return getFilteredTerms(TermStore.getNameTypeDesignationStatus()); }
-//     
+//
 //     /**
 //      * <p>getPreferredTaxonRelationshipTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<TaxonRelationshipType> getPreferredTaxonRelationshipTypes() { return getFilteredTerms(TermStore.getTaxonRelationshipTypes());}
-//     
+//
 //     private static List<TaxonRelationshipType> excludeTaxonRelationshipTypes = Arrays.asList(new TaxonRelationshipType[]{
 //                     TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN(),
 //                     TaxonRelationshipType.MISAPPLIED_NAME_FOR(),
 //                     TaxonRelationshipType.ALL_RELATIONSHIPS()
 //     });
-//     
+//
 //     /**
 //      * Please note that the {@link TaxonRelationshipType}s TAXONOMICALLY_INCLUDED_IN, MISAPPLIED_NAME_FOR and ALL_RELATIONSHIPS
 //      * are filtered out as they are most likely not needed. If you do need them please refactor this method to your needs.
-//      * 
+//      *
 //      * @return a list of {@link TaxonRelationshipTypeInverseContainer} elements
 //      */
 //     public List<TaxonRelationshipTypeInverseContainer> getPreferredRelationshipTypesWithInverses(){
 //             List<TaxonRelationshipTypeInverseContainer> relationshipTypeInverseContainers = new ArrayList<TaxonRelationshipTypeInverseContainer>();
-//             
+//
 //             List<TaxonRelationshipType> relationshipTypes = getPreferredTaxonRelationshipTypes();
-//             
+//
 //             relationshipTypes.removeAll(excludeTaxonRelationshipTypes);
-//             
+//
 //             for (TaxonRelationshipType relationshipType : relationshipTypes){
 //                     if(!relationshipType.isSymmetric()){
 //                             TaxonRelationshipTypeInverseContainer inverseContainer = new TaxonRelationshipTypeInverseContainer(relationshipType, true);
 //                             relationshipTypeInverseContainers.add(inverseContainer);
-//                     }                       
+//                     }
 //                     TaxonRelationshipTypeInverseContainer container = new TaxonRelationshipTypeInverseContainer(relationshipType, false);
-//                     relationshipTypeInverseContainers.add(container);                       
-//             }               
-//             
+//                     relationshipTypeInverseContainers.add(container);
+//             }
+//
 //             return relationshipTypeInverseContainers;
 //     }
-       
 
-       
-       
-//     
+
+
+
+//
 //     /**
 //      * <p>getPreferredFeatures</p>
 //      *
@@ -210,76 +225,76 @@ public class TermManager extends ContextListenerAdapter{
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<Rank> getPreferredRanks() { return getFilteredTerms(TermStore.getRanks());}
-//     
+//
 //     /**
 //      * <p>getPreferredPresenceAbsenceTerms</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<PresenceAbsenceTermBase> getPreferredPresenceAbsenceTerms(){ return getFilteredTerms(TermStore.getPresenceAbsenceTerms());}
-//     
+//
 //     /**
 //      * <p>getPreferredNomenclaturalStatusTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<NomenclaturalStatusType> getPreferredNomenclaturalStatusTypes(){    return getFilteredTerms(TermStore.getNomenclaturalStatusTypes());}
-//     
+//
 //     /**
 //      * <p>getPreferredNameRelationshipTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<NameRelationshipType> getPreferredNameRelationshipTypes(){ return getFilteredTerms(TermStore.getNameRelationshipTypes());}
-//     
+//
 //     /**
 //      * <p>getPreferredLanguages</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<Language> getPreferredLanguages() { return getFilteredTerms(TermStore.getLanguages()); }
-//     
+//
 //     /**
 //      * <p>getPreferredMarkerTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<MarkerType> getPreferredMarkerTypes() { return getFilteredTerms(TermStore.getNonTechnicalMarkerTypes()); }
-//     
+//
 //     /**
 //      * <p>getPreferredExtensionTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<ExtensionType> getPreferredExtensionTypes() { return getFilteredTerms(TermStore.getExtensionTypes()); }
-//     
+//
 //     /**
 //      * <p>getPreferredRightsTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<RightsType> getPreferredRightsTypes() {     return getFilteredTerms(TermStore.getRightsTypes());}
-//     
+//
 //     /**
 //      * <p>getPreferredNamedAreaTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
-//     public List<NamedAreaType> getPreferredNamedAreaTypes() { return getFilteredTerms(TermStore.getNamedAreaTypes()); } 
-//     
+//     public List<NamedAreaType> getPreferredNamedAreaTypes() { return getFilteredTerms(TermStore.getNamedAreaTypes()); }
+//
 //     /**
 //      * <p>getPreferredNamedAreaTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
-//     public List<NamedAreaLevel> getPreferredNamedAreaLevels() { return getFilteredTerms(TermStore.getNamedAreaLevels()); } 
-//     
+//     public List<NamedAreaLevel> getPreferredNamedAreaLevels() { return getFilteredTerms(TermStore.getNamedAreaLevels()); }
+//
 //     /**
 //      * <p>getPreferredAnnotationTypes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
-//     public List<AnnotationType> getPreferredAnnotationTypes() { return getFilteredTerms(TermStore.getAnnotationTypes()); } 
+//     public List<AnnotationType> getPreferredAnnotationTypes() { return getFilteredTerms(TermStore.getAnnotationTypes()); }
 //
 //     /**
 //      * <p>getPreferredStages</p>
@@ -287,56 +302,56 @@ public class TermManager extends ContextListenerAdapter{
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<Stage> getPreferredStages() { return getFilteredTerms(TermStore.getStages()); }
-//     
+//
 //     /**
 //      * <p>getPreferredPreservationMethods</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<PreservationMethod> getPreferredPreservationMethods() { return getFilteredTerms(TermStore.getPreservationMethods()); }
-//     
+//
 //     /**
 //      * <p>getPreferredMeasurementUnits</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<MeasurementUnit> getPreferredMeasurementUnits() { return getFilteredTerms(TermStore.getMeasurementUnits()); }
-//     
+//
 //     /**
 //      * <p>getPreferredStates</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<State> getPreferredStates() { return getFilteredTerms(TermStore.getStates()); }
-//     
+//
 //     /**
 //      * <p>getPreferredModifiers</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<Modifier> getPreferredModifiers() { return getFilteredTerms(TermStore.getModifiers()); }
-//     
+//
 //     /**
 //      * <p>getPreferredStatisticalMeasures</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<StatisticalMeasure> getPreferredStatisticalMeasures() { return getFilteredTerms(TermStore.getStatisticalMeasures()); }
-//     
+//
 //     /**
 //      * <p>getPreferredScopes</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<Scope> getPreferredScopes() { return getFilteredTerms(TermStore.getScopes()); }
-//     
+//
 //     /**
 //      * <p>getPreferredDeterminationModifiers</p>
 //      *
 //      * @return a {@link java.util.List} object.
 //      */
 //     public List<DeterminationModifier> getPreferredDeterminationModifiers() { return getFilteredTerms(TermStore.getDeterminationModifiers()); }
-//     
+//
        /**
         * Generic method to set term preferences
         *
@@ -346,15 +361,15 @@ public class TermManager extends ContextListenerAdapter{
         */
        public <T extends DefinedTermBase> void setPreferredTerms(Collection<T> preferredTerms, Collection<T> initialTerms){
                String typeName = getTermClass(initialTerms);
-               
+
                Collection<UUID> undesiredTermUuids = new ArrayList<UUID>();
-               
+
                for(TermBase term : initialTerms){
                        if(! preferredTerms.contains(term)){
                                undesiredTermUuids.add(term.getUuid());
                        }
                }
-               
+
                hiddenTermsMap.put(typeName, undesiredTermUuids);
        }
 }