Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libGeocoding / src-test / org / gvsig / geocoding / DoubleRangeTest.java @ 28375

History | View | Annotate | Download (7.17 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

    
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 PRODEVELOP                Main development
26
 */
27

    
28
package org.gvsig.geocoding;
29

    
30
import java.io.File;
31
import java.util.Iterator;
32
import java.util.Set;
33

    
34
import junit.framework.TestCase;
35

    
36
import org.gvsig.fmap.dal.DALFileLibrary;
37
import org.gvsig.fmap.dal.DALLibrary;
38
import org.gvsig.fmap.dal.DALLocator;
39
import org.gvsig.fmap.dal.DataManager;
40
import org.gvsig.fmap.dal.exception.ReadException;
41
import org.gvsig.fmap.dal.feature.FeatureStore;
42
import org.gvsig.fmap.dal.feature.FeatureType;
43
import org.gvsig.fmap.dal.store.shp.SHPLibrary;
44
import org.gvsig.fmap.dal.store.shp.SHPStoreParameters;
45
import org.gvsig.fmap.dal.store.shp.SHPStoreProvider;
46
import org.gvsig.fmap.geom.GeometryLibrary;
47
import org.gvsig.fmap.geom.primitive.Point;
48
import org.gvsig.geocoding.address.Address;
49
import org.gvsig.geocoding.address.Literal;
50
import org.gvsig.geocoding.address.NumberAddress;
51
import org.gvsig.geocoding.address.impl.DefaultAddressComponent;
52
import org.gvsig.geocoding.address.impl.DefaultLiteral;
53
import org.gvsig.geocoding.address.impl.DefaultNumberAddress;
54
import org.gvsig.geocoding.address.impl.DefaultRelationsComponent;
55
import org.gvsig.geocoding.impl.DataGeocoderImpl;
56
import org.gvsig.geocoding.impl.DefaultGeocodingLibrary;
57
import org.gvsig.geocoding.pattern.GeocodingSource;
58
import org.gvsig.geocoding.pattern.Patterngeocoding;
59
import org.gvsig.geocoding.pattern.impl.DefaultGeocodingSource;
60
import org.gvsig.geocoding.pattern.impl.DefaultPatterngeocoding;
61
import org.gvsig.geocoding.result.GeocodingResult;
62
import org.gvsig.geocoding.styles.AbstractGeocodingStyle;
63
import org.gvsig.geocoding.styles.impl.DoubleRange;
64
import org.gvsig.tools.ToolsLibrary;
65
import org.gvsig.tools.evaluator.sqljep.SQLJEPEvaluator;
66
import org.gvsig.tools.locator.Library;
67
import org.slf4j.Logger;
68
import org.slf4j.LoggerFactory;
69

    
70
/**
71
 * Test
72
 * 
73
 * @author <a href="mailto:jsanz@prodevelop.es"> Jorge Gaspar Sanz Salinas</a>
74
 * @author <a href="mailto:vsanjaime@prodevelop.es"> Vicente Sanjaime Calvet</a>
75
 */
76
public class DoubleRangeTest extends TestCase {
77

    
78
        protected DataManager dataManager = null;
79
        private File shape = new File("./test-data/geocoder/streets.shp");
80
        private Logger log = LoggerFactory.getLogger(DoubleRangeTest.class);
81

    
82
        protected void setUp() throws Exception {
83
                super.setUp();
84

    
85
                Library tools = new ToolsLibrary();
86
                tools.initialize();
87
                tools.postInitialize();
88

    
89
                Library dlib = new DALLibrary();
90
                dlib.initialize();
91
                dlib.postInitialize();
92

    
93
                Library libFile = new DALFileLibrary();
94
                libFile.initialize();
95
                libFile.postInitialize();
96

    
97
                Library lib = new GeometryLibrary();
98
                lib.initialize();
99
                lib.postInitialize();
100

    
101
                Library shpLib = new SHPLibrary();
102
                shpLib.initialize();
103
                shpLib.postInitialize();
104

    
105
                Library geocoLib = new DefaultGeocodingLibrary();
106
                geocoLib.initialize();
107
                geocoLib.postInitialize();
108

    
109
                dataManager = DALLocator.getDataManager();
110
        }
111

    
112
        protected void tearDown() throws Exception {
113
                super.tearDown();
114
        }
115

    
116
        public void testGeocode() throws ReadException {
117

    
118
                /* Set the pattern */
119
                Patterngeocoding pat = getPattern();
120

    
121
                // DataGeocoder geocoder = new DataGeocoderImpl(pat);
122
                Geocoder geocoder = GeocodingLocator.getInstance().getGeocoder();
123
                ((DataGeocoderImpl) geocoder).setPattern(pat);
124

    
125
                /* Define a address search */
126
                Address address = getAddress();
127

    
128
                Set<GeocodingResult> results = null;
129
                try {
130
                        results = geocoder.geocode(address);
131
                } catch (Exception e) {
132
                        log.error("Geocoding", e);
133
                }
134
                assertNotNull(results);
135
                Iterator<GeocodingResult> it = results.iterator();
136
                log.debug("DOUBLE RANGE GEOCODING");
137
                while (it.hasNext()) {
138
                        GeocodingResult res = it.next();
139
                        Point pto = (Point) res.getGeometry();
140
                        log.debug("PTO: " + pto.getX() + "," + pto.getY());
141
                }
142
        }
143

    
144
        /**
145
         * Get pattern
146
         */
147
        private Patterngeocoding getPattern() {
148

    
149
                assertNotNull(dataManager);
150
                dataManager.registerDefaultEvaluator(SQLJEPEvaluator.class);
151

    
152
                Patterngeocoding pat = new DefaultPatterngeocoding();
153

    
154
                try {
155
                        pat.setPatternName("DoubleRange");
156

    
157
                        GeocodingSource source = new DefaultGeocodingSource();
158

    
159
                        SHPStoreParameters params = (SHPStoreParameters) dataManager
160
                                        .createStoreParameters(SHPStoreProvider.NAME);
161
                        assertNotNull(shape);
162
                        params.setFile(shape);
163
                        FeatureStore store = (FeatureStore) dataManager.createStore(params);
164
                        source.setLayerSource(store);
165

    
166
                        AbstractGeocodingStyle style = new DoubleRange();
167
                        FeatureType ftype = store.getDefaultFeatureType();
168
                        Literal relations = new DefaultLiteral();
169
                        relations.add(new DefaultRelationsComponent("Calle","STREET_NAM"));
170
                        relations.add(new DefaultRelationsComponent("TipoVia","STREET_TYP"));
171
                        relations.add(new DefaultRelationsComponent("Municipio","MUNI"));
172
                        relations.add(new DefaultRelationsComponent("Provincia","PROV"));
173
                        relations.add(new DefaultRelationsComponent("Pais","PAIS"));
174

    
175
                        style.setRelationsLiteral(relations);
176
                        source.setStyle(style);
177

    
178
                        DefaultRelationsComponent rfrom = new DefaultRelationsComponent(
179
                                        "NParFrom","RF_ADD");
180
                        ;
181
                        ((DoubleRange) style).setFirstRightNumber(rfrom);
182

    
183
                        DefaultRelationsComponent rto = new DefaultRelationsComponent(
184
                                        "NParTo","RT_ADD");
185
                        ((DoubleRange) style).setLastRightNumber(rto);
186

    
187
                        DefaultRelationsComponent lfrom = new DefaultRelationsComponent(
188
                                        "NImparFrom","LF_ADD");
189
                        ;
190
                        ((DoubleRange) style).setFirstLeftNumber(lfrom);
191
                        DefaultRelationsComponent lto = new DefaultRelationsComponent(
192
                                        "NImparTo","LT_ADD");
193
                        ((DoubleRange) style).setLastLeftNumber(lto);
194

    
195
                        pat.setSource(source);
196

    
197
                } catch (Exception e) {
198
                        log.error("Building a pattern", e);
199
                }
200

    
201
                return pat;
202
        }
203

    
204
        /**
205
         * get Address
206
         * 
207
         * @return
208
         */
209
        private Address getAddress() {
210
                Literal literal = new DefaultLiteral();
211
                literal.add(new DefaultAddressComponent("Calle", "COLON"));
212
                literal.add(new DefaultAddressComponent("TipoVia", "C"));
213
                literal.add(new DefaultAddressComponent("Municipio", "Valencia"));
214
                literal.add(new DefaultAddressComponent("Provincia", "Valencia"));
215
                literal.add(new DefaultAddressComponent("Pais", "Espanya"));
216

    
217
                Address address = new DefaultNumberAddress(literal);
218
                ((NumberAddress) address).setNumber(35);
219
                return address;
220
        }
221

    
222
}