Statistics
| Revision:

svn-gvsig-desktop / 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 / featuretable / table / DynFieldFacadeOfAFeatureAttributeDescriptor.java @ 44673

History | View | Annotate | Download (19.1 KB)

1

    
2
package org.gvsig.fmap.dal.swing.impl.featuretable.table;
3

    
4
import java.math.BigDecimal;
5
import java.math.MathContext;
6
import java.text.DateFormat;
7
import java.util.List;
8
import java.util.Locale;
9
import java.util.Objects;
10
import org.apache.commons.lang3.StringUtils;
11
import org.cresques.cts.IProjection;
12
import org.gvsig.fmap.dal.DataTypes;
13
import org.gvsig.fmap.dal.feature.DataProfile;
14
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
15
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
16
import org.gvsig.fmap.dal.feature.FeatureAttributeGetter;
17
import org.gvsig.fmap.dal.feature.FeatureStore;
18
import org.gvsig.fmap.dal.feature.FeatureType;
19
import org.gvsig.fmap.dal.feature.ForeingKey;
20
import org.gvsig.fmap.geom.Geometry;
21
import org.gvsig.fmap.geom.type.GeometryType;
22
import org.gvsig.timesupport.Interval;
23
import org.gvsig.tools.dataTypes.Coercion;
24
import org.gvsig.tools.dataTypes.CoercionException;
25
import org.gvsig.tools.dataTypes.DataType;
26
import org.gvsig.tools.dataTypes.DataTypeUtils;
27
import org.gvsig.tools.dynobject.DynField;
28
import org.gvsig.tools.dynobject.DynField_v2;
29
import org.gvsig.tools.dynobject.DynMethod;
30
import org.gvsig.tools.dynobject.DynObject;
31
import org.gvsig.tools.dynobject.DynObjectValueItem;
32
import org.gvsig.tools.dynobject.DynStruct;
33
import org.gvsig.tools.dynobject.Tags;
34
import org.gvsig.tools.dynobject.exception.DynFieldIsNotAContainerException;
35
import org.gvsig.tools.dynobject.exception.DynFieldValidateException;
36
import org.gvsig.tools.evaluator.Evaluator;
37
import org.gvsig.tools.dataTypes.CoercionContext;
38

    
39

    
40
public class DynFieldFacadeOfAFeatureAttributeDescriptor implements FeatureAttributeDescriptor {
41

    
42
    private DynField field;
43
    private CoercionContext coerceContext;
44
  
45
    public DynFieldFacadeOfAFeatureAttributeDescriptor(DynField field) {
46
        this.field = field;
47
    }
48
    
49
    @Override
50
    public FeatureAttributeDescriptor getCopy() {
51
        try {
52
            return (FeatureAttributeDescriptor) field.clone();
53
        } catch (CloneNotSupportedException ex) {
54
            throw new RuntimeException(ex);
55
        }
56
    }
57

    
58
    @Override
59
    public MathContext getMathContext() {
60
      return MathContext.UNLIMITED;
61
    }
62

    
63
    @Override
64
    public String getDataTypeName() {
65
        return field.getDataType().getName();
66
    }
67

    
68
    @Override
69
    public int getSize() {
70
        return 1;
71
    }
72

    
73
    @Override
74
    public int getPrecision() {
75
        return 0;
76
    }
77

    
78
    @Override
79
    public int getScale() {
80
        return 0;
81
    }
82

    
83
    @Override
84
    public Coercion getCoercion() {
85
      return this.field.getDataType().getCoercion();
86
    }
87

    
88
    @Override
89
    public CoercionContext getCoercionContext() {
90
      if( this.coerceContext==null ) {
91
        if( this.getDataType().isNumeric() ) {
92
          if( this.getSize()==0 ) {
93
            this.coerceContext = DataTypeUtils.coerceContextDefaultDecimal();
94
          } else {
95
            this.coerceContext = DataTypeUtils.coerceContextDecimal(
96
                    null, 
97
                    this.getSize(), 
98
                    this.getPrecision(),
99
                    BigDecimal.ROUND_HALF_UP
100
            );
101
          }
102
        } else {
103
            this.coerceContext = DataTypeUtils.coerceContextDefaultLocale();
104
        }
105
      }
106
      return this.coerceContext;
107
    }
108

    
109
    @Override
110
    public Class getObjectClass() {
111
        return this.getDataType().getDefaultClass();
112
    }
113

    
114
    @Override
115
    public int getMinimumOccurrences() {
116
        return 0;
117
    }
118

    
119
    @Override
120
    public int getMaximumOccurrences() {
121
        return 0;
122
    }
123

    
124
    @Override
125
    public boolean isPrimaryKey() {
126
        return false;
127
    }
128

    
129
    @Override
130
    public boolean allowNull() {
131
        return true;
132
    }
133

    
134
    @Override
135
    public Evaluator getEvaluator() {
136
        return null;
137
    }
138

    
139
    @Override
140
    public IProjection getSRS() {
141
        return null;
142
    }
143

    
144
    @Override
145
    public int getGeometryType() {
146
        return Geometry.TYPES.GEOMETRY;
147
    }
148

    
149
    @Override
150
    public int getGeometrySubType() {
151
        return Geometry.SUBTYPES.UNKNOWN;
152
    }
153

    
154
    @Override
155
    public GeometryType getGeomType() {
156
        return null;
157
    }
158

    
159
    @Override
160
    public DateFormat getDateFormat() {
161
        return null;
162
    }
163

    
164
    @Override
165
    public int getIndex() {
166
        return -1;
167
    }
168

    
169
    @Override
170
    public Object getAdditionalInfo(String infoName) {
171
        return null;
172
    }
173

    
174
    @Override
175
    public boolean isAutomatic() {
176
        return false;
177
    }
178

    
179
    @Override
180
    public boolean isTime() {
181
        return false;
182
    }
183

    
184
    @Override
185
    public boolean isIndexed() {
186
        return false;
187
    }
188

    
189
    @Override
190
    public boolean allowIndexDuplicateds() {
191
        return false;
192
    }
193

    
194
    @Override
195
    public boolean isIndexAscending() {
196
        return false;
197
    }
198

    
199
    @Override
200
    public FeatureAttributeGetter getFeatureAttributeGetter() {
201
        return null;
202
    }
203

    
204
    @Override
205
    public void setFeatureAttributeGetter(FeatureAttributeGetter featureAttributeGetter) {
206
    }
207

    
208
    @Override
209
    public FeatureAttributeEmulator getFeatureAttributeEmulator() {
210
        return null;
211
    }
212

    
213
    @Override
214
    public String getName() {
215
        return this.field.getName();
216
    }
217

    
218
    @Override
219
    public int getType() {
220
        return this.field.getDataType().getType();
221
    }
222

    
223
    @Override
224
    public DataType getDataType() {
225
        return this.field.getDataType();
226
    }
227

    
228
    @Override
229
    public Object getDefaultValueCoerced() {
230
        try {
231
            return this.getDataType().coerce(this.getDefaultValue());
232
        } catch (CoercionException ex) {
233
            return null;
234
        }
235
    }
236
    
237
    @Override
238
    public String getSubtype() {
239
        return null;
240
    }
241

    
242
    @Override
243
    public String getDescription() {
244
        return this.field.getDescription();
245
    }
246

    
247
    @Override
248
    public Object getDefaultValue() {
249
        return this.field.getDefaultValue();
250
    }
251

    
252
    @Override
253
    public String getGroup() {
254
        return this.field.getGroup();
255
    }
256

    
257
    @Override
258
    public int getOder() {
259
        return this.field.getOder();
260
    }
261

    
262
    @Override
263
    public boolean isMandatory() {
264
        return this.field.isMandatory();
265
    }
266

    
267
    @Override
268
    public boolean isPersistent() {
269
        return this.field.isPersistent();
270
    }
271

    
272
    @Override
273
    public boolean isHidden() {
274
        return this.field.isHidden();
275
    }
276

    
277
    @Override
278
    public boolean isReadOnly() {
279
        return this.field.isReadOnly();
280
    }
281

    
282
    @Override
283
    public boolean isContainer() {
284
        return this.field.isContainer();
285
    }
286

    
287
    @Override
288
    public DynObjectValueItem[] getAvailableValues() {
289
        return this.field.getAvailableValues();
290
    }
291

    
292
    @Override
293
    public Object getMinValue() {
294
        return this.field.getMinValue();
295
    }
296

    
297
    @Override
298
    public Object getMaxValue() {
299
        return this.field.getMaxValue();
300
    }
301

    
302
    @Override
303
    public Class getClassOfValue() {
304
        return this.field.getClassOfValue();
305
    }
306

    
307
    @Override
308
    public Class getClassOfItems() {
309
        return this.field.getClassOfItems();
310
    }
311

    
312
    @Override
313
    public DynField setDescription(String description) {
314
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
315
    }
316

    
317
    @Override
318
    public DynField setType(int type) {
319
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
320
    }
321

    
322
    @Override
323
    public DynField setType(DataType type) {
324
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
325
    }
326

    
327
    @Override
328
    public DynField setSubtype(String subtype) {
329
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
330
    }
331

    
332
    @Override
333
    public DynField setDefaultFieldValue(Object defaultValue) {
334
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
335
    }
336

    
337
    @Override
338
    public DynField setGroup(String groupName) {
339
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
340
    }
341

    
342
    @Override
343
    public DynField setOrder(int order) {
344
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
345
    }
346

    
347
    @Override
348
    public DynField setMandatory(boolean mandatory) {
349
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
350
    }
351

    
352
    @Override
353
    public DynField setHidden(boolean hidden) {
354
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
355
    }
356

    
357
    @Override
358
    public DynField setPersistent(boolean persistent) {
359
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
360
    }
361

    
362
    @Override
363
    public DynField setAvailableValues(DynObjectValueItem[] values) {
364
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
365
    }
366

    
367
    @Override
368
    public DynField setAvailableValues(List values) {
369
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
370
    }
371

    
372
    @Override
373
    public DynField setMinValue(Object minValue) {
374
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
375
    }
376

    
377
    @Override
378
    public DynField setMaxValue(Object maxValue) {
379
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
380
    }
381

    
382
    @Override
383
    public DynField setClassOfValue(Class theClass) throws DynFieldIsNotAContainerException {
384
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
385
    }
386

    
387
    @Override
388
    public DynField setClassOfItems(Class theClass) throws DynFieldIsNotAContainerException {
389
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
390
    }
391

    
392
    @Override
393
    public DynField setReadOnly(boolean isReadOnly) {
394
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
395
    }
396

    
397
    @Override
398
    public DynField getElementsType() {
399
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
400
    }
401

    
402
    @Override
403
    public DynField setElementsType(int type) throws DynFieldIsNotAContainerException {
404
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
405
    }
406

    
407
    @Override
408
    public DynField setElementsType(DynStruct type) throws DynFieldIsNotAContainerException {
409
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
410
    }
411

    
412
    @Override
413
    public void validate(Object value) throws DynFieldValidateException {
414
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
415
    }
416

    
417
    @Override
418
    public Object coerce(Object value) throws CoercionException {
419
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
420
    }
421

    
422
    @Override
423
    public int getTheTypeOfAvailableValues() {
424
        return this.field.getTheTypeOfAvailableValues();
425
    }
426

    
427
    @Override
428
    public DynField setDefaultDynValue(Object defaultValue) {
429
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
430
    }
431

    
432
    @Override
433
    public DynField setTheTypeOfAvailableValues(int type) {
434
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
435
    }
436

    
437
    @Override
438
    public Object clone() throws CloneNotSupportedException {
439
        DynFieldFacadeOfAFeatureAttributeDescriptor other = (DynFieldFacadeOfAFeatureAttributeDescriptor) super.clone(); 
440
        other.field = (DynField) other.field.clone();
441
        return other;
442
    }
443

    
444
    @Override
445
    public boolean isComputed() {
446
        if( field instanceof DynField_v2 ) {
447
            return ((DynField_v2)field).isCalculated();
448
        }
449
        return false;
450
    }
451

    
452
    @Override
453
    public FeatureStore getStore() {
454
        return null;
455
    }
456

    
457
    @Override
458
    public FeatureType getFeatureType() {
459
        return null;
460
    }
461

    
462
    @Override
463
    public Interval getInterval() {
464
        return null;
465
    }
466

    
467
    @Override
468
    public String getDataProfileName() {
469
        return null;
470
    }
471

    
472
    @Override
473
    public String[] getRequiredFieldNames() {
474
        return null;
475
    }
476

    
477
    @Override
478
    public DynField setClassOfValue(DynStruct dynStrct) {
479
        ((DynField_v2)this.field).setClassOfValue(dynStrct);
480
        return this;
481
    }
482

    
483
    @Override
484
    public DynField setClassOfValue(String theClassNameOfValue) {
485
        ((DynField_v2)this.field).setClassOfValue(theClassNameOfValue);
486
        return this;
487
    }
488

    
489
    @Override
490
    public String getClassNameOfValue() {
491
        return ((DynField_v2)this.field).getClassNameOfValue();
492
    }
493

    
494
    @Override
495
    public DynStruct getDynClassOfValue() {
496
        return ((DynField_v2)this.field).getDynClassOfValue();
497
    }
498

    
499
    @Override
500
    public DynField setTypeOfItems(int type) {
501
        ((DynField_v2)this.field).setTypeOfItems(type);
502
        return this;
503
    }
504

    
505
    @Override
506
    public int getTypeOfItems() {
507
        return ((DynField_v2)this.field).getTypeOfItems();
508
    }
509

    
510
    @Override
511
    public DynField setClassOfItems(DynStruct dynStrct) {
512
        ((DynField_v2)this.field).setClassOfItems(dynStrct);
513
        return this;
514
    }
515

    
516
    @Override
517
    public DynField setClassOfItems(String theClassNameOfValue) {
518
        ((DynField_v2)this.field).setClassOfItems(theClassNameOfValue);
519
        return this;
520
    }
521

    
522
    @Override
523
    public String getClassNameOfItems() {
524
        return ((DynField_v2)this.field).getClassNameOfItems();
525
    }
526

    
527
    @Override
528
    public DynStruct getDynClassOfItems() {
529
        return ((DynField_v2)this.field).getDynClassOfItems();
530
    }
531

    
532
    @Override
533
    public Tags getTags() {
534
        return ((DynField_v2)this.field).getTags();
535
    }
536

    
537
    @Override
538
    public DynField setRelationType(int relationType) {
539
        ((DynField_v2)this.field).setRelationType(relationType);
540
        return this;
541
    }
542

    
543
    @Override
544
    public int getRelationType() {
545
        return ((DynField_v2)this.field).getRelationType();
546
    }
547

    
548
    @Override
549
    public DynField setAvailableValues(DynMethod computeAvailableValues) {
550
        ((DynField_v2)this.field).setAvailableValues(computeAvailableValues);
551
        return this;
552
    }
553

    
554
    @Override
555
    public DynMethod getAvailableValuesMethod() {
556
        return ((DynField_v2)this.field).getAvailableValuesMethod();
557
    }
558

    
559
    @Override
560
    public DynObjectValueItem[] getAvailableValues(DynObject self) {
561
        return ((DynField_v2)this.field).getAvailableValues(self);
562
    }
563

    
564
    @Override
565
    public boolean isAvailableValuesCalculated() {
566
        return ((DynField_v2)this.field).isAvailableValuesCalculated();
567
    }
568

    
569
    @Override
570
    public DynField setCalculateMethod(DynMethod computeValue) {
571
        ((DynField_v2)this.field).setCalculateMethod(computeValue);
572
        return this;
573
    }
574

    
575
    @Override
576
    public DynMethod getCalculateMethod() {
577
        return ((DynField_v2)this.field).getCalculateMethod();
578
    }
579

    
580
    @Override
581
    public boolean isCalculated() {
582
        return ((DynField_v2)this.field).isCalculated();
583
    }
584

    
585
    @Override
586
    public Object getCalculatedValue(DynObject self) {
587
        return ((DynField_v2)this.field).getCalculatedValue(self);
588
    }
589

    
590
    @Override
591
    public void copyFrom(DynField other) {
592
        ((DynField_v2)this.field).copyFrom(other);
593
    }
594

    
595
    @Override
596
    public DynField setValidateElements(boolean validate) {
597
        ((DynField_v2)this.field).setValidateElements(validate);
598
        return this;
599
    }
600

    
601
    @Override
602
    public boolean getValidateElements() {
603
        return ((DynField_v2)this.field).getValidateElements();
604
    }
605

    
606
    @Override
607
    public String getLabel() {
608
        return ((DynField_v2)this.field).getLabel();
609
    }
610

    
611
    @Override
612
    public DynField setLabel(String label) {
613
        ((DynField_v2)this.field).setLabel(label);
614
        return this;
615
    }
616

    
617
    @Override
618
    public void recentUsed() {
619
    }
620

    
621
    @Override
622
    public boolean isForeingKey() {
623
        return false;
624
    }
625

    
626
    @Override
627
    public ForeingKey getForeingKey() {
628
        return null;
629
    }
630

    
631
    @Override
632
    public String getShortLabel() {
633
        return ((DynField_v2)field).getShortLabel();
634
    }
635

    
636
    @Override
637
    public DynField setShortLabel(String shortLabel) {
638
        ((DynField_v2)field).setShortLabel(shortLabel);
639
        return this;
640
    }
641

    
642
    @Override
643
    public String getLocalizedShortLabel() {
644
        return ((DynField_v2)field).getLocalizedShortLabel();
645
    }
646

    
647
    @Override
648
    public String getLocalizedLabel() {
649
        return ((DynField_v2)field).getLocalizedLabel();
650
    }
651

    
652
    @Override
653
    public String getLabelOfValue(Object value) {
654
        return Objects.toString(value, "");
655
    }
656

    
657
    @Override
658
    public DataProfile getDataProfile() {
659
        return null;
660
    }
661

    
662
    @Override
663
    public boolean hasOnlyMetadataChanges(FeatureAttributeDescriptor other) {
664
        return false;
665
    }
666

    
667
    @Override
668
    public boolean hasLabel() {
669
        return StringUtils.isNotBlank(((DynField_v2) this.field).getLabel());
670
    }
671

    
672
    @Override
673
    public boolean hasShortLabel() {
674
        return StringUtils.isNotBlank(((DynField_v2) this.field).getShortLabel());
675
    }
676

    
677
    @Override
678
    public boolean hasDescription() {
679
        return StringUtils.isNotBlank(this.field.getDescription());
680
    }
681

    
682
    @Override
683
    public FeatureAttributeDescriptor getValue() {
684
        return this;
685
    }
686

    
687
  @Override
688
  public boolean supportSize() {
689
    switch (this.getDataType().getType()) {
690
      case DataTypes.STRING:
691
      case DataTypes.BYTEARRAY:
692
        return true;
693
      default:
694
        return false;
695
    }
696
  }
697

    
698
  @Override
699
  public boolean supportPrecision() {
700
    switch (this.getDataType().getType()) {
701
      case DataTypes.BYTE:
702
      case DataTypes.INT:
703
      case DataTypes.LONG:
704
      case DataTypes.FLOAT:
705
      case DataTypes.DOUBLE:
706
      case DataTypes.DECIMAL:
707
        return true;
708
      default:
709
        return false;
710
    }
711
  }
712

    
713
  @Override
714
  public boolean supportScale() {
715
    switch (this.getDataType().getType()) {
716
      case DataTypes.FLOAT:
717
      case DataTypes.DOUBLE:
718
      case DataTypes.DECIMAL:
719
        return true;
720
      default:
721
        return false;
722
    }
723
  }
724

    
725
  @Override
726
  public int getRoundMode() {
727
    return BigDecimal.ROUND_HALF_UP;
728
  }
729

    
730
  @Override
731
  public Locale getLocale() {
732
    return Locale.ENGLISH;
733
  }
734

    
735
  @Override
736
  public Object get(String name) {
737
    return null;
738
  }
739

    
740
}