1
|
package eu.etaxonomy.cdm.api.service;
|
2
|
|
3
|
import java.util.Iterator;
|
4
|
import java.util.List;
|
5
|
import java.util.Set;
|
6
|
|
7
|
import eu.etaxonomy.cdm.model.common.Language;
|
8
|
import eu.etaxonomy.cdm.model.description.Modifier;
|
9
|
import eu.etaxonomy.cdm.model.description.State;
|
10
|
import eu.etaxonomy.cdm.model.description.StateData;
|
11
|
import eu.etaxonomy.cdm.model.description.TextData;
|
12
|
|
13
|
public class DefaultCategoricalDescriptionBuilder extends AbstractCategoricalDescriptionBuilder{
|
14
|
|
15
|
protected TextData doBuild(List<StateData> states, List<Language> languages){
|
16
|
TextData textData = TextData.NewInstance();// TextData that will contain the description and the language corresponding
|
17
|
StringBuilder CategoricalDescription = new StringBuilder();
|
18
|
Language language = null;
|
19
|
for (Iterator<StateData> sd = states.iterator() ; sd.hasNext() ;){
|
20
|
StateData stateData = sd.next();
|
21
|
State s = stateData.getState();
|
22
|
Set<Modifier> modifiers = stateData.getModifiers(); // the states and their according modifiers are simply concatenated one after the other
|
23
|
for (Iterator<Modifier> mod = modifiers.iterator() ; mod.hasNext() ;){
|
24
|
Modifier modifier = mod.next();
|
25
|
CategoricalDescription.append(" " + getRightText(modifier.getPreferredRepresentation(languages)));
|
26
|
}
|
27
|
if(s != null) {
|
28
|
CategoricalDescription.append(" " + getRightText(s.getPreferredRepresentation(languages)));
|
29
|
if (language==null) {
|
30
|
language = s.getPreferredRepresentation(languages).getLanguage();
|
31
|
}
|
32
|
}
|
33
|
if (sd.hasNext()) CategoricalDescription.append(separator);
|
34
|
|
35
|
}
|
36
|
if (language==null) {
|
37
|
language = Language.DEFAULT();
|
38
|
}
|
39
|
textData.putText(language, CategoricalDescription.toString());
|
40
|
|
41
|
return textData;
|
42
|
}
|
43
|
|
44
|
}
|