1 package eu
.etaxonomy
.cdm
.api
.service
;
3 import java
.util
.Iterator
;
7 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTerm
;
8 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
9 import eu
.etaxonomy
.cdm
.model
.description
.State
;
10 import eu
.etaxonomy
.cdm
.model
.description
.StateData
;
11 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
13 public class DefaultCategoricalDescriptionBuilder
extends AbstractCategoricalDescriptionBuilder
{
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
<DefinedTerm
> modifiers
= stateData
.getModifiers(); // the states and their according modifiers are simply concatenated one after the other
23 for (Iterator
<DefinedTerm
> mod
= modifiers
.iterator() ; mod
.hasNext() ;){
24 DefinedTerm modifier
= mod
.next();
25 CategoricalDescription
.append(" " + getRightText(modifier
.getPreferredRepresentation(languages
)));
28 CategoricalDescription
.append(" " + getRightText(s
.getPreferredRepresentation(languages
)));
30 language
= s
.getPreferredRepresentation(languages
).getLanguage();
33 if (sd
.hasNext()) CategoricalDescription
.append(separator
);
37 language
= Language
.DEFAULT();
39 textData
.putText(language
, CategoricalDescription
.toString());