From: m.venin Date: Fri, 30 Apr 2010 15:54:57 +0000 (+0000) Subject: Modifiers are handled. X-Git-Tag: 3.0.3~1162 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/b575c62a3db74ba913486edf1c154bdfdf2850b0 Modifiers are handled. --- diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java index b7db6a5e21..cee6ba91d7 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java @@ -17,6 +17,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.description.FeatureNode; import eu.etaxonomy.cdm.model.description.FeatureTree; +import eu.etaxonomy.cdm.model.description.Modifier; import eu.etaxonomy.cdm.model.description.QuantitativeData; import eu.etaxonomy.cdm.model.description.State; import eu.etaxonomy.cdm.model.description.StateData; @@ -31,29 +32,28 @@ import eu.etaxonomy.cdm.model.common.Language; @Component public class NaturalLanguageGenerator implements INaturalLanguageGenerator { - public List generateNaturalLanguageDescription(FeatureTree featureTree,Set descriptions) { - return buildBranchesDescr(featureTree.getRootChildren(), featureTree.getRoot(), descriptions, false); + public List generateNaturalLanguageDescription(FeatureTree featureTree,TaxonDescription description) { + return buildBranchesDescr(featureTree.getRootChildren(), featureTree.getRoot(), description, false); } - private List buildBranchesDescr(List children, FeatureNode parent, Set descriptions, boolean leaf) { + private List buildBranchesDescr(List children, FeatureNode parent, TaxonDescription description, boolean leaf) { List listTextData = new ArrayList(); ; if (!parent.isLeaf()){ Feature fref = parent.getFeature(); for (Iterator ifn = children.iterator() ; ifn.hasNext() ;){ FeatureNode fn = ifn.next(); - listTextData.addAll(buildBranchesDescr(fn.getChildren(),fn,descriptions, leaf)); + listTextData.addAll(buildBranchesDescr(fn.getChildren(),fn,description, leaf)); } } else { Feature fref = parent.getFeature(); if (fref!=null) { // needs a better algorithm - for (Iterator db = descriptions.iterator() ; db.hasNext() ;){ - TaxonDescription descriptionBase = db.next(); - Set elements = descriptionBase.getElements(); + int k=0; + Set elements = description.getElements(); for (Iterator deb = elements.iterator() ; deb.hasNext() ;){ DescriptionElementBase descriptionElement = deb.next(); TextData textData = TextData.NewInstance(); - if (descriptionElement.getFeature().getLabel().equals(fref.getLabel())){ + if (descriptionElement.getFeature().equals(fref)){ if (descriptionElement instanceof CategoricalData) { CategoricalData categoricalData = (CategoricalData) descriptionElement; textData = buildCategoricalDescr(categoricalData); @@ -66,14 +66,13 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator { } } } - } leaf = true; } } return listTextData; } - //TODO manage different languages + //TODO manage different languages ? private TextData buildQuantitativeDescr (QuantitativeData quantitativeData) throws ParseException { boolean average = false; @@ -98,23 +97,22 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator { for (Iterator smv = statisticalValues.iterator() ; smv.hasNext() ;){ StatisticalMeasurementValue statisticalValue = smv.next(); StatisticalMeasure type = statisticalValue.getType(); - String label = type.getLabel(); - if (label.equals("Average")) { + if (type.equals(StatisticalMeasure.AVERAGE())) { average = true; averagevalue = statisticalValue.getValue(); - } else if (label.equals("StandardDeviation")) { + } else if(type.equals(StatisticalMeasure.STANDARD_DEVIATION())) { sd = true; sdvalue = statisticalValue.getValue(); - } else if (label.equals("Min")) { + } else if (type.equals(StatisticalMeasure.MIN())) { min = true; minvalue = statisticalValue.getValue(); - } else if (label.equals("Max")) { + } else if (type.equals(StatisticalMeasure.MAX())) { max = true; maxvalue = statisticalValue.getValue(); - } else if (label.equals("TypicalLowerBoundary")) { + } else if (type.equals(StatisticalMeasure.TYPICAL_LOWER_BOUNDARY())) { lowerb = true; lowerbvalue = statisticalValue.getValue(); - } else if (label.equals("TypicalUpperBoundary")) { + } else if (type.equals(StatisticalMeasure.TYPICAL_UPPER_BOUNDARY())) { upperb = true; upperbvalue = statisticalValue.getValue(); } @@ -160,11 +158,18 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator { Feature feature = categoricalData.getFeature(); TextData textData = TextData.NewInstance(feature); List states = categoricalData.getStates(); + StringBuilder CategoricalDescription = new StringBuilder(); - CategoricalDescription.append(" "+feature.getLabel()); + //CategoricalDescription.append(" "+feature.getLabel()); + for (Iterator sd = states.iterator() ; sd.hasNext() ;){ StateData stateData = sd.next(); State s = stateData.getState(); + Set modifiers = stateData.getModifiers(); + for (Iterator mod = modifiers.iterator() ; mod.hasNext() ;){ + Modifier modifier = mod.next(); + CategoricalDescription.append(" " + modifier.getLabel()); + } CategoricalDescription.append(" " + s.getLabel()); } textData.putText(CategoricalDescription.toString(), Language.ENGLISH());