// $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.
*/
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;
/**
* @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)
*/
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>();
hiddenTermsMap.put(typeName, hiddenTermUuids);
}
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
*/
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)
*/
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);
}
}
}
-
+
/**
* Generic method to get term preferences for a term vocabulary
*
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>
// *
// * @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>
// *
// * @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>
// * @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
*
*/
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);
}
}