Project

General

Profile

Download (2.36 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 org.apache.commons.lang.StringUtils;
8

    
9
import eu.etaxonomy.cdm.model.common.Language;
10
import eu.etaxonomy.cdm.model.description.Feature;
11
import eu.etaxonomy.cdm.model.description.Modifier;
12
import eu.etaxonomy.cdm.model.description.State;
13
import eu.etaxonomy.cdm.model.description.StateData;
14
import eu.etaxonomy.cdm.model.description.TextData;
15

    
16
public class MicroFormatCategoricalDescriptionBuilder extends AbstractCategoricalDescriptionBuilder{
17
	
18
	private String spanEnd = "</span>";
19
	
20
	protected TextData doBuild(List<StateData> states, List<Language> languages){
21
		TextData textData = TextData.NewInstance();// TextData that will contain the description and the language corresponding
22
		StringBuilder CategoricalDescription = new StringBuilder();
23
		Language language = null;
24
		for (Iterator<StateData> sd = states.iterator() ; sd.hasNext() ;){
25
			StateData stateData = sd.next();
26
			State s = stateData.getState();
27
			Set<Modifier> modifiers = stateData.getModifiers(); // the states and their according modifiers are simply written one after the other
28
			for (Iterator<Modifier> mod = modifiers.iterator() ; mod.hasNext() ;){
29
				Modifier modifier = mod.next();
30
				CategoricalDescription.append(" " + spanClass("modifier") + modifier.getPreferredRepresentation(languages).getLabel() + spanEnd);
31
			}
32
			CategoricalDescription.append(" " + spanClass("state") + s.getPreferredRepresentation(languages).getLabel() + spanEnd);
33
			if (sd.hasNext()) CategoricalDescription.append(',');
34
			if (language==null) {
35
				language = s.getPreferredRepresentation(languages).getLanguage(); // TODO What if there are different languages ?
36
			}
37
		}
38
		if (language==null) {
39
			language = Language.DEFAULT();
40
		}
41
		textData.putText(language, CategoricalDescription.toString());
42
		
43
		return textData;
44
	}
45

    
46
	protected String buildFeature(Feature feature, boolean doItBetter){
47
		if (feature==null || feature.getLabel()==null) return "";
48
		else {
49
			if (doItBetter) {
50
				String betterString = StringUtils.substringBefore(feature.getLabel(), "<");
51
				return (spanClass("feature") + StringUtils.removeEnd(betterString, " ") + spanEnd);
52
			}
53
			else	return (spanClass("feature") + feature.getLabel() + spanEnd);
54
		}
55
	}
56
	
57
	private String spanClass(String classString){
58
		return("<span class=\""+classString+"\">");
59
	}
60
}
(58-58/76)