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 @ 47336

History | View | Annotate | Download (7.89 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 java.util.Locale;
7
import org.apache.commons.lang3.tuple.ImmutablePair;
8
import org.apache.commons.lang3.tuple.Pair;
9
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
10
import org.gvsig.fmap.dal.feature.FeatureType;
11
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
12
import org.gvsig.tools.util.ListBuilder;
13
import org.gvsig.xml2db.lib.api.Xml2dbManager;
14
import org.gvsig.xml2db.lib.api.xmlinfo.XMLInfo;
15
import org.gvsig.xml2db.lib.api.xmlinfo.XMLTableInfo;
16
import org.slf4j.Logger;
17
import org.slf4j.LoggerFactory;
18

    
19

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

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

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

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

    
32
    }
33

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

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

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

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

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

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

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

    
126

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

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

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