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
1 package eu.etaxonomy.cdm.api.service;
2
3 import java.util.List;
4
5 import eu.etaxonomy.cdm.model.common.Language;
6 import eu.etaxonomy.cdm.model.common.Representation;
7 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
8 import eu.etaxonomy.cdm.model.description.Feature;
9 import eu.etaxonomy.cdm.model.description.TextData;
10
11 public abstract class DescriptionBuilder<T extends DescriptionElementBase> {
12
13 protected String separator = ",";
14 private int option = 0;
15
16 public void returnAbbreviatedLabels() {
17 option=1;
18 }
19
20 public void returnTexts() {
21 option=2;
22 }
23
24 public void returnLabels() {
25 option=0;
26 }
27
28 public void setSeparator(String newSeparator) {
29 separator = newSeparator;
30 }
31
32 public String getSeparator() {
33 return separator;
34 }
35
36 public abstract TextData build(T descriptionElement, List<Language> languages);
37
38 protected String getRightText(Representation representation){
39 String result;
40 if (option==1){
41 result = representation.getAbbreviatedLabel();
42 if (result != null) return result;
43 }
44 else if (option==2){
45 result = representation.getText();
46 if (result != null) return result;
47 }
48 return representation.getLabel();
49 }
50
51 public TextData buildTextDataFeature(Feature feature, List<Language> languages){
52 return TextData.NewInstance(getRightText(feature.getPreferredRepresentation(languages)),languages.get(0),null);
53 }
54
55 }