1 package eu
.etaxonomy
.cdm
.api
.service
;
3 import static org
.junit
.Assert
.assertNotNull
;
4 import static org
.junit
.Assert
.assertEquals
;
5 import static org
.junit
.Assert
.assertTrue
;
7 import java
.util
.HashSet
;
8 import java
.util
.Iterator
;
12 import org
.apache
.log4j
.Logger
;
13 import org
.junit
.Before
;
14 import org
.junit
.Ignore
;
15 import org
.junit
.Test
;
16 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
18 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
19 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
20 import eu
.etaxonomy
.cdm
.model
.description
.CategoricalData
;
21 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
22 import eu
.etaxonomy
.cdm
.model
.description
.FeatureTree
;
23 import eu
.etaxonomy
.cdm
.model
.description
.FeatureNode
;
24 import eu
.etaxonomy
.cdm
.model
.description
.MeasurementUnit
;
25 import eu
.etaxonomy
.cdm
.model
.description
.QuantitativeData
;
26 import eu
.etaxonomy
.cdm
.model
.description
.State
;
27 import eu
.etaxonomy
.cdm
.model
.description
.StateData
;
28 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasure
;
29 import eu
.etaxonomy
.cdm
.model
.description
.StatisticalMeasurementValue
;
30 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
31 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
32 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
33 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
34 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
35 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
36 import eu
.etaxonomy
.cdm
.test
.integration
.CdmIntegrationTest
;
37 import eu
.etaxonomy
.cdm
.api
.service
.NaturalLanguageGenerator
;
39 @Ignore //FIXME Remove @Ignore once maximes code is completely comitted
40 public class NaturalLanguageGeneratorTest
extends CdmIntegrationTest
{
42 @SuppressWarnings("unused")
43 private static final Logger logger
= Logger
.getLogger(NaturalLanguageGeneratorTest
.class);
46 private INaturalLanguageGenerator generator
;
48 private FeatureTree featureTree
;
49 private TaxonDescription description
;
50 Set
<Feature
> featureSet
= new HashSet
<Feature
>();
53 public void setUp() throws Exception
{
54 // set up your test objects here
56 NonViralName tnb
= NonViralName
.NewInstance(null);
57 Taxon taxon
= Taxon
.NewInstance(tnb
, null);
58 description
= TaxonDescription
.NewInstance(taxon
);
60 featureTree
= FeatureTree
.NewInstance();
61 FeatureNode root
= FeatureNode
.NewInstance();
62 featureTree
.setRoot(root
);
63 String
[][][] tableStrings
= { { {"a","b"} } , { { "a1" , "a2" } , { "b1" } } };
64 buildBranches(root
,tableStrings
,0,2,0);
65 for (Iterator
<Feature
> f
= featureSet
.iterator() ; f
.hasNext() ;){
66 Feature feature
= f
.next();
67 CategoricalData cg
= CategoricalData
.NewInstance();
68 cg
.setFeature(feature
);
69 State state
= State
.NewInstance(null, feature
.getLabel()+"state", null);
70 StateData stateData
= StateData
.NewInstance();
71 stateData
.setState(state
);
72 cg
.addStateData(stateData
);
73 description
.addElement(cg
);
75 Feature qFeature
= Feature
.NewInstance(null, "c", null);
76 QuantitativeData qd
= QuantitativeData
.NewInstance();
77 MeasurementUnit munit
= MeasurementUnit
.NewInstance(null, "mm", null);
78 StatisticalMeasurementValue smv
= StatisticalMeasurementValue
.NewInstance();
79 smv
.setType(StatisticalMeasure
.AVERAGE());
81 qd
.addStatisticalValue(smv
);
83 qd
.setFeature(qFeature
);
84 description
.addElement(qd
);
85 FeatureNode qNode
= FeatureNode
.NewInstance(qFeature
);
90 public void testGenerateNaturalLanguageDescription() {
91 assertNotNull("FeatureTree should exist", featureTree
);
92 assertNotNull("TaxonDescription should exist", description
);
93 StringBuilder stringBuilder
= new StringBuilder();
94 List
<TextData
> result
= generator
.generateNaturalLanguageDescription(featureTree
,description
, Language
.DEFAULT());
95 for (Iterator
<TextData
> td
= result
.iterator() ; td
.hasNext();) {
96 TextData textD
= td
.next();
97 stringBuilder
.append(textD
.getText(Language
.DEFAULT()));
99 assertTrue("Empty text",!stringBuilder
.equals(""));
100 System
.out
.println(stringBuilder
.toString());
103 public void buildBranches(FeatureNode parent
, String
[][][] children
, int level
, int depth
, int nodeNumber
) {
106 for (j
=0; j
<children
[level
][i
].length
; j
++) {
107 Feature feature
= Feature
.NewInstance(null, children
[level
][i
][j
], null);
108 featureSet
.add(feature
);
109 FeatureNode child
= FeatureNode
.NewInstance(feature
);
110 parent
.addChild(child
);
112 buildBranches(child
, children
,level
+1,depth
, j
);