Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.xml2db / org.gvsig.xml2db.lib / org.gvsig.xml2db.lib.impl / src / test / java / org / gvsig / xml2db / lib / impl / TestStructureExtractor.java @ 47283

History | View | Annotate | Download (7.81 KB)

1
package org.gvsig.xml2db.lib.impl;
2

    
3
import java.io.InputStream;
4
import java.util.ArrayList;
5
import java.util.List;
6
import org.apache.commons.lang3.tuple.ImmutablePair;
7
import org.apache.commons.lang3.tuple.Pair;
8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.feature.FeatureType;
10
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
11
import org.gvsig.tools.util.ListBuilder;
12
import org.gvsig.xml2db.lib.api.Xml2dbManager;
13
import org.gvsig.xml2db.lib.api.xmlinfo.XMLInfo;
14
import org.gvsig.xml2db.lib.api.xmlinfo.XMLTableInfo;
15
import org.slf4j.Logger;
16
import org.slf4j.LoggerFactory;
17

    
18

    
19
@SuppressWarnings("UseSpecificCatch")
20
public class TestStructureExtractor extends AbstractLibraryAutoInitTestCase {
21

    
22
    private static final Logger LOGGER = LoggerFactory.getLogger(TestStructureExtractor.class);
23

    
24
    public TestStructureExtractor(String testName) {
25
        super(testName);
26
    }
27

    
28
    @Override
29
    protected void doSetUp() throws Exception {
30

    
31
    }
32

    
33
    public void testExtractorDeclaracion() throws Exception {
34
        try {
35
            Xml2dbManager manager = new DefaultXml2dbManager();
36

    
37
            InputStream xml = this.getClass().getResourceAsStream("Declaracion4.xml");
38
            XMLInfo xmlinfo = manager.extractStructure(xml, null, null, null);
39

    
40
            List<FeatureType> ftypes = new ArrayList<>();
41
            for (XMLTableInfo tableInfo : xmlinfo) {
42
                ftypes.add(tableInfo.getFeatureType());
43
            }
44
            ftypes.sort((FeatureType o1, FeatureType o2) -> 
45
                    o1.getTags().getString("xml2db.tablename","")
46
                            .compareTo(o2.getTags().getString("xml2db.tablename","")));
47

    
48
            List<Pair<String,List<String>>> expecteds = ListBuilder.create(
49
                    new ImmutablePair(
50
                        "DECLARACION", 
51
                        ListBuilder.create(
52
                                "$ID_DECLARACION",
53
                                "DECLARANTE",
54
                                "LINEA_DECLARACION",
55
                                "METADATA"
56
                        )
57
                    ),
58
                    new ImmutablePair("LINEA_DECLARACION", 
59
                        ListBuilder.create(
60
                            "$ID_DECLARACION",
61
                            "$ID_LINEA_DECLARACION",
62
                            "AGREGADO",
63
                            "CULTIVO",
64
                            "DN_SURFACE",
65
                            "FC_ALGARROBOS",
66
                            "FC_ALMENDROS",
67
                            "FC_AVELLANOS",
68
                            "FC_NOGALES",
69
                            "FC_PISTACHOS",
70
                            "FC_TOTAL",
71
                            "MUN_CAT",
72
                            "MUN_INE",
73
                            "PARCELA",
74
                            "PARCELA_AGRICOLA",
75
                            "POLIGONO",
76
                            "PROV",
77
                            "RECINTO",
78
                            "SUPERFICIE_DECLARADA",
79
                            "WKT",
80
                            "ZONA"
81
                        )
82
                    ),
83
                    new ImmutablePair("METADATA", 
84
                        ListBuilder.create(
85
                            "$ID_DECLARACION",
86
                            "$ID_METADATA",
87
                            "SRID",
88
                            "VERSION"
89
                        )
90
                    )
91
            );
92
            for (int i = 0; i < ftypes.size(); i++) {
93
                FeatureType ftype = ftypes.get(i);
94
                String tableName = ftype.getTags().getString("xml2db.tablename","");
95
                System.out.println(tableName);
96
                assertEquals(expecteds.get(i).getLeft(), tableName);
97
                for (int j = 0; j < ftype.size(); j++) {
98
                    FeatureAttributeDescriptor attr = ftype.get(j);
99
                    System.out.println("  "+attr.getName());
100
                    assertEquals(expecteds.get(i).getRight().get(j), attr.getName());
101
                }
102
                System.out.println(ftype.toJson().toString());
103
            }
104
        } catch(Throwable t) {
105
            LOGGER.warn("",t);
106
            throw t;
107
        }
108
    }
109

    
110
    public void testExtractorR10graf() throws Exception {
111
        try {
112
            Xml2dbManager manager = new DefaultXml2dbManager();
113

    
114
            InputStream xml = this.getClass().getResourceAsStream("r10graf.xml");
115
            XMLInfo xmlinfo = manager.extractStructure(xml, null, null, null);
116

    
117
            List<FeatureType> ftypes = new ArrayList<>();
118
            for (XMLTableInfo tableInfo : xmlinfo) {
119
                ftypes.add(tableInfo.getFeatureType());
120
            }
121
            ftypes.sort((FeatureType o1, FeatureType o2) -> 
122
                    o1.getTags().getString("xml2db.tablename","")
123
                            .compareTo(o2.getTags().getString("xml2db.tablename","")));
124

    
125

    
126
            List<Pair<String,List<String>>> expecteds = ListBuilder.create(
127
                    new ImmutablePair(
128
                        "expediente", 
129
                        ListBuilder.create(
130
                            "$ID_expediente",
131
                            "$ID_r10_graf",
132
                            "num_expediente",
133
                            "parcelas"
134
                        )
135
                    ),
136
                    new ImmutablePair("linea", 
137
                        ListBuilder.create(
138
                            "$ID_expediente",
139
                            "$ID_linea",
140
                            "$ID_parcela",
141
                            "$ID_r10_graf",
142
                            "ag",
143
                            "lin_codigo",
144
                            "mu",
145
                            "pa",
146
                            "po",
147
                            "pr",
148
                            "re",
149
                            "wkt",
150
                            "zo"
151
                        )
152
                    ),
153
                    new ImmutablePair("parcela", 
154
                        ListBuilder.create(
155
                            "$ID_expediente",
156
                            "$ID_parcela",
157
                            "$ID_r10_graf",
158
                            "num_parcela",
159
                            "lineas"
160
                        )
161
                    ), 
162
                    new ImmutablePair("r10_graf", 
163
                        ListBuilder.create(
164
                            "$ID_r10_graf",
165
                            "ca",
166
                            "campana",
167
                            "srid",
168
                            "expedientes"
169
                        )
170
                    )
171
            );
172
            for (int i = 0; i < ftypes.size(); i++) {
173
                FeatureType ftype = ftypes.get(i);
174
                String tableName = ftype.getTags().getString("xml2db.tablename","");
175
                System.out.println("\""+tableName+"\"");
176
                assertEquals(expecteds.get(i).getLeft(), tableName);
177
                for (int j = 0; j < ftype.size(); j++) {
178
                    FeatureAttributeDescriptor attr = ftype.get(j);
179
                    System.out.println("  \""+attr.getName()+"\"");
180
                    assertEquals(expecteds.get(i).getRight().get(j), attr.getName());
181
                }
182
    //            System.out.println(ftype.toJson().toString());
183
            }
184
        } catch(Throwable t) {
185
            LOGGER.warn("Test testExtractorR10graf failed",t);
186
            throw t;
187
        }
188
    }
189
    
190
    public void testExtractorArena2() throws Exception {
191
        try {
192
            Xml2dbManager manager = new DefaultXml2dbManager();
193

    
194
            InputStream xml = this.getClass().getResourceAsStream("victimas.xml");
195
            XMLInfo xmlinfo = manager.extractStructure(xml, null, null, null);
196

    
197
        } catch(Throwable t) {
198
            LOGGER.warn("Test testExtractorArena2 failed",t);
199
            throw t;
200
        }
201
    }
202
}