1 |
8f0a4be2
|
m.venin
|
package eu.etaxonomy.cdm.api.service;
|
2 |
|
|
|
3 |
|
|
import java.util.Iterator;
|
4 |
|
|
import java.util.List;
|
5 |
|
|
import java.util.Set;
|
6 |
|
|
|
7 |
533cbb43
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.common.DefinedTerm;
|
8 |
8f0a4be2
|
m.venin
|
import eu.etaxonomy.cdm.model.common.Language;
|
9 |
b09c1f76
|
Patric Plitzner
|
import eu.etaxonomy.cdm.model.common.LanguageString;
|
10 |
8f0a4be2
|
m.venin
|
import eu.etaxonomy.cdm.model.description.State;
|
11 |
|
|
import eu.etaxonomy.cdm.model.description.StateData;
|
12 |
|
|
import eu.etaxonomy.cdm.model.description.TextData;
|
13 |
|
|
|
14 |
|
|
public class DefaultCategoricalDescriptionBuilder extends AbstractCategoricalDescriptionBuilder{
|
15 |
b09c1f76
|
Patric Plitzner
|
|
16 |
|
|
@Override
|
17 |
|
|
protected TextData doBuild(List<StateData> states, List<Language> languages){
|
18 |
b99504a8
|
m.venin
|
TextData textData = TextData.NewInstance();// TextData that will contain the description and the language corresponding
|
19 |
b09c1f76
|
Patric Plitzner
|
StringBuilder categoricalDescription = new StringBuilder();
|
20 |
cba2e95a
|
m.venin
|
Language language = null;
|
21 |
8f0a4be2
|
m.venin
|
for (Iterator<StateData> sd = states.iterator() ; sd.hasNext() ;){
|
22 |
|
|
StateData stateData = sd.next();
|
23 |
|
|
State s = stateData.getState();
|
24 |
b09c1f76
|
Patric Plitzner
|
if(s != null && language==null) {
|
25 |
|
|
language = s.getPreferredRepresentation(languages).getLanguage();
|
26 |
|
|
}
|
27 |
|
|
if (language==null) {
|
28 |
|
|
language = Language.DEFAULT();
|
29 |
|
|
}
|
30 |
|
|
if(stateData.getModifyingText()!=null && stateData.getModifyingText().get(language)!=null){
|
31 |
|
|
LanguageString modyfingText = stateData.getModifyingText().get(language);
|
32 |
|
|
categoricalDescription.append(modyfingText.getText());
|
33 |
|
|
}
|
34 |
533cbb43
|
Andreas Müller
|
Set<DefinedTerm> modifiers = stateData.getModifiers(); // the states and their according modifiers are simply concatenated one after the other
|
35 |
|
|
for (Iterator<DefinedTerm> mod = modifiers.iterator() ; mod.hasNext() ;){
|
36 |
|
|
DefinedTerm modifier = mod.next();
|
37 |
b09c1f76
|
Patric Plitzner
|
categoricalDescription.append(" " + getRightText(modifier.getPreferredRepresentation(languages)));
|
38 |
cba2e95a
|
m.venin
|
}
|
39 |
b09c1f76
|
Patric Plitzner
|
if(s!=null){
|
40 |
|
|
categoricalDescription.append(" " + getRightText(s.getPreferredRepresentation(languages)));
|
41 |
8f0a4be2
|
m.venin
|
}
|
42 |
b09c1f76
|
Patric Plitzner
|
if (sd.hasNext()) {
|
43 |
|
|
categoricalDescription.append(separator);
|
44 |
|
|
}
|
45 |
|
|
|
46 |
8f0a4be2
|
m.venin
|
}
|
47 |
b09c1f76
|
Patric Plitzner
|
textData.putText(language, categoricalDescription.toString());
|
48 |
|
|
|
49 |
8f0a4be2
|
m.venin
|
return textData;
|
50 |
|
|
}
|
51 |
cba2e95a
|
m.venin
|
|
52 |
8f0a4be2
|
m.venin
|
}
|