Revert last commit (taxon node handling is done in taxeditor)
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / DefaultCategoricalDescriptionBuilder.java
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.DefinedTerm;
8 import eu.etaxonomy.cdm.model.common.Language;
9 import eu.etaxonomy.cdm.model.common.LanguageString;
10 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
16 @Override
17 protected TextData doBuild(List<StateData> states, List<Language> languages){
18 TextData textData = TextData.NewInstance();// TextData that will contain the description and the language corresponding
19 StringBuilder categoricalDescription = new StringBuilder();
20 Language language = null;
21 for (Iterator<StateData> sd = states.iterator() ; sd.hasNext() ;){
22 StateData stateData = sd.next();
23 State s = stateData.getState();
24 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 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 categoricalDescription.append(" " + getRightText(modifier.getPreferredRepresentation(languages)));
38 }
39 if(s!=null){
40 categoricalDescription.append(" " + getRightText(s.getPreferredRepresentation(languages)));
41 }
42 if (sd.hasNext()) {
43 categoricalDescription.append(separator);
44 }
45
46 }
47 textData.putText(language, categoricalDescription.toString());
48
49 return textData;
50 }
51
52 }