Revision 44767

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/test/java/org/gvsig/fmap/dal/store/shp/TestCreate.java
278 278
            for (FeatureAttributeDescriptor sourceAttr : sourceStore.getDefaultFeatureType()) {
279 279
                switch(sourceAttr.getType()) {
280 280
                    case DataTypes.TIMESTAMP:
281
                        Date sourceTimestamp = sourceFeature.getDate(sourceAttr.getName());
282
                        Date targetTimestamp = targetFeature.getDate(sourceAttr.getName());
283 281
                        assertEquals(
284 282
                                String.format("Feature %03d attribute %s", i, sourceAttr.getName()),
285
                                sourceTimestamp,
286
                                targetTimestamp
283
                                sourceFeature.get(sourceAttr.getName()),
284
                                targetFeature.getTimestamp(sourceAttr.getName())
287 285
                        );
288 286
                        break;
289 287
                    case DataTypes.TIME:
290 288
                        assertEquals(
291 289
                                String.format("Feature %03d attribute %s", i, sourceAttr.getName()),
292
                                sourceFeature.getDate(sourceAttr.getName()),
293
                                targetFeature.getDate(sourceAttr.getName())
290
                                sourceFeature.get(sourceAttr.getName()),
291
                                targetFeature.getTime(sourceAttr.getName())
294 292
                        );
295 293
                        break;
296 294
                    case DataTypes.GEOMETRY:
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/utils/FieldFormatter.java
340 340
    }
341 341
    try {
342 342
      Date x = YYYYMMDDHHMMSS_DATE_FORMAT.parse(value);
343
      return x;
343
      return new java.sql.Timestamp(x.getTime());
344 344
    } catch (ParseException ex) {
345 345
      this.getLogger().warn("Can't parse value '" + value + "' as timestamp.", ex);
346 346
      return defaultValue;
......
353 353
    }
354 354
    try {
355 355
      Date x = HHMMSS_DATE_FORMAT.parse(value);
356
      return x;
356
      return new java.sql.Time(x.getTime());
357 357
    } catch (ParseException ex) {
358 358
      this.getLogger().warn("Can't parse value '" + value + "' as time.", ex);
359 359
      return defaultValue;
......
366 366
    }
367 367
    try {
368 368
      Date x = YYYYMMDD_DATE_FORMAT.parse(value);
369
      return x;
369
      return new java.sql.Date(x.getTime());
370 370
    } catch (ParseException ex) {
371 371
      this.getLogger().warn("Can't parse value '" + value + "' as date.", ex);
372 372
      return defaultValue;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/DBFStoreProvider.java
468 468
                break;
469 469

  
470 470
            case DataTypes.TIMESTAMP:
471
                featureProvider.set(index, formatter.parseTimestamp(value, (Date) defaultValue));
471
                featureProvider.set(index, formatter.parseTimestamp(value, (java.sql.Timestamp) defaultValue));
472 472
                break;
473 473
                
474 474
            case DataTypes.TIME:
475
                featureProvider.set(index, formatter.parseTime(value, (Date) defaultValue));
475
                featureProvider.set(index, formatter.parseTime(value, (java.sql.Time) defaultValue));
476 476
                break;
477 477

  
478 478
            case DataTypes.DATE:
479
                featureProvider.set(index, formatter.parseDate(value, (Date) defaultValue));
479
                featureProvider.set(index, formatter.parseDate(value, (java.sql.Date) defaultValue));
480 480
                break;
481 481

  
482 482
            default: {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/test/java/org/gvsig/fmap/dal/store/dbf/TestCreate.java
205 205
            for (FeatureAttributeDescriptor sourceAttr : sourceStore.getDefaultFeatureType()) {
206 206
                switch(sourceAttr.getType()) {
207 207
                    case DataTypes.TIMESTAMP:
208
                        assertEquals(
209
                                String.format("Feature %03d attribute %s", i, sourceAttr.getName()),
210
                                sourceFeature.get(sourceAttr.getName()),
211
                                targetFeature.getTimestamp(sourceAttr.getName())
212
                        );
213
                        break;
208 214
                    case DataTypes.TIME:
209 215
                        assertEquals(
210 216
                                String.format("Feature %03d attribute %s", i, sourceAttr.getName()),
211
                                sourceFeature.getDate(sourceAttr.getName()),
212
                                targetFeature.getDate(sourceAttr.getName())
217
                                sourceFeature.get(sourceAttr.getName()),
218
                                targetFeature.getTime(sourceAttr.getName())
213 219
                        );
214 220
                        break;
215 221
                    case DataTypes.STRING:
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeature.java
57 57
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
58 58
import org.gvsig.fmap.geom.Geometry;
59 59
import org.gvsig.fmap.geom.primitive.Envelope;
60
import org.gvsig.timesupport.Instant;
61
import org.gvsig.timesupport.Interval;
62
import org.gvsig.timesupport.Time;
63 60
import org.gvsig.tools.ToolsLocator;
64 61
import org.gvsig.tools.dataTypes.CoercionException;
65 62
import org.gvsig.tools.dataTypes.DataTypesManager;
......
562 559
        return geom;
563 560
    }
564 561

  
562
//    @Override
563
//    public Time getDefaultTime() {
564
//    	Time time = this.data.getDefaultTime();
565
//        if( time == null ) {
566
//            int i = this.data.getType().getDefaultTimeAttributeIndex();
567
//            Object x = this.get(i);
568
//            if( x instanceof Time ) {
569
//                time = (Time) x;
570
//            } else {
571
//                time = this.getTime(i);
572
//            }
573
//        }
574
//        return time;
575
//    }
576
//
565 577
    @Override
566
    public Time getDefaultTime() {
567
    	Time time = this.data.getDefaultTime();
568
        if( time == null ) {
569
            int i = this.data.getType().getDefaultTimeAttributeIndex();
570
            Object x = this.get(i);
571
            if( x instanceof Time ) {
572
                time = (Time) x;
573
            } else {
574
                time = this.getTime(i);
575
            }
576
        }
577
        return time;
578
    }
579

  
580
    @Override
581 578
    public IProjection getDefaultSRS() {
582 579
        IProjection srs = this.data.getType().getDefaultSRS();
583 580
        if( srs == null ) {
......
842 839

  
843 840
    @Override
844 841
    public Date getDate(int index) {
845
        Date value = ((Date) this.get(index,Date.class,DataTypes.DATE));
842
        Date value = ((Date) this.get(index,java.sql.Date.class,DataTypes.DATE));
843
        return value;
844
    }
846 845

  
846
    @Override
847
    public Date getTime(String name) {
848
        return this.getTime(this.data.getType().getIndex(name));
849
    }
850

  
851
    @Override
852
    public Date getTime(int index) {
853
        Date value = ((Date) this.get(index,java.sql.Time.class,DataTypes.TIME));
847 854
        return value;
848 855
    }
849 856

  
850 857
    @Override
858
    public Date getTimestamp(String name) {
859
        return this.getTimestamp(this.data.getType().getIndex(name));
860
    }
861

  
862
    @Override
863
    public Date getTimestamp(int index) {
864
        Date value = ((Date) this.get(index,java.sql.Timestamp.class,DataTypes.TIMESTAMP));
865
        return value;
866
    }
867

  
868
    @Override
851 869
    public double getDouble(String name) {
852 870
        return this.getDouble(this.data.getType().getIndex(name));
853 871
    }
......
1058 1076
        return this.data.getType().getIndex(name) >= 0;
1059 1077
    }
1060 1078

  
1079
//    @Override
1080
//    public Time getTime(int index) {
1081
//        return ((Time) this.get(index,Time.class,DataTypes.INSTANT));
1082
//    }
1083
//
1084
//    @Override
1085
//    public Time getTime(String name) {
1086
//        return this.getInstant(this.data.getType().getIndex(name));
1087
//    }
1088
//
1089
//    @Override
1090
//    public Instant getInstant(int index) {
1091
//        return ((Instant) this.get(index,Instant.class,DataTypes.INSTANT));
1092
//    }
1093
//
1094
//    @Override
1095
//    public Instant getInstant(String name) {
1096
//        return this.getInstant(this.data.getType().getIndex(name));
1097
//    }
1098
//
1099
//    @Override
1100
//    public Interval getInterval(int index) {
1101
//        return ((Interval) this.get(index,Interval.class,DataTypes.INTERVAL));
1102
//    }
1103
//
1104
//    @Override
1105
//    public Interval getInterval(String name) {
1106
//        return this.getInterval(this.data.getType().getIndex(name));
1107
//    }
1108
//
1061 1109
    @Override
1062
    public Time getTime(int index) {
1063
        return ((Time) this.get(index,Time.class,DataTypes.INSTANT));
1064
    }
1065

  
1066
    @Override
1067
    public Time getTime(String name) {
1068
        return this.getInstant(this.data.getType().getIndex(name));
1069
    }
1070

  
1071
    @Override
1072
    public Instant getInstant(int index) {
1073
        return ((Instant) this.get(index,Instant.class,DataTypes.INSTANT));
1074
    }
1075

  
1076
    @Override
1077
    public Instant getInstant(String name) {
1078
        return this.getInstant(this.data.getType().getIndex(name));
1079
    }
1080

  
1081
    @Override
1082
    public Interval getInterval(int index) {
1083
        return ((Interval) this.get(index,Interval.class,DataTypes.INTERVAL));
1084
    }
1085

  
1086
    @Override
1087
    public Interval getInterval(String name) {
1088
        return this.getInterval(this.data.getType().getIndex(name));
1089
    }
1090

  
1091
    @Override
1092 1110
    public DynObject getAsDynObject() {
1093 1111
        DynObjectFeatureFacade facade = new DynObjectFeatureFacade(this);
1094 1112
        return facade;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/expressionbuilderformatter/JDBCFormatter.java
15 15
    public JDBCFormatter(Formatter<Value> formatter) {
16 16

  
17 17
        this.formatters = new Formatter[]{
18
            new Exists(this),
19
            new Select(this)
18
            new Exists(formatter),
19
            new Select(formatter)
20 20
        };
21 21
    }
22 22

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/H2SpatialFormatter.java
21 21

  
22 22
        this.builder = builder;
23 23
        this.formatters = new Formatter[]{
24
            new BaseFormatter(this),
25
            new JDBCFormatter(this),
26 24
            new IfNull(this.builder, this),
27 25
            new IsNotNull(this.builder, this),
28 26
            new IsNull(this.builder, this),
......
33 31
            new Decode(this.builder, this),
34 32
            new ILike(this.builder, this),
35 33
            new Constant(this.builder, this),
36
            new ST_AsBinary(this.builder, this)
34
            new ST_AsBinary(this.builder, this),
35
            new Exists(this.builder, this),
36
            new BaseFormatter(this),
37
            new JDBCFormatter(this),
37 38
        };
38 39
    }
39 40

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/SearchConditionPanelAdvanced.java
10 10
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
11 11
import org.gvsig.fmap.dal.feature.FeatureStore;
12 12
import org.gvsig.fmap.dal.swing.DALSwingLocator;
13
import org.gvsig.fmap.dal.swing.searchpanel.AbstractSearchConditionPanel;
13 14
import org.gvsig.fmap.dal.swing.searchpanel.SearchConditionPanel;
14 15
import org.gvsig.tools.swing.api.ChangeListenerHelper;
15 16
import org.gvsig.tools.swing.api.ToolsSwingLocator;
......
18 19
 *
19 20
 * @author jjdelcerro
20 21
 */
21
public class SearchConditionPanelAdvanced implements SearchConditionPanel {
22
public class SearchConditionPanelAdvanced 
23
    extends AbstractSearchConditionPanel 
24
    implements SearchConditionPanel 
25
  {
22 26

  
23 27
    @Override
24 28
    public JComponent asJComponent() {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/SearchConditionPanelSimplified.java
21 21
import org.gvsig.fmap.dal.feature.FeatureStore;
22 22
import org.gvsig.fmap.dal.swing.DALSwingLocator;
23 23
import org.gvsig.fmap.dal.swing.DataSwingManager;
24
import org.gvsig.fmap.dal.swing.searchpanel.AbstractSearchConditionPanel;
24 25
import org.gvsig.fmap.dal.swing.searchpanel.SearchConditionPanel;
25 26
import org.gvsig.tools.ToolsLocator;
26 27
import org.gvsig.tools.i18n.I18nManager;
......
36 37
 *
37 38
 * @author jjdelcerro
38 39
 */
39
public class SearchConditionPanelSimplified implements SearchConditionPanel {
40
public class SearchConditionPanelSimplified 
41
    extends AbstractSearchConditionPanel 
42
    implements SearchConditionPanel 
43
  {
40 44

  
41 45
  private static final Logger LOGGER = LoggerFactory.getLogger(SearchConditionPanelSimplified.class);
42 46

  
......
159 163

  
160 164
  @Override
161 165
  public boolean isValid(StringBuilder message) {
162
    return true;
166
    boolean valid = true;
167
    for (SearchConditionFieldController searchField : searchFields) {
168
      if( !searchField.isValid(message) ) {
169
        valid = false;
170
      }
171
    }
172
    return valid;
163 173
  }
164 174
  
165 175
  private void initComponents() {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/SearchConditionFieldController.java
583 583
    return null;
584 584
  }
585 585

  
586
  public boolean isValid(StringBuilder message) {
587
    Object value = this.getValue();
588
    if (value == null) {
589
      return true;
590
    }
591
    Field field = this.getCurrentField();
592
    if (field == null) {
593
      return true;
594
    }
595
    if (field.getPath().length > 2) {
596
      message.append("Invalid field '").append(field.getLabel()).append("'.\n");
597
      return false;
598
    }
599
    FeatureAttributeDescriptor descriptor = field.getDescriptor();
600
    switch(this.getRelationalOperator()) {
601
      case ExpressionBuilder.OPERATOR_EQ:
602
      case ExpressionBuilder.OPERATOR_NE:
603
      case ExpressionBuilder.OPERATOR_GT:
604
      case ExpressionBuilder.OPERATOR_GE:
605
      case ExpressionBuilder.OPERATOR_LT:
606
      case ExpressionBuilder.OPERATOR_LE:
607
        try {
608
          descriptor.getDataType().coerce(value);
609
        } catch (CoercionException ex) {
610
          message.append("Invalid value '")
611
                  .append(Objects.toString(value))
612
                  .append("' for field '")
613
                  .append(descriptor.getLabel())
614
                  .append("'.");
615
          message.append("\n");
616
          message.append(ex.getMessage());
617
          message.append("\n");
618
          return false;
619
        }
620
        break;
621

  
622
      default:
623
      case ExpressionBuilder.OPERATOR_ILIKE:
624
        break;
625
    }
626
    return true;
627
  }
628
  
586 629
  public ExpressionBuilder.Value getFilter() {
587 630
    ExpressionBuilder.Value filter = null;
588 631

  
......
592 635
    }
593 636
    Field field = this.getCurrentField();
594 637
    if (field == null) {
595
      return filter;
638
      return null;
596 639
    }
597 640
    if (field.getPath().length > 2) {
598 641
      // No soportado
......
602 645
    DALExpressionBuilder builder = dataManager.createDALExpressionBuilder();
603 646
    FeatureAttributeDescriptor parentDescriptor = field.getParentDescriptor();
604 647
    FeatureAttributeDescriptor descriptor = field.getDescriptor();
648

  
649
    ExpressionBuilder.Constant value_constant = null;
650
    
651
    switch(this.getRelationalOperator()) {
652
      case ExpressionBuilder.OPERATOR_EQ:
653
      case ExpressionBuilder.OPERATOR_NE:
654
      case ExpressionBuilder.OPERATOR_GT:
655
      case ExpressionBuilder.OPERATOR_GE:
656
      case ExpressionBuilder.OPERATOR_LT:
657
      case ExpressionBuilder.OPERATOR_LE:
658
        try {
659
          value_constant = builder.expression().constant(
660
              descriptor.getDataType().coerce(value)
661
          );
662
        } catch (CoercionException ex) {
663
          return null;
664
        }
665
        break;
666

  
667
      default:
668
      case ExpressionBuilder.OPERATOR_ILIKE:
669
        value_constant = builder.expression().constant(value);
670
        break;
671
    }
672

  
605 673
    if (parentDescriptor == null) {
606 674
      // Se busca en campos de la misma tabla.
607 675
      filter = builder.expression().binaryOperator(
608 676
              this.getRelationalOperator(),
609 677
              builder.expression().column(descriptor.getName()),
610
              builder.expression().constant(value)
678
              value_constant
611 679
      );
612 680
    } else {
613 681
      // Se busca en campos de una tabla relacionada.
......
616 684
        case DynField.RELATION_TYPE_IDENTITY:
617 685
          filter = builder.expression().binaryOperator(
618 686
                  this.getRelationalOperator(),
619
                  builder.expression().column(descriptor.getName()),
620 687
                  builder.foreing_value(
621 688
                          parentDescriptor.getName(),
622 689
                          descriptor.getName()
623
                  )
690
                  ),
691
                  value_constant
624 692
          );
625 693
          break;
626 694

  
......
645 713
                                  builder.expression().binaryOperator(
646 714
                                          this.getRelationalOperator(),
647 715
                                          builder.expression().column(descriptor.getName()),
648
                                          builder.expression().constant(this.getValue())
716
                                          value_constant
649 717
                                  )
650 718
                          )
651 719
                  )
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/searchpanel/AbstractSearchConditionPanel.java
1
package org.gvsig.fmap.dal.swing.searchpanel;
2

  
3
/**
4
 *
5
 * @author jjdelcerro
6
 */
7
public abstract class AbstractSearchConditionPanel implements SearchConditionPanel {
8
  
9
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/Feature.java
30 30
import org.gvsig.fmap.dal.exception.DataException;
31 31
import org.gvsig.fmap.geom.Geometry;
32 32
import org.gvsig.fmap.geom.primitive.Envelope;
33
import org.gvsig.timesupport.Instant;
34
import org.gvsig.timesupport.Interval;
35
import org.gvsig.timesupport.Time;
33
//import org.gvsig.timesupport.Instant;
34
//import org.gvsig.timesupport.Interval;
35
//import org.gvsig.timesupport.Time;
36 36
import org.gvsig.tools.dynobject.DynObject;
37 37
import org.gvsig.tools.evaluator.Evaluator;
38 38
import org.gvsig.tools.evaluator.EvaluatorData;
......
297 297
   * @return value of the specified attribute
298 298
   */
299 299
  public Date getDate(int index);
300
  
301
  public Date getTime(String name);
302
  public Date getTime(int index);
303
  
304
  public Date getTimestamp(String name);
305
  public Date getTimestamp(int index);
300 306

  
301 307
  /**
302 308
   * Returns the String value of an attribute given its name.
......
424 430
   */
425 431
  public List getSRSs();
426 432

  
427
  public Time getDefaultTime();
433
//  public Time getDefaultTime();
434
//
435
//  public Time getTime(int index);
436
//
437
//  public Time getTime(String name);
438
//
439
//  /**
440
//   * Returns the instant value of an attribute given its position.
441
//   *
442
//   * @param index position of the attribute
443
//   * @return value of the specified attribute
444
//   */
445
//  public Instant getInstant(int index);
446
//
447
//  /**
448
//   * Returns the instant value of an attribute given its name.
449
//   *
450
//   * @param name a string containing the name of the attribute
451
//   * @return value of the specified attribute
452
//   */
453
//  public Instant getInstant(String name);
454
//
455
//  /**
456
//   * Returns the interval value of an attribute given its position.
457
//   *
458
//   * @param index position of the attribute
459
//   * @return value of the specified attribute
460
//   */
461
//  public Interval getInterval(int index);
462
//
463
//  /**
464
//   * Returns the interval value of an attribute given its name.
465
//   *
466
//   * @param name a string containing the name of the attribute
467
//   * @return value of the specified attribute
468
//   */
469
//  public Interval getInterval(String name);
428 470

  
429
  public Time getTime(int index);
430

  
431
  public Time getTime(String name);
432

  
433
  /**
434
   * Returns the instant value of an attribute given its position.
435
   *
436
   * @param index position of the attribute
437
   * @return value of the specified attribute
438
   */
439
  public Instant getInstant(int index);
440

  
441
  /**
442
   * Returns the instant value of an attribute given its name.
443
   *
444
   * @param name a string containing the name of the attribute
445
   * @return value of the specified attribute
446
   */
447
  public Instant getInstant(String name);
448

  
449
  /**
450
   * Returns the interval value of an attribute given its position.
451
   *
452
   * @param index position of the attribute
453
   * @return value of the specified attribute
454
   */
455
  public Interval getInterval(int index);
456

  
457
  /**
458
   * Returns the interval value of an attribute given its name.
459
   *
460
   * @param name a string containing the name of the attribute
461
   * @return value of the specified attribute
462
   */
463
  public Interval getInterval(String name);
464

  
465 471
  public DynObject getAsDynObject();
466 472

  
467 473
  /**
trunk/org.gvsig.desktop/pom.xml
2566 2566

  
2567 2567
        <jython.artifactId>jython-standalone</jython.artifactId>
2568 2568
        <!-- External project versions -->
2569
        <gvsig.tools.version>3.0.222</gvsig.tools.version>
2569
        <gvsig.tools.version>3.0.224</gvsig.tools.version>
2570 2570
        <gvsig.proj.version>1.0.8</gvsig.proj.version>
2571 2571
        <gvsig.projection.api.version>2.0.30</gvsig.projection.api.version>
2572 2572

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/formatter/value/BaseFormatter.java
12 12

  
13 13
    private final Formatter<ExpressionBuilder.Value>[] formatters;
14 14

  
15
    public BaseFormatter() {
16
      this(null);
17
    }
18
    
15 19
    public BaseFormatter(Formatter<Value> formatter) {
16

  
20
        if( formatter==null || ExpressionBuilder.EMPTY_FORMATTER==formatter ) {
21
          formatter = this;
22
        }
17 23
        this.formatters = new Formatter[]{
18
            new Time(this),
19
            new Date(this),
20
            new Timestamp(this),
21
            new Extract(this),
22
            new Getattr(this),
23
            new Tuple(this)
24
            new Time(formatter),
25
            new Date(formatter),
26
            new Timestamp(formatter),
27
            new Extract(formatter),
28
            new Getattr(formatter),
29
            new Tuple(formatter)
24 30
        };
25 31
    }
26 32

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionBuilder.java
250 250
        }
251 251
    };
252 252
            
253
    public static final Formatter<Value> BASE_FORMATTER = new BaseFormatter(EMPTY_FORMATTER);
253
    public static final Formatter<Value> BASE_FORMATTER = new BaseFormatter();
254 254

  
255 255
    public String quote_for_identifiers();
256 256
    

Also available in: Unified diff