Revision 29384

View differences:

branches/v2_0_0_prep/libraries/libGeocoding/.project
1 1
<projectDescription>
2
  <name>org.gvsig.geocoding</name>
2
  <name>libGeocoding</name>
3 3
  <comment>libGeocoding is a library that it has tools to geocoding process</comment>
4 4
  <projects/>
5 5
  <buildSpec>
branches/v2_0_0_prep/libraries/libGeocoding/src/org/gvsig/normalization/algorithm/impl/DefaultNormalizationAlgorithm.java
58 58
			.getLogger(DefaultNormalizationAlgorithm.class);
59 59

  
60 60
	private Patternnormalization pat = null;
61
	private int numFields;
62 61
	private Element[] elements = null;
63 62

  
64 63
	/**
......
100 99
			int init = 0;
101 100
			String subChain = "";
102 101

  
103
			for (int i = 0; i < numFields; i++) {
102
			for (int i = 0; i < elements.length; i++) {
104 103

  
105 104
				if (preChain.length() == 0) {
106 105
					return subStrings;
......
133 132
									posi);
134 133
						}
135 134
						// Firsts elements
136
						if (i < numFields - 1) {
135
						if (i < elements.length - 1) {
137 136

  
138 137
							if (join) {
139 138
								while (posi == 0) {
......
293 292
		List<String> postChain = new ArrayList<String>();
294 293
		String aux = "";
295 294

  
296
		for (int i = 0; i < numFields; i++) {
295
		for (int i = 0; i < elements.length; i++) {
297 296

  
298 297
			nft = elements[i].getFieldtype();
299 298

  
......
320 319
				log.error("Error setting the group separator", e1);
321 320
			}
322 321
			// Fill fields empties
323
			if (chains.size() < numFields) {
322
			if (chains.size() < elements.length) {
324 323

  
325
				for (int j = chains.size(); j < numFields; j++) {
324
				for (int j = chains.size(); j < elements.length; j++) {
326 325
					chains.add(j, "");
327 326
				}
328 327
			}
branches/v2_0_0_prep/libraries/libGeocoding/src/org/gvsig/normalization/NormalizationLocator.java
47 47
	 */
48 48
	private static NormalizationLocator instance;
49 49
	
50
	/**
51
	 * Private constructor following the Singleton pattern
52
	 */
53
	private NormalizationLocator(){
54
	}
50
	
55 51

  
56 52
	/**
57 53
	 * Return the singleton instance.
......
77 73
	}
78 74
	
79 75
	/**	
80
	 * Registers the Class implementing the Geocoder interface
76
	 * Registers the Class implementing the Normalizer interface
81 77
	 * @param clazz
82 78
	 */
83 79
	@SuppressWarnings("unchecked")
......
86 82
	}
87 83
	
88 84
	/**
89
	 * Return a refrence to Geocoder 
90
	 * @return a reference to Geocoder
85
	 * Return a reference to Normalizer
86
	 * @return a reference to Normalizer
91 87
	 * @throws LocatorException
92 88
	 */
93 89
	public static Normalizer getNormalizer() throws LocatorException{
......
95 91
		Object norm = loc.get(NORMALIZER_NAME);
96 92
		return (Normalizer) norm;
97 93
	}
94
	
95
	/**
96
	 * Private constructor following the Singleton pattern
97
	 */
98
	private NormalizationLocator(){
99
	}
