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 @ 45258

History | View | Annotate | Download (20.2 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 javax.json.JsonObject;
11
import javax.json.JsonObjectBuilder;
12
import org.apache.commons.lang3.ArrayUtils;
13
import org.apache.commons.lang3.StringUtils;
14
import org.cresques.cts.IProjection;
15
import org.gvsig.expressionevaluator.Expression;
16
import org.gvsig.fmap.dal.feature.DataProfile;
17
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
18
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
19
import org.gvsig.fmap.dal.feature.FeatureAttributeGetter;
20
import org.gvsig.fmap.dal.feature.FeatureStore;
21
import org.gvsig.fmap.dal.feature.FeatureType;
22
import org.gvsig.fmap.dal.feature.ForeingKey;
23
import org.gvsig.fmap.geom.Geometry;
24
import org.gvsig.fmap.geom.type.GeometryType;
25
import org.gvsig.timesupport.Interval;
26
import org.gvsig.tools.dataTypes.Coercion;
27
import org.gvsig.tools.dataTypes.CoercionException;
28
import org.gvsig.tools.dataTypes.DataType;
29
import org.gvsig.tools.dataTypes.DataTypeUtils;
30
import org.gvsig.tools.dynobject.DynField;
31
import org.gvsig.tools.dynobject.DynField_v2;
32
import org.gvsig.tools.dynobject.DynMethod;
33
import org.gvsig.tools.dynobject.DynObject;
34
import org.gvsig.tools.dynobject.DynObjectValueItem;
35
import org.gvsig.tools.dynobject.DynStruct;
36
import org.gvsig.tools.dynobject.Tags;
37
import org.gvsig.tools.dynobject.exception.DynFieldIsNotAContainerException;
38
import org.gvsig.tools.dynobject.exception.DynFieldValidateException;
39
import org.gvsig.tools.evaluator.Evaluator;
40
import org.gvsig.tools.dataTypes.CoercionContext;
41
import org.gvsig.tools.persistence.PersistentState;
42
import org.gvsig.tools.persistence.exception.PersistenceException;
43

    
44

    
45
public class DynFieldFacadeOfAFeatureAttributeDescriptor implements FeatureAttributeDescriptor {
46

    
47
    private DynField field;
48
    private CoercionContext coerceContext;
49
  
50
    public DynFieldFacadeOfAFeatureAttributeDescriptor(DynField field) {
51
        this.field = field;
52
    }
53
    
54
    @Override
55
    public FeatureAttributeDescriptor getCopy() {
56
        try {
57
            return (FeatureAttributeDescriptor) field.clone();
58
        } catch (CloneNotSupportedException ex) {
59
            throw new RuntimeException(ex);
60
        }
61
    }
62

    
63
    @Override
64
    public MathContext getMathContext() {
65
      return MathContext.UNLIMITED;
66
    }
67

    
68
    @Override
69
    public String getDataTypeName() {
70
        return field.getDataType().getName();
71
    }
72

    
73
    @Override
74
    public int getSize() {
75
        return 1;
76
    }
77

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

    
83
    @Override
84
    public int getScale() {
85
        return 0;
86
    }
87

    
88
    @Override
89
    public Coercion getCoercion() {
90
      return this.field.getDataType().getCoercion();
91
    }
92

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

    
114
    @Override
115
    public Class getObjectClass() {
116
        return this.getDataType().getDefaultClass();
117
    }
118

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

    
124
    @Override
125
    public int getMaximumOccurrences() {
126
        return 0;
127
    }
128

    
129
    @Override
130
    public boolean isPrimaryKey() {
131
        return false;
132
    }
133

    
134
    @Override
135
    public boolean allowNull() {
136
        return true;
137
    }
138

    
139
    @Override
140
    public Evaluator getEvaluator() {
141
        return null;
142
    }
143

    
144
    @Override
145
    public IProjection getSRS() {
146
        return null;
147
    }
148

    
149
    @Override
150
    public int getGeometryType() {
151
        return Geometry.TYPES.GEOMETRY;
152
    }
153

    
154
    @Override
155
    public int getGeometrySubType() {
156
        return Geometry.SUBTYPES.UNKNOWN;
157
    }
158

    
159
    @Override
160
    public GeometryType getGeomType() {
161
        return null;
162
    }
163

    
164
    @Override
165
    public DateFormat getDateFormat() {
166
        return null;
167
    }
168

    
169
    @Override
170
    public int getIndex() {
171
        return -1;
172
    }
173

    
174
    @Override
175
    public String getAdditionalInfo(String infoName) {
176
        return null;
177
    }
178

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

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

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

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

    
199
    @Override
200
    public boolean isIndexAscending() {
201
        return false;
202
    }
203

    
204
    @Override
205
    public FeatureAttributeGetter getFeatureAttributeGetter() {
206
        return null;
207
    }
208

    
209
    @Override
210
    public void setFeatureAttributeGetter(FeatureAttributeGetter featureAttributeGetter) {
211
    }
212

    
213
    @Override
214
    public FeatureAttributeEmulator getFeatureAttributeEmulator() {
215
        return null;
216
    }
217

    
218
    @Override
219
    public String getName() {
220
        return this.field.getName();
221
    }
222

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

    
228
    @Override
229
    public DataType getDataType() {
230
        return this.field.getDataType();
231
    }
232

    
233
    @Override
234
    public Object getDefaultValueCoerced() {
235
        try {
236
            return this.getDataType().coerce(this.getDefaultValue());
237
        } catch (CoercionException ex) {
238
            return null;
239
        }
240
    }
241
    
242
    @Override
243
    public String getSubtype() {
244
        return null;
245
    }
246

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

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

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

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

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

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

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

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

    
287
    @Override
288
    public boolean isContainer() {
289
        return this.field.isContainer();
290
    }
291

    
292
    @Override
293
    public DynObjectValueItem[] getAvailableValues() {
294
        return this.field.getAvailableValues();
295
    }
296

    
297
    @Override
298
    public boolean hasConstantAvailableValues() {
299
        DynObjectValueItem[] values = this.field.getAvailableValues();
300
        return ! ArrayUtils.isEmpty(values);
301
    }
302

    
303
    @Override
304
    public Object getMinValue() {
305
        return this.field.getMinValue();
306
    }
307

    
308
    @Override
309
    public Object getMaxValue() {
310
        return this.field.getMaxValue();
311
    }
312

    
313
    @Override
314
    public Class getClassOfValue() {
315
        return this.field.getClassOfValue();
316
    }
317

    
318
    @Override
319
    public Class getClassOfItems() {
320
        return this.field.getClassOfItems();
321
    }
322

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

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

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

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

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

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

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

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

    
363
    @Override
364
    public DynField setHidden(boolean hidden) {
365
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
366
    }
367

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

    
373
    @Override
374
    public DynField setAvailableValues(DynObjectValueItem[] values) {
375
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
376
    }
377

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

    
383
    @Override
384
    public DynField setMinValue(Object minValue) {
385
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
386
    }
387

    
388
    @Override
389
    public DynField setMaxValue(Object maxValue) {
390
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
391
    }
392

    
393
    @Override
394
    public DynField setClassOfValue(Class theClass) throws DynFieldIsNotAContainerException {
395
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
396
    }
397

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

    
403
    @Override
404
    public DynField setReadOnly(boolean isReadOnly) {
405
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
406
    }
407

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

    
413
    @Override
414
    public DynField setElementsType(int type) throws DynFieldIsNotAContainerException {
415
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
416
    }
417

    
418
    @Override
419
    public DynField setElementsType(DynStruct type) throws DynFieldIsNotAContainerException {
420
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
421
    }
422

    
423
    @Override
424
    public void validate(Object value) throws DynFieldValidateException {
425
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
426
    }
427

    
428
    @Override
429
    public Object coerce(Object value) throws CoercionException {
430
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
431
    }
432

    
433
    @Override
434
    public int getTheTypeOfAvailableValues() {
435
        return this.field.getTheTypeOfAvailableValues();
436
    }
437

    
438
    @Override
439
    public DynField setDefaultDynValue(Object defaultValue) {
440
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
441
    }
442

    
443
    @Override
444
    public DynField setTheTypeOfAvailableValues(int type) {
445
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
446
    }
447

    
448
    @Override
449
    public Object clone() throws CloneNotSupportedException {
450
        DynFieldFacadeOfAFeatureAttributeDescriptor other = (DynFieldFacadeOfAFeatureAttributeDescriptor) super.clone(); 
451
        other.field = (DynField) other.field.clone();
452
        return other;
453
    }
454

    
455
    @Override
456
    public boolean isComputed() {
457
        if( field instanceof DynField_v2 ) {
458
            return ((DynField_v2)field).isCalculated();
459
        }
460
        return false;
461
    }
462

    
463
    @Override
464
    public FeatureStore getStore() {
465
        return null;
466
    }
467

    
468
    @Override
469
    public FeatureType getFeatureType() {
470
        return null;
471
    }
472

    
473
    @Override
474
    public Interval getInterval() {
475
        return null;
476
    }
477

    
478
    @Override
479
    public String getDataProfileName() {
480
        return null;
481
    }
482

    
483
    @Override
484
    public String[] getRequiredFieldNames() {
485
        return null;
486
    }
487

    
488
    @Override
489
    public DynField setClassOfValue(DynStruct dynStrct) {
490
        ((DynField_v2)this.field).setClassOfValue(dynStrct);
491
        return this;
492
    }
493

    
494
    @Override
495
    public DynField setClassOfValue(String theClassNameOfValue) {
496
        ((DynField_v2)this.field).setClassOfValue(theClassNameOfValue);
497
        return this;
498
    }
499

    
500
    @Override
501
    public String getClassNameOfValue() {
502
        return ((DynField_v2)this.field).getClassNameOfValue();
503
    }
504

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

    
510
    @Override
511
    public DynField setTypeOfItems(int type) {
512
        ((DynField_v2)this.field).setTypeOfItems(type);
513
        return this;
514
    }
515

    
516
    @Override
517
    public int getTypeOfItems() {
518
        return ((DynField_v2)this.field).getTypeOfItems();
519
    }
520

    
521
    @Override
522
    public DynField setClassOfItems(DynStruct dynStrct) {
523
        ((DynField_v2)this.field).setClassOfItems(dynStrct);
524
        return this;
525
    }
526

    
527
    @Override
528
    public DynField setClassOfItems(String theClassNameOfValue) {
529
        ((DynField_v2)this.field).setClassOfItems(theClassNameOfValue);
530
        return this;
531
    }
532

    
533
    @Override
534
    public String getClassNameOfItems() {
535
        return ((DynField_v2)this.field).getClassNameOfItems();
536
    }
537

    
538
    @Override
539
    public DynStruct getDynClassOfItems() {
540
        return ((DynField_v2)this.field).getDynClassOfItems();
541
    }
542

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

    
548
    @Override
549
    public DynField setRelationType(int relationType) {
550
        ((DynField_v2)this.field).setRelationType(relationType);
551
        return this;
552
    }
553

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

    
559
    @Override
560
    public DynField setAvailableValues(DynMethod computeAvailableValues) {
561
        ((DynField_v2)this.field).setAvailableValues(computeAvailableValues);
562
        return this;
563
    }
564

    
565
    @Override
566
    public DynMethod getAvailableValuesMethod() {
567
        return ((DynField_v2)this.field).getAvailableValuesMethod();
568
    }
569

    
570
    @Override
571
    public DynObjectValueItem[] getAvailableValues(DynObject self) {
572
        return ((DynField_v2)this.field).getAvailableValues(self);
573
    }
574

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

    
580
    @Override
581
    public DynField setCalculateMethod(DynMethod computeValue) {
582
        ((DynField_v2)this.field).setCalculateMethod(computeValue);
583
        return this;
584
    }
585

    
586
    @Override
587
    public DynMethod getCalculateMethod() {
588
        return ((DynField_v2)this.field).getCalculateMethod();
589
    }
590

    
591
    @Override
592
    public boolean isCalculated() {
593
        return ((DynField_v2)this.field).isCalculated();
594
    }
595

    
596
    @Override
597
    public Object getCalculatedValue(DynObject self) {
598
        return ((DynField_v2)this.field).getCalculatedValue(self);
599
    }
600

    
601
    @Override
602
    public void copyFrom(DynField other) {
603
        ((DynField_v2)this.field).copyFrom(other);
604
    }
605

    
606
    @Override
607
    public DynField setValidateElements(boolean validate) {
608
        ((DynField_v2)this.field).setValidateElements(validate);
609
        return this;
610
    }
611

    
612
    @Override
613
    public boolean getValidateElements() {
614
        return ((DynField_v2)this.field).getValidateElements();
615
    }
616

    
617
    @Override
618
    public String getLabel() {
619
        return ((DynField_v2)this.field).getLabel();
620
    }
621

    
622
    @Override
623
    public DynField setLabel(String label) {
624
        ((DynField_v2)this.field).setLabel(label);
625
        return this;
626
    }
627

    
628
    @Override
629
    public void recentUsed() {
630
    }
631

    
632
    @Override
633
    public boolean isForeingKey() {
634
        return false;
635
    }
636

    
637
    @Override
638
    public ForeingKey getForeingKey() {
639
        return null;
640
    }
641

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

    
647
    @Override
648
    public DynField setShortLabel(String shortLabel) {
649
        ((DynField_v2)field).setShortLabel(shortLabel);
650
        return this;
651
    }
652

    
653
    @Override
654
    public String getLocalizedShortLabel() {
655
        return ((DynField_v2)field).getLocalizedShortLabel();
656
    }
657

    
658
    @Override
659
    public String getLocalizedLabel() {
660
        return ((DynField_v2)field).getLocalizedLabel();
661
    }
662

    
663
    @Override
664
    public String getLabelOfValue(Object value) {
665
        return Objects.toString(value, "");
666
    }
667

    
668
    @Override
669
    public DataProfile getDataProfile() {
670
        return null;
671
    }
672

    
673
    @Override
674
    public boolean hasOnlyMetadataChanges(FeatureAttributeDescriptor other) {
675
        return false;
676
    }
677

    
678
    @Override
679
    public boolean hasLabel() {
680
        return StringUtils.isNotBlank(((DynField_v2) this.field).getLabel());
681
    }
682

    
683
    @Override
684
    public boolean hasShortLabel() {
685
        return StringUtils.isNotBlank(((DynField_v2) this.field).getShortLabel());
686
    }
687

    
688
    @Override
689
    public boolean hasDescription() {
690
        return StringUtils.isNotBlank(this.field.getDescription());
691
    }
692

    
693
    @Override
694
    public FeatureAttributeDescriptor getValue() {
695
        return this;
696
    }
697

    
698
  @Override
699
  public int getRoundMode() {
700
    return BigDecimal.ROUND_HALF_UP;
701
  }
702

    
703
  @Override
704
  public Locale getLocale() {
705
    return Locale.ENGLISH;
706
  }
707

    
708
  @Override
709
  public Object get(String name) {
710
    return null;
711
  }
712

    
713
    @Override
714
    public void saveToState(PersistentState state) throws PersistenceException {
715
        
716
    }
717

    
718
    @Override
719
    public void loadFromState(PersistentState state) throws PersistenceException {
720
        
721
    }
722

    
723
  @Override
724
  public int getDisplaySize() {
725
    return 0;
726
  }
727

    
728
    @Override
729
    public Expression getAvailableValuesExpression() {
730
        return null;
731
    }
732

    
733
    @Override
734
    public FeatureAttributeDescriptor setAvailableValuesExpression(String expression) {
735
        return this;
736
    }
737

    
738
    @Override
739
    public FeatureAttributeDescriptor setAvailableValuesExpression(Expression expression) {
740
        return this;
741
    }
742

    
743
    @Override
744
    public boolean isAvoidCachingAvailableValues() {
745
        return false;
746
    }
747

    
748
    @Override
749
    public JsonObject toJson() {
750
        return null;
751
    }
752

    
753
    @Override
754
    public JsonObjectBuilder toJsonBuilder() {
755
        return null;
756
    }
757

    
758
    @Override
759
    public boolean isInAvailableValues(Object valueToCheck) {
760
        if (hasConstantAvailableValues() && this.field.getAvailableValues().length > 0) {
761
            for (DynObjectValueItem availableValue : this.field.getAvailableValues()) {
762
                if (Objects.equals(valueToCheck, availableValue.getValue())) {
763
                    return true;
764
                }
765
            }
766
        }
767
        return false;
768
    }
769

    
770
    @Override
771
    public boolean hasAvailableValues() {
772
        return this.field.hasAvailableValues();
773
    }
774

    
775
}