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
.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
;
14 public class DefaultCategoricalDescriptionBuilder
extends AbstractCategoricalDescriptionBuilder
{
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();
28 language
= Language
.DEFAULT();
30 if(stateData
.getModifyingText()!=null && stateData
.getModifyingText().get(language
)!=null){
31 LanguageString modyfingText
= stateData
.getModifyingText().get(language
);
32 categoricalDescription
.append(modyfingText
.getText());
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
)));
40 categoricalDescription
.append(" " + getRightText(s
.getPreferredRepresentation(languages
)));
43 categoricalDescription
.append(separator
);
47 textData
.putText(language
, categoricalDescription
.toString());