98 100

  
99 101
}
branches/v2_0_0_prep/libraries/libGeocoding/src/org/gvsig/normalization/impl/NormalizationTransform.java
38 38
import java.text.SimpleDateFormat;
39 39
import java.util.ArrayList;
40 40
import java.util.Date;
41
import java.util.HashMap;
42 41
import java.util.Iterator;
43 42
import java.util.List;
44
import java.util.Map;
45
import java.util.Map.Entry;
46 43

  
47 44
import org.gvsig.fmap.dal.DataTypes;
48 45
import org.gvsig.fmap.dal.exception.DataException;
49 46
import org.gvsig.fmap.dal.feature.EditableFeature;
50 47
import org.gvsig.fmap.dal.feature.EditableFeatureType;
51 48
import org.gvsig.fmap.dal.feature.Feature;
49
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
52 50
import org.gvsig.fmap.dal.feature.FeatureStore;
53 51
import org.gvsig.fmap.dal.feature.FeatureType;
54 52
import org.gvsig.normalization.Normalizer;
......
73 71
	private Patternnormalization pattern = null;
74 72
	private int positionFieldSelected;
75 73
	private NormalizationAlgorithm algorithm = null;
76
	private Map<Integer, Integer> newFields = new HashMap<Integer, Integer>();
74
	private List<int[]> newFields = new ArrayList<int[]>();
77 75
	private FeatureType originalFeatureType = null;
