2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.store
;
12 import java
.util
.ArrayList
;
13 import java
.util
.Collection
;
14 import java
.util
.List
;
15 import java
.util
.UUID
;
17 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
18 import eu
.etaxonomy
.cdm
.model
.common
.TermBase
;
19 import eu
.etaxonomy
.cdm
.model
.common
.TermType
;
20 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
21 import eu
.etaxonomy
.taxeditor
.model
.TaxonRelationshipTypeInverseContainer
;
22 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
26 * @created Dec 7, 2010
29 public class TermManager
{
31 private static final String TERMS
= "terms";
32 private static final String TERM
= "term";
33 private static final String HIDE
= "hide";
35 private static final String CLASS
= "class";
36 private static final String UUID_STRING
= "uuid";
46 public <T
extends DefinedTermBase
> List
<T
> getPreferredTerms(TermType termType
){
47 return getFilteredTerms(TermStore
.<T
>getTerms(termType
, null));
55 public <T
extends DefinedTermBase
> List
<T
> getPreferredTerms(TermVocabulary
<T
> termVocabulary
){
56 return getFilteredTerms(new ArrayList
<T
>(TermStore
.getTerms(termVocabulary
, null)));
64 public <T
extends DefinedTermBase
> List
<T
> getPreferredTerms(Class
<T
> clazz
){
65 return getFilteredTerms(TermStore
.getTerms(clazz
));
69 * Generic method to get term preferences for a term vocabulary
71 * @param initialTerms a {@link java.util.List} object.
72 * @return a {@link java.util.List} object.
74 public <T
extends DefinedTermBase
> List
<T
> getFilteredTerms(List
<T
> initialTerms
){
76 List
<T
> filteredTerms
= new ArrayList
<T
>();
78 for (T term
: initialTerms
){
80 if (term
instanceof TaxonRelationshipTypeInverseContainer
){
81 if(!PreferencesUtil
.getPreferenceStore().getBoolean(getPrefName(term
))){
82 T type
= (T
)((TaxonRelationshipTypeInverseContainer
) term
).getType();
83 filteredTerms
.add(type
);
88 if(!PreferencesUtil
.getPreferenceStore().getBoolean(getPrefName(term
))){
89 filteredTerms
.add(term
);
96 private <T
extends TermBase
> String
getPrefName(T term
) {
97 return term
.getTermType()!=null?term
.getTermType().toString()+term
.getUuid().toString():""+term
.getUuid().toString();
101 private <T
extends DefinedTermBase
> String
getTermClass(Collection
<T
> initialTerms
){
103 String result
= null;
104 if(!initialTerms
.isEmpty()){
106 //TODO: there should be a more generic solution!!
107 T entity
= initialTerms
.iterator().next();
108 if (entity
instanceof TaxonRelationshipTypeInverseContainer
){
109 result
= ((TaxonRelationshipTypeInverseContainer
) entity
).getType().getClass().getName();
111 result
= entity
.getClass().getName();
119 * Generic method to set term preferences
121 * @param preferredTerms a {@link java.util.List} object.
122 * @param initialTerms a {@link java.util.List} object.
123 * @param <T> a T object.
125 public <T
extends DefinedTermBase
> void setPreferredTerms(Collection
<T
> preferredTerms
, Collection
<T
> initialTerms
){
126 String typeName
= getTermClass(initialTerms
);
128 Collection
<UUID
> undesiredTermUuids
= new ArrayList
<UUID
>();
130 for(TermBase term
: initialTerms
){
131 if(! preferredTerms
.contains(term
)){
132 undesiredTermUuids
.add(term
.getUuid());
133 PreferencesUtil
.getPreferenceStore().setValue(getPrefName(term
), true);
135 PreferencesUtil
.getPreferenceStore().setValue(getPrefName(term
), false);