Revision 40733 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.daltransform.app/org.gvsig.daltransform.app.join/src/main/java/org/gvsig/app/join/dal/feature/JoinTransform.java
JoinTransform.java | ||
---|---|---|
52 | 52 |
import org.gvsig.tools.persistence.PersistenceManager; |
53 | 53 |
import org.gvsig.tools.persistence.PersistentState; |
54 | 54 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
55 |
import org.slf4j.Logger; |
|
56 |
import org.slf4j.LoggerFactory; |
|
55 | 57 |
|
56 | 58 |
public class JoinTransform extends AbstractFeatureStoreTransform { |
57 | 59 |
|
60 |
private static Logger logger = LoggerFactory.getLogger(JoinTransform.class); |
|
61 |
|
|
58 | 62 |
public static final String PERSISTENCE_DEFINITION_NAME = "JoinTransform"; |
59 | 63 |
|
60 | 64 |
/** |
... | ... | |
341 | 345 |
|
342 | 346 |
private JoinTransformEvaluator getEvaluator() { |
343 | 347 |
if (this.evaluator == null){ |
344 |
this.evaluator = new JoinTransformEvaluator(keyAttr2); |
|
348 |
FeatureType ft2 = null; |
|
349 |
try { |
|
350 |
ft2 = this.store2.getDefaultFeatureType(); |
|
351 |
} catch (DataException e) { |
|
352 |
logger.error("While getting feat type.", e); |
|
353 |
} |
|
354 |
FeatureAttributeDescriptor att2 = ft2.getAttributeDescriptor(keyAttr2); |
|
355 |
boolean is_num = att2.getDataType().isNumeric(); |
|
356 |
this.evaluator = new JoinTransformEvaluator(keyAttr2, is_num); |
|
345 | 357 |
} |
346 | 358 |
return evaluator; |
347 | 359 |
|
... | ... | |
350 | 362 |
private class JoinTransformEvaluator implements Evaluator { |
351 | 363 |
|
352 | 364 |
private String attribute; |
365 |
private boolean isNumeric = false; |
|
353 | 366 |
private Object value; |
354 | 367 |
private String sql; |
355 | 368 |
private EvaluatorFieldsInfo info = null; |
356 | 369 |
|
357 | 370 |
// private int attributeIndex; |
358 | 371 |
|
359 |
public JoinTransformEvaluator(String attribute) { |
|
372 |
public JoinTransformEvaluator(String attribute, boolean is_numeric) {
|
|
360 | 373 |
this.attribute = attribute; |
374 |
this.isNumeric = is_numeric; |
|
361 | 375 |
this.value = null; |
362 | 376 |
this.info = new EvaluatorFieldsInfo(); |
363 | 377 |
|
... | ... | |
366 | 380 |
|
367 | 381 |
public void updateValue(Object value) { |
368 | 382 |
this.value = value; |
369 |
this.sql = this.attribute + "= '" + this.value + "'"; |
|
383 |
String qt = this.isNumeric ? "" : "'"; |
|
384 |
this.sql = this.attribute + " = " + qt + this.value + qt; |
|
370 | 385 |
this.info = new EvaluatorFieldsInfo(); |
371 | 386 |
this.info.addMatchFieldValue(this.attribute, value); |
372 | 387 |
} |
Also available in: Unified diff