cleanup
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / DefaultCategoricalDescriptionBuilder.java
index 939ec3bf44472c762794dd593a954288cf94edee..b8a1869de33fd7946ee3309f341d6dbf27ee175c 100644 (file)
@@ -4,37 +4,48 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.Modifier;
+import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.cdm.model.description.TextData;
 
 public class DefaultCategoricalDescriptionBuilder extends AbstractCategoricalDescriptionBuilder{
-       
-       protected TextData doBuild(List<StateData> states, List<Language> languages){
+
+       @Override
+    protected TextData doBuild(List<StateData> states, List<Language> languages){
                TextData textData = TextData.NewInstance();// TextData that will contain the description and the language corresponding
-               StringBuilder CategoricalDescription = new StringBuilder();
+               StringBuilder categoricalDescription = new StringBuilder();
                Language language = null;
                for (Iterator<StateData> sd = states.iterator() ; sd.hasNext() ;){
                        StateData stateData = sd.next();
                        State s = stateData.getState();
-                       Set<Modifier> modifiers = stateData.getModifiers(); // the states and their according modifiers are simply concatenated one after the other
-                       for (Iterator<Modifier> mod = modifiers.iterator() ; mod.hasNext() ;){
-                               Modifier modifier = mod.next();
-                               CategoricalDescription.append(" " + getRightText(modifier.getPreferredRepresentation(languages)));
+                       if(s != null && language==null) {
+                           language = s.getPreferredRepresentation(languages).getLanguage();
                        }
-                       CategoricalDescription.append(" " + getRightText(s.getPreferredRepresentation(languages)));
-                       if (sd.hasNext()) CategoricalDescription.append(separator);
                        if (language==null) {
-                               language = s.getPreferredRepresentation(languages).getLanguage();
+                           language = Language.DEFAULT();
                        }
+                       if(stateData.getModifyingText()!=null && stateData.getModifyingText().get(language)!=null){
+                           LanguageString modyfingText = stateData.getModifyingText().get(language);
+                           categoricalDescription.append(modyfingText.getText());
+                       }
+                       Set<DefinedTerm> modifiers = stateData.getModifiers(); // the states and their according modifiers are simply concatenated one after the other
+                       for (Iterator<DefinedTerm> mod = modifiers.iterator() ; mod.hasNext() ;){
+                               DefinedTerm modifier = mod.next();
+                               categoricalDescription.append(" " + getRightText(modifier.getPreferredRepresentation(languages)));
+                       }
+                       if(s!=null){
+                           categoricalDescription.append(" " + getRightText(s.getPreferredRepresentation(languages)));
+                       }
+                       if (sd.hasNext()) {
+                categoricalDescription.append(separator);
+            }
+
                }
-               if (language==null) {
-                       language = Language.DEFAULT();
-               }
-               textData.putText(CategoricalDescription.toString(), language);
-               
+               textData.putText(language, categoricalDescription.toString());
+
                return textData;
        }