78 76

  
79 77
	/**
......
111 109
	public void applyTransform(Feature source, EditableFeature target)
112 110
			throws DataException {
113 111

  
114
		target.copyFrom(source);
112
		// copy the data from store1 into the resulting feature
113
		this.copySourceToTarget(source, target);
115 114

  
116 115
		String chain = source.get(this.positionFieldSelected).toString();
117 116

  
118 117
		List<String> chains = this.splitChain(chain);
119 118

  
120
		Iterator<Entry<Integer, Integer>> it = newFields.entrySet().iterator();
121
		int contador = 0;
122
		while (it.hasNext()) {
123
			Map.Entry<Integer, Integer> entry = (Map.Entry<Integer, Integer>) it
124
					.next();
125
			int fieldPosition = entry.getKey();
126
			int fieldType = entry.getValue();
127
			String value = chains.get(contador);
128
			switch (fieldType) {
129
			case DataTypes.STRING:
130
				target.setString(fieldPosition, value);
131
				break;
132
			case DataTypes.DATE:
133
				String datePat = getDateFormat(contador);
134
				Date dateValue = null;
135
				try {
136
					dateValue = formatDates(value, datePat);
137
				} catch (ParseException e) {
138
					log.error("Error parsing the date", e);
119
		for (int i = 0; i < newFields.size(); i++) {
120
			int[] field = newFields.get(i);
121
			int fieldPosition = field[0];
122
			int fieldType = field[1];
123

  
124
			if (fieldPosition != -1 && fieldType != -1) {
125
				String value = chains.get(i);
126
				switch (fieldType) {
127
				case DataTypes.STRING:
128
					target.setString(fieldPosition, value);
129
					break;
130
				case DataTypes.DATE:
131
					String datePat = getDateFormat(i);
132
					Date dateValue = null;
133
					try {
134
						dateValue = formatDates(value, datePat);
135
					} catch (ParseException e) {
136
						log.error("Error parsing the date", e);
137
					}
138
					target.setDate(fieldPosition, dateValue);
139
					break;
140
				case DataTypes.INT:
141
					int intValue = new Integer(value);
142
					target.setInt(fieldPosition, intValue);
143
					break;
144
				case DataTypes.DOUBLE:
145
					double douValue = new Double(value);
146
					target.setDouble(fieldPosition, douValue);
147
					break;
139 148
				}
140
				target.setDate(fieldPosition, dateValue);
141
				break;
142
			case DataTypes.INT:
143
				int intValue = new Integer(value);
144
				target.setInt(fieldPosition, intValue);
145
				break;
146
			case DataTypes.DOUBLE:
147
				double douValue = new Double(value);
148
				target.setDouble(fieldPosition, douValue);
149
				break;
150 149
			}
151
			contador++;
152 150
		}
153

  
154 151
	}
155 152

  
156 153
	/**
......
196 193
			Element ele = eles.next();
197 194
			String fieldName = ele.getFieldname();
198 195
			Fieldtype fieldType = ele.getFieldtype();
199
			// Field type (STRING)
200
			if (((Stringvalue) fieldType.getStringvalue()) != null) {
201
				Stringvalue val = fieldType.getStringvalue();
202
				int siz = val.getStringvaluewidth();
203
				eType.add(fieldName, DataTypes.STRING, siz);
204
				int position = eType.size() - 1;
205
				newFields.put(position, DataTypes.STRING);
196
			boolean impor = ele.getImportfield();
197
			if (impor) {
198
				// Field type (STRING)
199
				if (((Stringvalue) fieldType.getStringvalue()) != null) {
200
					Stringvalue val = fieldType.getStringvalue();
201
					int siz = val.getStringvaluewidth();
202
					eType.add(fieldName, DataTypes.STRING, siz);
203
					int position = eType.size() - 1;
204
					int[] fi = { position, DataTypes.STRING };
205
					newFields.add(fi);
206
				}
207
				// Field type (DATE)
208
				else if (((Datevalue) fieldType.getDatevalue()) != null) {
209
					eType.add(fieldName, DataTypes.DATE);
210
					int position = eType.size() - 1;
211
					int[] fi = { position, DataTypes.DATE };
212
					newFields.add(fi);
213
				}
214
				// Field type (INTEGER)
215
				else if (((Integervalue) fieldType.getIntegervalue()) != null) {
216
					Integervalue val = fieldType.getIntegervalue();
217
					int siz = val.getIntegervaluewidth();
218
					eType.add(fieldName, DataTypes.INT, siz);
219
					int position = eType.size() - 1;
220
					int[] fi = { position, DataTypes.INT };
221
					newFields.add(fi);
222
				}
223
				// Field type (DOUBLE)
224
				else if (((Decimalvalue) fieldType.getDecimalvalue()) != null) {
225
					Decimalvalue val = fieldType.getDecimalvalue();
226
					int sizeint = val.getDecimalvalueint();
227
					int sizedec = val.getDecimalvaluedec();
228
					eType.add(fieldName, DataTypes.DOUBLE, sizeint + 1
229
							+ sizedec);
230
					int position = eType.size() - 1;
231
					int[] fi = { position, DataTypes.DOUBLE };
232
					newFields.add(fi);
233
				}
234
			} else {
235
				int[] fi = { -1, -1 };
236
				newFields.add(fi);
206 237
			}
207
			// Field type (DATE)
208
			else if (((Datevalue) fieldType.getDatevalue()) != null) {
209
				eType.add(fieldName, DataTypes.DATE);
210
				int position = eType.size() - 1;
211
				newFields.put(position, DataTypes.DATE);
212
			}
213
			// Field type (INTEGER)
214
			else if (((Integervalue) fieldType.getIntegervalue()) != null) {
215
				Integervalue val = fieldType.getIntegervalue();
216
				int siz = val.getIntegervaluewidth();
217
				eType.add(fieldName, DataTypes.INT, siz);
218
				int position = eType.size() - 1;
219
				newFields.put(position, DataTypes.INT);
220
			}
221
			// Field type (DOUBLE)
222
			else if (((Decimalvalue) fieldType.getDecimalvalue()) != null) {
223
				Decimalvalue val = fieldType.getDecimalvalue();
224
				int sizeint = val.getDecimalvalueint();
225
				int sizedec = val.getDecimalvaluedec();
226
				eType.add(fieldName, DataTypes.DOUBLE, sizeint + 1 + sizedec);
227
				int position = eType.size() - 1;
228
				newFields.put(position, DataTypes.DOUBLE);
229
			}
238

  
230 239
		}
231 240
		FeatureType type2 = eType.getNotEditableCopy();
232 241
		List<FeatureType> allTypes = new ArrayList<FeatureType>();
......
277 286
		return fecha;
278 287
	}
279 288

  
289
	/**
290
	 * Copy features
291
	 * 
292
	 * @param source
293
	 * @param target
294
	 */
