Project

General

Profile

Download (2.02 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(11-11/103)