Last updates for natural language generation (added comments, new options, cleaned...
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / DescriptionBuilder.java
index 0a1e9a6317f64ce57e50f88a6a46dbd372139052..0d14a1e95079e9b32323b5081893d45268f43a5d 100644 (file)
@@ -1,10 +1,55 @@
 package eu.etaxonomy.cdm.api.service;
 
+import java.util.List;
+
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Representation;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.TextData;
 
 public abstract class DescriptionBuilder<T extends DescriptionElementBase> {
-       public abstract TextData build(T descriptionElement);
        
+       protected String separator = ",";
+       private int option = 0;
+       
+       public void returnAbbreviatedLabels() {
+               option=1;
+       }
+       
+       public void returnTexts() {
+               option=2;
+       }
+       
+       public void returnLabels() {
+               option=0;
+       }
+       
+       public void setSeparator(String newSeparator) {
+               separator = newSeparator;
+       }
+       
+       public String getSeparator() {
+               return separator;
+       }
+       
+       public abstract TextData build(T descriptionElement, List<Language> languages);
+       
+       protected String getRightText(Representation representation){
+               String result;
+               if (option==1){
+                       result = representation.getAbbreviatedLabel();
+                       if (result != null) return result;
+               }
+               else if (option==2){
+                       result = representation.getText();
+                       if (result != null) return result;
+               }
+               return representation.getLabel();
+       }
+       
+       public TextData buildTextDataFeature(Feature feature, List<Language> languages){
+               return TextData.NewInstance(getRightText(feature.getPreferredRepresentation(languages)),languages.get(0),null);
+       }
        
-}
+}
\ No newline at end of file