Project

General

Profile

Download (4.72 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.api.service;
2

    
3
import static org.junit.Assert.assertNotNull;
4
import static org.junit.Assert.assertEquals;
5
import static org.junit.Assert.assertTrue;
6

    
7
import java.io.FileNotFoundException;
8
import java.util.HashSet;
9
import java.util.Iterator;
10
import java.util.List;
11
import java.util.Set;
12

    
13
import org.apache.log4j.Logger;
14
import org.junit.Before;
15
import org.junit.Ignore;
16
import org.junit.Test;
17
import org.unitils.spring.annotation.SpringBeanByType;
18

    
19
import eu.etaxonomy.cdm.model.common.Language;
20
import eu.etaxonomy.cdm.model.common.TermVocabulary;
21
import eu.etaxonomy.cdm.model.description.CategoricalData;
22
import eu.etaxonomy.cdm.model.description.Feature;
23
import eu.etaxonomy.cdm.model.description.FeatureTree;
24
import eu.etaxonomy.cdm.model.description.FeatureNode;
25
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
26
import eu.etaxonomy.cdm.model.description.QuantitativeData;
27
import eu.etaxonomy.cdm.model.description.State;
28
import eu.etaxonomy.cdm.model.description.StateData;
29
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
30
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
31
import eu.etaxonomy.cdm.model.description.TaxonDescription;
32
import eu.etaxonomy.cdm.model.description.TextData;
33
import eu.etaxonomy.cdm.model.name.NonViralName;
34
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
35
import eu.etaxonomy.cdm.model.reference.Reference;
36
import eu.etaxonomy.cdm.model.taxon.Taxon;
37
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
38
import eu.etaxonomy.cdm.api.service.NaturalLanguageGenerator;
39

    
40
@Ignore //FIXME Remove @Ignore once maximes code is completely comitted
41
public class NaturalLanguageGeneratorTest extends CdmIntegrationTest {
42
	
43
	@SuppressWarnings("unused")
44
	private static final Logger logger = Logger.getLogger(NaturalLanguageGeneratorTest.class);
45
	
46
	@SpringBeanByType
47
	private INaturalLanguageGenerator generator;
48
	
49
    private FeatureTree featureTree;
50
    private TaxonDescription description;
51
    Set<Feature> featureSet  = new HashSet<Feature>();
52

    
53
	@Before
54
	public void setUp() throws Exception {
55
        // set up your test objects here
56
		
57
		NonViralName tnb = NonViralName.NewInstance(null);
58
		Taxon taxon = Taxon.NewInstance(tnb, null);
59
		description = TaxonDescription.NewInstance(taxon);
60
		
61
		featureTree= FeatureTree.NewInstance();
62
		FeatureNode root = FeatureNode.NewInstance();
63
		featureTree.setRoot(root);
64
		String[][][] tableStrings = { { {"a","b"} } , { { "a1" , "a2"  } , { "b1" } } };
65
		buildBranches(root,tableStrings,0,2,0);
66
		for (Iterator<Feature> f = featureSet.iterator() ; f.hasNext() ;){
67
			Feature feature = f.next();
68
			CategoricalData cg = CategoricalData.NewInstance();
69
			cg.setFeature(feature);
70
			State state = State.NewInstance(null, feature.getLabel()+"state", null);
71
			StateData stateData = StateData.NewInstance();
72
			stateData.setState(state);
73
			cg.addStateData(stateData);
74
			description.addElement(cg);
75
		}
76
		Feature qFeature = Feature.NewInstance(null, "c", null);
77
		QuantitativeData qd = QuantitativeData.NewInstance();
78
		MeasurementUnit munit = MeasurementUnit.NewInstance(null, "mm", null);
79
		StatisticalMeasurementValue smv = StatisticalMeasurementValue.NewInstance();
80
		smv.setType(StatisticalMeasure.AVERAGE());
81
		smv.setValue(12);
82
		qd.addStatisticalValue(smv);
83
		qd.setUnit(munit);
84
		qd.setFeature(qFeature);
85
		description.addElement(qd);
86
		FeatureNode qNode = FeatureNode.NewInstance(qFeature);
87
		root.addChild(qNode);
88
	}
89
	
90
	@Test
91
	public void testGenerateNaturalLanguageDescription() {
92
		assertNotNull("FeatureTree should exist", featureTree);
93
		assertNotNull("TaxonDescription should exist", description);
94
		StringBuilder stringBuilder = new StringBuilder();
95
		List<TextData> result = generator.generateNaturalLanguageDescription(featureTree,description, Language.DEFAULT());
96
		for (Iterator<TextData> td = result.iterator() ; td.hasNext();) {
97
			TextData textD = td.next();
98
			stringBuilder.append(textD.getText(Language.DEFAULT()));
99
		}
100
		assertTrue("Empty text",!stringBuilder.equals(""));
101
		System.out.println(stringBuilder.toString());
102
	}
103
	
104
	public void buildBranches(FeatureNode parent, String[][][] children, int level, int depth, int nodeNumber) {
105
		int i = nodeNumber;
106
		int j;
107
				for (j=0; j<children[level][i].length ; j++) {
108
					Feature feature = Feature.NewInstance(null, children[level][i][j], null);
109
					featureSet.add(feature);
110
					FeatureNode child = FeatureNode.NewInstance(feature);
111
					parent.addChild(child);
112
					if (level<depth-1) {
113
						buildBranches(child, children,level+1,depth, j);
114
					}
115
			}
116
		
117
	}
118

    
119
    /* (non-Javadoc)
120
     * @see eu.etaxonomy.cdm.test.integration.CdmIntegrationTest#createTestData()
121
     */
122
    @Override
123
    public void createTestDataSet() throws FileNotFoundException {
124
        // TODO Auto-generated method stub
125
        
126
    }
127
	
128
}
(13-13/31)