295
	private void copySourceToTarget(Feature source, EditableFeature target) {
296
		FeatureAttributeDescriptor attr, attrTrg;
297
		FeatureType ftSrc = source.getType();
298
		FeatureType ftTrg = target.getType();
299

  
300
		for (int i = 0; i < source.getType().size(); i++) {
301
			attr = ftSrc.getAttributeDescriptor(i);
302
			attrTrg = ftTrg.getAttributeDescriptor(attr.getName());
303
			if (attrTrg != null) {
304
				try {
305
					target.set(attrTrg.getIndex(), source.get(i));
306
				} catch (IllegalArgumentException e) {
307
					attrTrg = ftTrg.getAttributeDescriptor(attr.getName());
308
					target.set(attrTrg.getIndex(), attrTrg.getDefaultValue());
309
				}
310

  
311
			}
312
		}
313

  
314
	}
315

  
280 316
}
branches/v2_0_0_prep/libraries/libGeocoding/src/org/gvsig/normalization/Normalizer.java
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

  
1 28
package org.gvsig.normalization;
2 29

  
3 30
import org.gvsig.fmap.dal.exception.DataException;
......
8 35
import org.gvsig.tools.persistence.PersistenceException;
9 36
import org.gvsig.tools.persistence.PersistentState;
10 37

  
11
public class Normalizer  extends AbstractFeatureStoreTransform{
38
/**
39
 * Normalizer transform
40
 * 
41
 * @author <a href="mailto:jsanz@prodevelop.es"> Jorge Gaspar Sanz Salinas</a>
42
 * @author <a href="mailto:vsanjaime@prodevelop.es"> Vicente Sanjaime Calvet</a>
43
 * 
44
 */
45
public abstract class Normalizer extends AbstractFeatureStoreTransform {
12 46

  
47
	/**
48
	 * Apply transform
49
	 * 
50
	 * @param source
51
	 * @param target
52
	 * @throws DataException
53
	 */
13 54
	public void applyTransform(Feature source, EditableFeature target)
14 55
			throws DataException {
15
		// TODO Auto-generated method stub
16
		
56

  
17 57
	}
18 58

  
59
	/**
60
	 * Get feature type of target feature store
61
	 * 
62
	 * @param targetFeatureType
63
	 */
19 64
	public FeatureType getSourceFeatureTypeFrom(FeatureType targetFeatureType) {
20
		// TODO Auto-generated method stub
21 65
		return null;
22 66
	}
23 67

  
68
	/**
69
	 * is transform original values of original datastore
70
	 * 
71
	 * @return
72
	 */
24 73
	public boolean isTransformsOriginalValues() {
25
		// TODO Auto-generated method stub
26 74
		return false;
27 75
	}
28 76

  
77
	/**
78
	 * load the normalizer from persistence
79
	 * 
80
	 * @param state
81
	 * @throws PersistenceException
82
	 */
29 83
	public void loadFromState(PersistentState state)
30 84
			throws PersistenceException {
31
		// TODO Auto-generated method stub
32
		
33 85
	}
34 86

  
87
	/**
88
	 * Persist normalizer
89
	 * 
90
	 * @param state
91
	 * @throws PersistenceException
92
	 */
35 93
	public void saveToState(PersistentState state) throws PersistenceException {
36
		// TODO Auto-generated method stub
37
		
94

  
38 95
	}
39 96

  
40 97
}
branches/v2_0_0_prep/libraries/libGeocoding/pom.xml
25 25
	<developers>
26 26
		<developer>
27 27
			<id>jsanz</id>
28
			<name>Jorge sanz</name>
28
			<name>Jorge Sanz Salinas</name>
29 29
			<email>jsanz@prodevelop.es</email>
30 30
			<roles>
31 31
				<role>Architect</role>
branches/v2_0_0_prep/libraries/libGeocoding/.settings/org.eclipse.jdt.core.prefs
1
#Thu Jun 04 19:04:26 CEST 2009
1
#Fri Jun 12 12:21:42 CEST 2009
2 2
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
3 3
eclipse.preferences.version=1
4 4
org.eclipse.jdt.core.compiler.source=1.5
branches/v2_0_0_prep/libraries/libGeocoding/.classpath
68 68
  </classpathentry>
69 69
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.andami/2.0-SNAPSHOT/org.gvsig.andami-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.andami/2.0-SNAPSHOT/org.gvsig.andami-2.0-SNAPSHOT-sources.jar"/>
70 70
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.app.daltransform/2.0-SNAPSHOT/org.gvsig.app.daltransform-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.app.daltransform/2.0-SNAPSHOT/org.gvsig.app.daltransform-2.0-SNAPSHOT-sources.jar"/>
71
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT-sources.jar"/>
71
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT-sources.jar">
72
    <attributes>
73
      <attribute value="jar:file:/C:/Documents%20and%20Settings/vsanjaime/.m2/repository/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT-javadoc.jar!/" name="javadoc_location"/>
74
    </attributes>
75
  </classpathentry>
72 76
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.compat/2.0-SNAPSHOT/org.gvsig.compat-2.0-SNAPSHOT-se.jar"/>
73 77
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.control/2.0-SNAPSHOT/org.gvsig.fmap.control-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.fmap.control/2.0-SNAPSHOT/org.gvsig.fmap.control-2.0-SNAPSHOT-sources.jar"/>
74 78
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal/2.0-SNAPSHOT/org.gvsig.fmap.dal-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.fmap.dal/2.0-SNAPSHOT/org.gvsig.fmap.dal-2.0-SNAPSHOT-sources.jar">
......
85 89
    </attributes>
86 90
  </classpathentry>
87 91
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.dbf.jar"/>
92
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.dgn.jar"/>
93
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.dgn.legend.jar"/>
88 94
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.dxf.jar"/>
89 95
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.dxf.legend.jar"/>
90 96
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.fmap.dal.file/2.0-SNAPSHOT/org.gvsig.fmap.dal.file-2.0-SNAPSHOT-store.shp.jar"/>
......
129 135
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.projection/2.0-SNAPSHOT/org.gvsig.projection-2.0-SNAPSHOT-cresques-impl.jar"/>
130 136
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.projection/2.0-SNAPSHOT/org.gvsig.projection-2.0-SNAPSHOT-cresques-ui.jar"/>
131 137
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.raster/2.0-SNAPSHOT/org.gvsig.raster-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.raster/2.0-SNAPSHOT/org.gvsig.raster-2.0-SNAPSHOT-sources.jar"/>
132
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT-sources.jar"/>
138
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT-sources.jar">
139
    <attributes>
140
      <attribute value="jar:file:/C:/Documents%20and%20Settings/vsanjaime/.m2/repository/org/gvsig/org.gvsig.tools/2.0-SNAPSHOT/org.gvsig.tools-2.0-SNAPSHOT-javadoc.jar!/" name="javadoc_location"/>
141
    </attributes>
142
  </classpathentry>
133 143
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.tools.evaluator.sqljep/2.0-SNAPSHOT/org.gvsig.tools.evaluator.sqljep-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.tools.evaluator.sqljep/2.0-SNAPSHOT/org.gvsig.tools.evaluator.sqljep-2.0-SNAPSHOT-sources.jar"/>
134 144
  <classpathentry kind="var" path="M2_REPO/org/gvsig/org.gvsig.ui/2.0-SNAPSHOT/org.gvsig.ui-2.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/gvsig/org.gvsig.ui/2.0-SNAPSHOT/org.gvsig.ui-2.0-SNAPSHOT-sources.jar"/>
135 145
  <classpathentry kind="var" path="M2_REPO/org/gvsig/legacy/pdf-transcoder/gvsig/pdf-transcoder-gvsig.jar"/>

Also available in: Unified diff