X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/17f568863370cea76d60d87d3911065a088528e3..8849a7eb10f7d2d587fbccb4610fa7e38c9be78d:/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategoricalDescriptionBuilder.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategoricalDescriptionBuilder.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategoricalDescriptionBuilder.java index 0b6c2831c8..990ef541e0 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategoricalDescriptionBuilder.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategoricalDescriptionBuilder.java @@ -6,54 +6,67 @@ import java.util.Set; import org.apache.commons.lang.StringUtils; -import eu.etaxonomy.cdm.model.common.DefinedTerm; import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.common.LanguageString; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.State; import eu.etaxonomy.cdm.model.description.StateData; import eu.etaxonomy.cdm.model.description.TextData; +import eu.etaxonomy.cdm.model.term.DefinedTerm; public class MicroFormatCategoricalDescriptionBuilder extends AbstractCategoricalDescriptionBuilder{ - - private String spanEnd = ""; - - protected TextData doBuild(List states, List languages){ + + private final String spanEnd = ""; + + @Override + protected TextData doBuild(List states, List 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 sd = states.iterator() ; sd.hasNext() ;){ StateData stateData = sd.next(); State s = stateData.getState(); + if(s != null && language==null) { + language = s.getPreferredRepresentation(languages).getLanguage(); + } + if (language==null) { + language = Language.DEFAULT(); + } + if(stateData.getModifyingText()!=null && stateData.getModifyingText().get(language)!=null){ + LanguageString modyfingText = stateData.getModifyingText().get(language); + categoricalDescription.append(spanClass("modifier") + modyfingText.getText() + spanEnd); + } Set modifiers = stateData.getModifiers(); // the states and their according modifiers are simply written one after the other for (Iterator mod = modifiers.iterator() ; mod.hasNext() ;){ DefinedTerm modifier = mod.next(); - CategoricalDescription.append(" " + spanClass("modifier") + modifier.getPreferredRepresentation(languages).getLabel() + spanEnd); + categoricalDescription.append(" " + spanClass("modifier") + modifier.getPreferredRepresentation(languages).getLabel() + spanEnd); } - CategoricalDescription.append(" " + spanClass("state") + s.getPreferredRepresentation(languages).getLabel() + spanEnd); - if (sd.hasNext()) CategoricalDescription.append(','); + categoricalDescription.append(" " + spanClass("state") + s.getPreferredRepresentation(languages).getLabel() + spanEnd); + if (sd.hasNext()) { + categoricalDescription.append(','); + } if (language==null) { language = s.getPreferredRepresentation(languages).getLanguage(); // TODO What if there are different languages ? } } - if (language==null) { - language = Language.DEFAULT(); - } - textData.putText(language, CategoricalDescription.toString()); - + textData.putText(language, categoricalDescription.toString()); + return textData; } protected String buildFeature(Feature feature, boolean doItBetter){ - if (feature==null || feature.getLabel()==null) return ""; - else { + if (feature==null || feature.getLabel()==null) { + return ""; + } else { if (doItBetter) { String betterString = StringUtils.substringBefore(feature.getLabel(), "<"); return (spanClass("feature") + StringUtils.removeEnd(betterString, " ") + spanEnd); - } - else return (spanClass("feature") + feature.getLabel() + spanEnd); + } else { + return (spanClass("feature") + feature.getLabel() + spanEnd); + } } } - + private String spanClass(String classString){ return(""); }