Project

General

Profile

Download (4.28 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.assertTrue;
5

    
6
import java.io.FileNotFoundException;
7
import java.math.BigDecimal;
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.description.CategoricalData;
21
import eu.etaxonomy.cdm.model.description.Feature;
22
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
23
import eu.etaxonomy.cdm.model.description.QuantitativeData;
24
import eu.etaxonomy.cdm.model.description.State;
25
import eu.etaxonomy.cdm.model.description.StateData;
26
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
27
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
28
import eu.etaxonomy.cdm.model.description.TaxonDescription;
29
import eu.etaxonomy.cdm.model.description.TextData;
30
import eu.etaxonomy.cdm.model.name.INonViralName;
31
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
32
import eu.etaxonomy.cdm.model.taxon.Taxon;
33
import eu.etaxonomy.cdm.model.term.TermNode;
34
import eu.etaxonomy.cdm.model.term.TermTree;
35
import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
36

    
37
@Ignore //FIXME Remove @Ignore once maximes code is completely committed
38
public class NaturalLanguageGeneratorTest extends CdmIntegrationTest {
39

    
40
	@SuppressWarnings("unused")
41
	private static final Logger logger = Logger.getLogger(NaturalLanguageGeneratorTest.class);
42

    
43
	@SpringBeanByType
44
	private INaturalLanguageGenerator generator;
45

    
46
    private TermTree featureTree;
47
    private TaxonDescription description;
48
    Set<Feature> featureSet  = new HashSet<Feature>();
49

    
50
	@Before
51
	public void setUp() throws Exception {
52
        // set up your test objects here
53

    
54
		INonViralName tnb = TaxonNameFactory.NewNonViralInstance(null);
55
		Taxon taxon = Taxon.NewInstance(tnb, null);
56
		description = TaxonDescription.NewInstance(taxon);
57

    
58
		featureTree= TermTree.NewFeatureInstance();
59
		TermNode<Feature> root = featureTree.getRoot();
60
		String[][][] tableStrings = { { {"a","b"} } , { { "a1" , "a2"  } , { "b1" } } };
61
		buildBranches(root,tableStrings,0,2,0);
62
		for (Iterator<Feature> f = featureSet.iterator() ; f.hasNext() ;){
63
			Feature feature = f.next();
64
			CategoricalData cg = CategoricalData.NewInstance();
65
			cg.setFeature(feature);
66
			State state = State.NewInstance(null, feature.getLabel()+"state", null);
67
			StateData stateData = StateData.NewInstance();
68
			stateData.setState(state);
69
			cg.addStateData(stateData);
70
			description.addElement(cg);
71
		}
72
		Feature qFeature = Feature.NewInstance(null, "c", null);
73
		QuantitativeData qd = QuantitativeData.NewInstance();
74
		MeasurementUnit munit = MeasurementUnit.NewInstance(null, "mm", null);
75
		StatisticalMeasurementValue smv = StatisticalMeasurementValue.NewInstance();
76
		smv.setType(StatisticalMeasure.AVERAGE());
77
		smv.setValue(new BigDecimal(12));
78
		qd.addStatisticalValue(smv);
79
		qd.setUnit(munit);
80
		qd.setFeature(qFeature);
81
		description.addElement(qd);
82
		root.addChild(qFeature);
83
	}
84

    
85
	@Test
86
	public void testGenerateNaturalLanguageDescription() {
87
		assertNotNull("FeatureTree should exist", featureTree);
88
		assertNotNull("TaxonDescription should exist", description);
89
		StringBuilder stringBuilder = new StringBuilder();
90
		List<TextData> result = generator.generateNaturalLanguageDescription(featureTree,description, Language.DEFAULT());
91
		for (Iterator<TextData> td = result.iterator() ; td.hasNext();) {
92
			TextData textD = td.next();
93
			stringBuilder.append(textD.getText(Language.DEFAULT()));
94
		}
95
		assertTrue("Empty text",!stringBuilder.equals(""));
96
		System.out.println(stringBuilder.toString());
97
	}
98

    
99
	public void buildBranches(TermNode parent, String[][][] children, int level, int depth, int nodeNumber) {
100
		int i = nodeNumber;
101
		int j;
102
				for (j=0; j<children[level][i].length ; j++) {
103
					Feature feature = Feature.NewInstance(null, children[level][i][j], null);
104
					featureSet.add(feature);
105
                    TermNode<Feature> child = parent.addChild(feature);
106
					if (level<depth-1) {
107
						buildBranches(child, children,level+1,depth, j);
108
					}
109
			}
110
	}
111

    
112
    @Override
113
    public void createTestDataSet() throws FileNotFoundException {}
114

    
115
}
(15-15/38)