Revision 44844

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.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/utils/DbaseFileHeader.java
174 174
    tempFieldDescriptors[myFieldDescriptions.length] = new DbaseFieldDescriptor();
175 175
    tempFieldDescriptors[myFieldDescriptions.length].setType(fieldType);
176 176
    tempFieldDescriptors[myFieldDescriptions.length].setSize(fieldSize);
177
    tempFieldDescriptors[myFieldDescriptions.length].setPrecision(fieldPrecision);
178 177
    tempFieldDescriptors[myFieldDescriptions.length].setScale(fieldScale);
179 178
    tempFieldDescriptors[myFieldDescriptions.length].setOffsetInRecord(tempLength);
180 179

  
......
432 431

  
433 432
      myFieldDescriptions[i].setOffsetInRecord(fieldOffset);
434 433
      
435
      myFieldDescriptions[i].calculateScaleAndPrecission();
436
      
437 434
      fieldOffset += tempLength;
438 435

  
439 436
      // read the reserved bytes.
......
707 704
            } else {
708 705
              attr = featureType.add(
709 706
                      dbfattr.getName(),
710
                      DataTypes.BYTE
707
                      DataTypes.DECIMAL
711 708
              );
712 709
              attr.setPrecision(dbfattr.getPrecision());
713 710
              attr.setScale(0);
......
753 750
            } else {
754 751
              attr = featureType.add(
755 752
                      dbfattr.getName(),
756
                      DataTypes.BYTE
753
                      DataTypes.DECIMAL
757 754
              );
758 755
              attr.setPrecision(dbfattr.getPrecision());
759 756
              attr.setScale(0);
......
805 802
                  DBFStoreProvider.NAME
806 803
          );
807 804
      }
805
      attr.setRequiredBytes(dbfattr.getSize());
808 806
    }
809 807
    return featureType;
810 808
  }
......
835 833
      int size = descriptor.getSize();
836 834
      int scale = descriptor.getScale();
837 835
      int precision = descriptor.getPrecision();
836
      int requiredBytes = descriptor.getRequiredBytes();
838 837
      switch (type) {
839 838
        case DataTypes.DECIMAL:
840
          header.addColumn(colName, 'N', 0, precision, scale);
839
          header.addColumn(colName, 'N', requiredBytes>0?requiredBytes:precision+3, precision, scale);
841 840
          break;
842 841
        case DataTypes.DOUBLE:
842
          header.addColumn(colName, 'F', 
843
                  requiredBytes>0?requiredBytes:(precision+2>=DataType.DOUBLE_MAX_PRECISION?precision:precision+3), 
844
                  precision, scale
845
          );
846
          break;
843 847
        case DataTypes.FLOAT:
844
          header.addColumn(colName, 'F', 0, precision, scale);
848
          header.addColumn(colName, 'F', 
849
                  requiredBytes>0?requiredBytes:(precision+2>=DataType.FLOAT_MAX_PRECISION?precision:precision+3), 
850
                  precision, scale
851
          );
845 852
          break;
846 853
        case DataTypes.INT:
847
          header.addColumn(colName, 'N', 0, precision, scale);
854
          header.addColumn(colName, 'N', 
855
                  requiredBytes>0?requiredBytes:(precision>=DataType.INT_MAX_PRECISION?precision:precision+1), 
856
                  precision, scale
857
          );
848 858
          break;
849 859
        case DataTypes.LONG:
850
          header.addColumn(colName, 'N', 0, precision, scale);
860
          header.addColumn(colName, 'N', 
861
                  requiredBytes>0?requiredBytes:(precision>=DataType.LONG_MAX_PRECISION?precision:precision+1), 
862
                  precision, scale
863
          );
851 864
          break;
852 865
        case DataTypes.DATE:
853 866
          header.addColumn(colName, 'D', FieldFormatter.DATE_SIZE, 0, 0);
......
856 869
          header.addColumn(colName, 'C', FieldFormatter.TIME_SIZE, 0, 0);
857 870
          break;
858 871
        case DataTypes.TIMESTAMP:
859
          header.addColumn(colName, 'C', TIMESTAMP_SIZE, 0, 0);
872
          header.addColumn(colName, 'C', FieldFormatter.TIMESTAMP_SIZE, 0, 0);
860 873
          break;
861 874
        case DataTypes.BOOLEAN:
862 875
          header.addColumn(colName, 'L', 1, 0, 0);
......
865 878
          header.addColumn(colName, 'C', Math.min(254, size), 0, 0);
866 879
          break;
867 880
        case DataTypes.BYTE:
868
          header.addColumn(colName, 'N', 0, precision, scale);
881
          header.addColumn(colName, 'N', 
882
                  requiredBytes>0?requiredBytes:(precision>=DataType.BYTE_MAX_PRECISION?precision:precision+1), 
883
                  precision, scale
884
          );
869 885
          break;
870 886
        default:
871 887
          // Si no sabemos lo que es intentaremos guardarlo como un string
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
243 243
    }
244 244
    try {
245 245
      BigDecimal x = new BigDecimal(value, context);
246
      x.setScale(scale, scale);
246
      x = x.setScale(scale, context.getRoundingMode());
247 247
      return x;
248 248
    } catch (Exception ex) {
249 249
      this.getLogger().warn("Can't parse value '" + value + "' as BigDecimal.", ex);
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/DbaseFieldDescriptor.java
33 33
 * Class for holding the information assicated with a record.
34 34
 */
35 35
public class DbaseFieldDescriptor {
36
  
36

  
37 37
  private static final Logger LOGGER = LoggerFactory.getLogger(DbaseFieldDescriptor.class);
38 38

  
39 39
  public static final char DBFTYPE_STRING = 'C';
......
50 50
  // Field Name
51 51
  private String name;
52 52
  private String name_trim;
53
  
53

  
54 54
  // Field Type (C N L D F or M)
55 55
  private char type;
56 56
  // Field Data Address offset from the start of the record.
......
66 66
  }
67 67

  
68 68
  public int getSize() {
69
    switch (this.getType()) {
70
      case DBFTYPE_FLOAT:
71
      case DBFTYPE_NUMBER:
72
        if( this.scale < 1 ) {
73
          return this.precision+1; // -XXX
74
        } else {
75
          return this.precision+3; // -0.XXX
76
        }
77
    }
78 69
    return this.size;
79 70
  }
80 71

  
......
83 74
  }
84 75

  
85 76
  public int getPrecision() {
86
    return this.precision;
77
    switch (this.getType()) {
78
      case DBFTYPE_FLOAT:
79
      case DBFTYPE_NUMBER:
80
        if (this.scale < 1) {
81
          return this.size; // -XXX (ignoramos el signo)
82
        } else {
83
          return this.size - 2; // -0.XXX (ignoramos el signo)
84
        }
85
    }
86
    return 0;
87 87
  }
88 88

  
89 89
  public char getType() {
......
107 107
  }
108 108

  
109 109
  public void setType(char type) throws AttributeFeatureTypeNotSuportedException {
110
    switch(type) {
110
    switch (type) {
111 111
      case DBFTYPE_NUMBER:
112 112
      case DBFTYPE_FLOAT:
113 113
      case DBFTYPE_STRING:
......
115 115
      case DBFTYPE_BOOLEAN:
116 116
        this.type = type;
117 117
        break;
118
      case 'c':        
118
      case 'c':
119 119
        this.type = DBFTYPE_STRING;
120 120
        break;
121
      case 'S':        
122
      case 's':        
123
        warn("Field type for " + name + " set to S which is flat out wrong people!, I am setting this to C, in the hopes you meant character.");        
121
      case 'S':
122
      case 's':
123
        warn("Field type for " + name + " set to S which is flat out wrong people!, I am setting this to C, in the hopes you meant character.");
124 124
        this.type = DBFTYPE_STRING;
125 125
        break;
126
      case 'd':        
126
      case 'd':
127 127
        this.type = DBFTYPE_DATE;
128 128
        break;
129
      case 'f':        
129
      case 'f':
130 130
        this.type = DBFTYPE_FLOAT;
131 131
        break;
132 132
      case 'n':
......
136 136
        this.type = DBFTYPE_BOOLEAN;
137 137
        break;
138 138
      default:
139
        throw new AttributeFeatureTypeNotSuportedException(name, type, "unknown", "DBF");        
139
        throw new AttributeFeatureTypeNotSuportedException(name, type, "unknown", "DBF");
140 140
    }
141 141
  }
142 142

  
......
145 145
  }
146 146

  
147 147
  public void setSize(int size) {
148
    switch(this.getType()) {
148
    switch (this.getType()) {
149 149
      case DBFTYPE_FLOAT:
150 150
      case DBFTYPE_NUMBER:
151 151
        this.size = size;
152 152
        break;
153
        
153

  
154 154
      case DBFTYPE_STRING:
155 155
        if (size > 254) {
156
            warn("Field Length for " + this.name + " set to " + size + " Which is longer than 254, not consistent with dbase III");
156
          warn("Field Length for " + this.name + " set to " + size + " Which is longer than 254, not consistent with dbase III");
157 157
        }
158 158
        this.size = size;
159 159
        break;
......
169 169
  }
170 170

  
171 171
  public void setScale(int scale) {
172
    switch(this.getType()) {
172
    switch (this.getType()) {
173 173
      case DBFTYPE_FLOAT:
174 174
      case DBFTYPE_NUMBER:
175 175
        this.scale = scale;
......
178 178
        this.scale = 0;
179 179
    }
180 180
  }
181
  
182
  public void calculateScaleAndPrecission() {
183
    switch(this.getType()) {
184
      case DBFTYPE_FLOAT:
185
      case DBFTYPE_NUMBER:
186
        if( this.size>0 ) {
187
          if( this.scale<1 ) {
188
            this.precision = this.size -1;
189
          } else {
190
            this.precision = this.size -3;
191
          }
192
          this.size = 0;
193
        }
194
        break;
195
      default:
196
        this.scale = 0;
197
    }
198
  }
199 181

  
200
  public void setPrecision(int precision) {
201
    switch(this.getType()) {
202
      case DBFTYPE_FLOAT:
203
      case DBFTYPE_NUMBER:
204
        if( precision>250 ) {
205
          this.precision = 250;
206
        } else {
207
          this.precision = precision;
208
        }
209
        break;
210
      default:
211
        this.precision = 0;
212
    }
213
  }
182
//  public void calculateScaleAndPrecission() {
183
//    switch (this.getType()) {
184
//      case DBFTYPE_FLOAT:
185
//      case DBFTYPE_NUMBER:
186
//        if (this.size > 0) {
187
//          if (this.scale < 1) {
188
//            this.precision = this.size - 1;
189
//          } else {
190
//            this.precision = this.size - 3;
191
//          }
192
//        }
193
//        break;
194
//      default:
195
//        this.scale = 0;
196
//    }
197
//  }
198
//
199
//  public void setPrecision(int precision) {
200
//    switch (this.getType()) {
201
//      case DBFTYPE_FLOAT:
202
//      case DBFTYPE_NUMBER:
203
//        if (precision > 250) {
204
//          this.precision = 250;
205
//        } else {
206
//          this.precision = precision;
207
//        }
208
//        break;
209
//      default:
210
//        this.precision = 0;
211
//    }
212
//  }
214 213

  
215 214
  private void warn(String msg) {
216
      LOGGER.warn(msg);
215
    LOGGER.warn(msg);
217 216
  }
218 217
}
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
1 1
package org.gvsig.fmap.dal.store.dbf;
2 2

  
3 3
import java.io.File;
4
import java.util.Date;
5 4
import java.util.List;
6 5
import junit.framework.TestCase;
7 6
import org.apache.commons.lang3.StringUtils;
......
9 8
import org.gvsig.fmap.dal.DataManager;
10 9
import org.gvsig.fmap.dal.DataServerExplorer;
11 10
import org.gvsig.fmap.dal.DataStore;
11
import org.gvsig.fmap.dal.DataTypeUtils;
12 12
import org.gvsig.fmap.dal.DataTypes;
13 13
import org.gvsig.fmap.dal.feature.EditableFeature;
14 14
import org.gvsig.fmap.dal.feature.EditableFeatureType;
......
75 75
        explorer.add(getProviderName(), params, true);
76 76
    }
77 77
    
78
    protected void checkTypes(FeatureType sourceFeatureType) throws Exception {
79
//        DataType STRING_TYPE = ToolsLocator.getDataTypesManager().get(DataTypes.STRING);
80
//        DataType INT_TYPE = ToolsLocator.getDataTypesManager().get(DataTypes.INT);
81
        
78
    protected void checkTypes(FeatureType sourceFeatureType, boolean useDalFile) throws Exception {        
82 79
        FeatureStore targetStore = openTargetStore1();
83 80
        FeatureType targetFeatureType = targetStore.getDefaultFeatureType();
84 81

  
......
89 86
            assertEquals(sourceAttr.getName(), sourceAttr.getName(), targetAttr.getName());
90 87
            switch(sourceAttr.getType()) {
91 88
                case DataTypes.TIME:
92
                    if( targetAttr.getType()==DataTypes.STRING ) {
93
                        // Cuando no hay fichero DAL puede leer un TIME como 
94
                        // un STRING de tama?o TIME_SIZE.
95
                        assertEquals(
96
                                String.format("Field %s size mismatch", sourceAttr.getName()), 
97
                                FieldFormatter.TIME_SIZE,
98
                                targetAttr.getSize()
99
                        );
100
                    } else if( targetAttr.getType()==DataTypes.TIME ) {
101
                        // Si hay fichero DAL el tipo pude ser correcto (TIME).
102
                        assertEquals(
103
                                String.format("Field %s size mismatch", sourceAttr.getName()), 
104
                                sourceAttr.getSize(),
105
                                targetAttr.getSize()
106
                        );
107
                    }
108 89
                    assertEquals(
90
                            String.format("Field %s type mismatch", sourceAttr.getName()), 
91
                            useDalFile?sourceAttr.getDataTypeName():DataTypes.STRING_NAME,  
92
                            targetAttr.getDataTypeName()
93
                    );
94
                    assertEquals(
95
                            String.format("Field %s size mismatch", sourceAttr.getName()), 
96
                            targetAttr.getSize(),
97
                            useDalFile? targetAttr.getSize():FieldFormatter.TIME_SIZE
98
                    );
99
                    assertEquals(
109 100
                            String.format("Field %s precision mismatch", sourceAttr.getName()), 
110 101
                            sourceAttr.getPrecision(),
111 102
                            targetAttr.getPrecision()
......
117 108
                    );
118 109
                    break;
119 110
                case DataTypes.TIMESTAMP:
120
                    if( targetAttr.getType()==DataTypes.STRING ) {
121
                        // Cuando no hay fichero DAL puede leer un TIMESTAMP como 
122
                        // un STRING de tama?o TIMESTAMP_SIZE.
123
                        assertEquals(
124
                                String.format("Field %s size mismatch", sourceAttr.getName()), 
125
                                FieldFormatter.TIMESTAMP_SIZE,
126
                                targetAttr.getSize()
127
                        );
128
                    } else if( targetAttr.getType()==DataTypes.TIMESTAMP ) {
129
                        // Si hay fichero DAL el tipo pude ser correcto (TIMESTAMP).
130
                        assertEquals(
131
                                String.format("Field %s size mismatch", sourceAttr.getName()), 
132
                                sourceAttr.getSize(),
133
                                targetAttr.getSize()
134
                        );
135
                    }
136 111
                    assertEquals(
112
                            String.format("Field %s type mismatch", sourceAttr.getName()), 
113
                            useDalFile?sourceAttr.getDataTypeName():DataTypes.STRING_NAME,  
114
                            targetAttr.getDataTypeName()
115
                    );
116
                    assertEquals(
117
                            String.format("Field %s size mismatch", sourceAttr.getName()), 
118
                            targetAttr.getSize(),
119
                            useDalFile? targetAttr.getSize():FieldFormatter.TIMESTAMP_SIZE
120
                    );
121
                    assertEquals(
137 122
                            String.format("Field %s precision mismatch", sourceAttr.getName()), 
138 123
                            sourceAttr.getPrecision(),
139 124
                            targetAttr.getPrecision()
......
144 129
                            targetAttr.getScale()
145 130
                    );
146 131
                    break;
132
                case DataTypes.DECIMAL:
133
                    assertEquals(
134
                            String.format("Field %s type mismatch", sourceAttr.getName()), 
135
                            sourceAttr.getDataTypeName(), 
136
                            targetAttr.getDataTypeName()
137
                    );
138
                    assertEquals(
139
                            String.format("Field %s size mismatch", sourceAttr.getName()), 
140
                            sourceAttr.getSize(),
141
                            targetAttr.getSize()
142
                    );
143
                    assertEquals(
144
                            String.format("Field %s precision mismatch", sourceAttr.getName()), 
145
                            useDalFile?sourceAttr.getPrecision():sourceAttr.getPrecision()+1,
146
                            targetAttr.getPrecision() 
147
                    );
148
                    assertEquals(
149
                            String.format("Field %s scale mismatch", sourceAttr.getName()), 
150
                            sourceAttr.getScale(),
151
                            targetAttr.getScale()
152
                    );
153
                    break;
154

  
147 155
                case DataTypes.BYTE:
156
                    assertEquals(
157
                            String.format("Field %s type mismatch", sourceAttr.getName()), 
158
                            useDalFile?sourceAttr.getDataTypeName():DataTypes.DECIMAL_NAME,  
159
                            targetAttr.getDataTypeName()
160
                    );
161
                    assertEquals(
162
                            String.format("Field %s size mismatch", sourceAttr.getName()), 
163
                            sourceAttr.getSize(),
164
                            targetAttr.getSize()
165
                    );
166
                    assertEquals(
167
                            String.format("Field %s precision mismatch", sourceAttr.getName()), 
168
                            sourceAttr.getPrecision(),  
169
                            targetAttr.getPrecision()
170
                    );
171
                    assertEquals(
172
                            String.format("Field %s scale mismatch", sourceAttr.getName()), 
173
                            sourceAttr.getScale(),
174
                            targetAttr.getScale()
175
                    );
176
                    break;
177
                  
148 178
                case DataTypes.INT:
149 179
                case DataTypes.LONG:
150 180
                case DataTypes.BOOLEAN:
151 181
                case DataTypes.DATE:
152 182
                case DataTypes.STRING:
153
                case DataTypes.DECIMAL:
154 183
                case DataTypes.DOUBLE:
155 184
                case DataTypes.FLOAT:
156 185
                    assertEquals(
......
196 225
    protected void checkData(FeatureStore sourceStore) throws Exception {
197 226
        FeatureStore targetStore = openTargetStore1();
198 227

  
228
        FeatureType sourceFeatureType = sourceStore.getDefaultFeatureType();
229
        FeatureType targetFeatureType = targetStore.getDefaultFeatureType();
230
        
199 231
        List<Feature> sourceFeatures = sourceStore.getFeatures();
200 232
        List<Feature> targetFeatures = targetStore.getFeatures();
233
        
201 234
        assertEquals("Count features", sourceFeatures.size(), targetFeatures.size());
202 235
        for (int i = 0; i < targetFeatures.size(); i++) {
203 236
            Feature sourceFeature = sourceFeatures.get(i);
204 237
            Feature targetFeature = targetFeatures.get(i);
205
            for (FeatureAttributeDescriptor sourceAttr : sourceStore.getDefaultFeatureType()) {
238
            for (FeatureAttributeDescriptor sourceAttr : sourceFeatureType) {
239
                FeatureAttributeDescriptor targetAttr = targetFeatureType.getAttributeDescriptor(sourceAttr.getName());
206 240
                switch(sourceAttr.getType()) {
207 241
                    case DataTypes.TIMESTAMP:
208 242
                        assertEquals(
......
225 259
                                targetFeature.get(sourceAttr.getName())
226 260
                        );
227 261
                        break;
228
                    default:
262
                    case DataTypes.BYTE:
229 263
                        assertEquals(
230 264
                                String.format("Feature %03d attribute %s", i, sourceAttr.getName()),
231 265
                                sourceFeature.get(sourceAttr.getName()),
266
                                DataTypeUtils.coerce(DataTypes.BYTE, targetFeature.get(sourceAttr.getName()),null)
267
                        );
268
                        break;
269
                    default:
270
                        assertEquals(
271
                                String.format("Feature %03d attribute %s (%s/%s)", i, sourceAttr.getName(), sourceAttr.getDataType().getName(), targetAttr.getDataType().getName() ),
272
                                sourceFeature.get(sourceAttr.getName()),
232 273
                                targetFeature.get(sourceAttr.getName())
233 274
                        );
234 275
                }
......
242 283
        
243 284
        createFrom(sourceStore);        
244 285
        
245
        checkTypes(sourceStore.getDefaultFeatureType());
286
        checkTypes(sourceStore.getDefaultFeatureType(),true);
246 287
        copyFrom(sourceStore, FeatureStore.MODE_APPEND);
247 288
        checkData(sourceStore);
248 289
        
......
258 299
        createFrom(sourceStore);        
259 300
        TestUtils.removeDALFile(this.getTargetFilename());
260 301
        
261
        checkTypes(sourceStore.getDefaultFeatureType());
302
        checkTypes(sourceStore.getDefaultFeatureType(),false);
262 303
        copyFrom(sourceStore, FeatureStore.MODE_APPEND);
263 304
        TestUtils.removeDALFile(this.getTargetFilename());
264 305
        checkData(sourceStore);
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/resources/org/gvsig/fmap/dal/store/dbf/testCreateSource1.csv
1
ID/Integer;Byte/Byte;Bool1/Boolean;Long/Long;Timestamp/TimeStamp;Date/Date;Time/Time;Bool2/Boolean;String/String/set/size=30;Bool3/Boolean;Double/Double;Bool4/Boolean;Float/Float;Bool5/Boolean;Decimal/Decimal/set/precision=6/set/scale=3
2
 ;  ; ;    ;              ;        ;      ; ;      ; ;           ; ;      ;T;
3
1;10;T;1000;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;-456.123
4
2;20;T;2000;20191129121314;20191129;131314;T;Yo yo2;F;12100.54321;T;100.21;T;456.123
5
3;30;T;3000;20191029121314;20191029;141314;T;Yo yo3;F;12101.54321;T;101.21;T;456.123
6
4;40;T;4000;20190929121314;20190929;151314;T;Yo yo4;F;12102.54321;T;102.21;T;456.123
7
5;50;T;5000;20190829121314;20190829;161314;T;Yo yo5;F;12103.54321;T;103.21;T;456.123
8
6;60;T;6000;20190729121314;20190729;171314;T;Yo yo6;F;12104.54321;T;104.21;T;456.123
9
7;70;T;7000;20190629121314;20190629;181314;T;Yo yo7;F;12105.54321;T;105.21;T;456.123
10
8;80;T;8000;20190529121314;20190529;191314;T;Yo yo8;F;12106.54321;T;106.21;T;456.123
11
9;90;T;9000;20190429121314;20190429;201314;T;Yo yo9;F;12107.54321;T;107.21;T;456.123
12
10; ;T;1001;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;456.123
13
11;22; ;2002;20191129121314;20191129;131314;T;Yo yo2;F;12100.54321;T;100.21;T;456.123
14
12;33;T; ;20190929121314;20191029;141314;T;Yo yo3;F;12101.54321;T;101.21;T;456.123
15
12;41;T;4001; ;20190929;151314;T;Yo yo4;F;12102.54321;T;102.21;T;456.123
16
14;52;T;5002;20190829121314; ;161314;T;Yo yo5;F;12103.54321;T;103.21;T;456.123
17
15;63;T;6003;20190729121314;20190729; ;T;Yo yo6;F;12104.54321;T;104.21;T;456.123
18
16;74;T;7004;20190629121314;20190629;181314;T; ;F;12105.54321;T;105.21;T;456.123
19
17;85;T;8005;20190529121314;20190529;191314;T;Yo yo8;F; ;T;106.21;T;456.123
20
18;96;T;9006;20190429121314;20190429;201314;T;Yo yo9;F;12107.54321;T; ;T;456.123
21
19;97;T;1001;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;456.123
1
ID/Integer;Byte/Byte;Bool1/Boolean;Long/Long;Timestamp/TimeStamp;Date/Date;Time/Time;Bool2/Boolean;String/String/set/size=30;Bool3/Boolean;Double/Double;Bool4/Boolean;Float/Float;Bool5/Boolean;Decimal6_3/Decimal/set/precision=6/set/scale=3;Decimal6_0/Decimal/set/precision=6/set/scale=0
2
 ;  ; ;    ;              ;        ;      ; ;      ; ;           ; ;      ;T;;
3
1;10;T;1000;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;-456.123;-456
4
2;20;T;2000;20191129121314;20191129;131314;T;Yo yo2;F;12100.54321;T;100.21;T;456.123;456
5
3;30;T;3000;20191029121314;20191029;141314;T;Yo yo3;F;12101.54321;T;101.21;T;456.123;+456
6
4;40;T;4000;20190929121314;20190929;151314;T;Yo yo4;F;12102.54321;T;102.21;T;456.123;-456
7
5;50;T;5000;20190829121314;20190829;161314;T;Yo yo5;F;12103.54321;T;103.21;T;456.123;-456
8
6;60;T;6000;20190729121314;20190729;171314;T;Yo yo6;F;12104.54321;T;104.21;T;456.123;-456
9
7;70;T;7000;20190629121314;20190629;181314;T;Yo yo7;F;12105.54321;T;105.21;T;456.123;-456
10
8;80;T;8000;20190529121314;20190529;191314;T;Yo yo8;F;12106.54321;T;106.21;T;456.123;-456
11
9;90;T;9000;20190429121314;20190429;201314;T;Yo yo9;F;12107.54321;T;107.21;T;456.123;-456
12
10; ;T;1001;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;456.123;-456
13
11;22; ;2002;20191129121314;20191129;131314;T;Yo yo2;F;12100.54321;T;100.21;T;456.123;-456
14
12;33;T; ;20190929121314;20191029;141314;T;Yo yo3;F;12101.54321;T;101.21;T;456.123;-456
15
12;41;T;4001; ;20190929;151314;T;Yo yo4;F;12102.54321;T;102.21;T;456.123;-456
16
14;52;T;5002;20190829121314; ;161314;T;Yo yo5;F;12103.54321;T;103.21;T;456.123;-456
17
15;63;T;6003;20190729121314;20190729; ;T;Yo yo6;F;12104.54321;T;104.21;T;456.123;-456
18
16;74;T;7004;20190629121314;20190629;181314;T; ;F;12105.54321;T;105.21;T;456.123;-456
19
17;85;T;8005;20190529121314;20190529;191314;T;Yo yo8;F; ;T;106.21;T;456.123;-456
20
18;96;T;9006;20190429121314;20190429;201314;T;Yo yo9;F;12107.54321;T; ;T;456.123;-456
21
19;97;T;1001;20191229121314;20191229;121314;T;Yo yo1;F;12345.54321;T;123.21;T;456.123;-456
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/DefaultEditableFeatureAttributeDescriptor.java
53 53
import org.gvsig.timesupport.Interval;
54 54
import org.gvsig.tools.ToolsLocator;
55 55
import org.gvsig.tools.dataTypes.DataType;
56
import static org.gvsig.tools.dataTypes.DataTypeUtils.coerce;
57 56
import org.gvsig.tools.dynobject.DynField;
58 57
import org.gvsig.tools.evaluator.Evaluator;
59 58

  
......
612 611
        return DynField.RELATION_TYPE_NONE;
613 612
      }
614 613
    }
614

  
615
  @Override
616
  public EditableFeatureAttributeDescriptor setRequiredBytes(int size) {
617
    this.requiredBytes = size;
618
    return this;
619
  }
615 620
}
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/DefaultFeatureAttributeDescriptor.java
35 35
import java.util.Map;
36 36
import java.util.Map.Entry;
37 37
import java.util.Objects;
38
import java.util.logging.Level;
39 38
import org.apache.commons.lang3.ArrayUtils;
40 39
import org.apache.commons.lang3.StringUtils;
41 40
import org.cresques.cts.IProjection;
......
147 146

  
148 147
  private int relationType = RELATION_TYPE_NONE;
149 148
  protected Locale locale;
149
  protected int requiredBytes;
150 150

  
151 151
  public DefaultFeatureAttributeDescriptor() {
152 152
    // Usada en la persistencia
......
183 183
    this.hidden = false;
184 184
    this.relationType = RELATION_TYPE_NONE;
185 185
    this.locale = null;
186
    this.requiredBytes = 0;
186 187
  }
187 188

  
188 189
  protected DefaultFeatureAttributeDescriptor(
......
271 272
    this.calculateMethod = other.calculateMethod;
272 273
    this.relationType = other.relationType;
273 274
    this.locale = other.locale;
275
    this.requiredBytes = other.requiredBytes;
274 276
  }
275 277

  
276 278
  public void setFeatureType(FeatureType type) {
......
711 713
    order = state.getInt("order");
712 714
    hidden = state.getBoolean("hidden");
713 715
    groupName = state.getString("groupName");
714
    relationType = state.getInt("relationType");
716
    relationType = state.getInt("relationType", RELATION_TYPE_NONE);
715 717

  
716 718
    foreingKey = (DefaultForeingKey) state.get("foreingKey");
717 719
    if (foreingKey != null) {
......
721 723
    if (tags == null) {
722 724
      this.tags = new DefaultTags();
723 725
    }
726
    requiredBytes = state.getInt("requiredBytes",0);
724 727
  }
725 728

  
726 729
  @Override
......
810 813
    state.set("foreingKey", this.foreingKey);
811 814
    state.set("tags", this.tags);
812 815

  
816
    state.set("requiredBytes", requiredBytes);
813 817
  }
814 818

  
815 819
  private static final String FEATATTRDESC_PERSISTENCE_DEFINITION_NAME = "FeatureAttributeDescriptor";
......
875 879
      definition.addDynFieldObject("tags")
876 880
              .setClassOfValue(Tags.class);
877 881

  
882
      definition.addDynFieldInt("requiredBytes").setMandatory(false);
883

  
878 884
    }
879 885
  }
880 886

  
......
1437 1443
    return this;
1438 1444
  }
1439 1445

  
1446
  @Override
1447
  public int getRequiredBytes() {
1448
    return this.requiredBytes;
1449
  }
1450

  
1440 1451
  private class ConstantValueEvaluator extends AbstractEvaluator {
1441 1452

  
1442 1453
    @Override
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/featuretype/DefaultFeatureAttributePanel.java
2 2

  
3 3
import java.awt.Component;
4 4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6 5
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypeAttributePanel;
7 6
import java.awt.event.ItemEvent;
8 7
import java.net.URL;
......
22 21
import javax.swing.JOptionPane;
23 22
import javax.swing.JScrollPane;
24 23
import javax.swing.JTextField;
25
import javax.swing.ListCellRenderer;
26 24
import javax.swing.ListModel;
27 25
import javax.swing.SwingUtilities;
28 26
import javax.swing.event.ChangeEvent;
......
412 410
    private DatePickerController pickerIntervalEnd;
413 411
    private DatePickerController pickerIntervalStart;
414 412
    private CalculatorController<Integer> pickerSize;
413
    private CalculatorController<Integer> pickerRequiredBytes;
415 414
    private CalculatorController<Integer> pickerPrecision;
416 415
    private CalculatorController<Integer> pickerScale;
417 416
    private CalculatorController<Object> pickerDefaultValue;
......
524 523
        swingManager.translate(this.lblPrecision);
525 524
        swingManager.translate(this.lblScale);
526 525
        swingManager.translate(this.lblSize);
526
        swingManager.translate(this.lblRequiredBytes);
527 527
        swingManager.translate(this.chkVirtualField);
528 528
        swingManager.translate(this.tabAditionalFields);
529 529
        swingManager.translate(this.tabLayout);
......
557 557
        swingManager.addClearButton(this.txtIntervalStart);
558 558
        swingManager.addClearButton(this.txtScale);
559 559
        swingManager.addClearButton(this.txtSize);
560
        swingManager.addClearButton(this.txtRequiredBytes);
560 561
        swingManager.addClearButton(this.txtLabel);
561 562
        swingManager.addClearButton(this.txtDescription);
562 563
        swingManager.addClearButton(this.cboGroup);
......
571 572
        swingManager.setDefaultPopupMenu(this.txtIntervalStart);
572 573
        swingManager.setDefaultPopupMenu(this.txtScale);
573 574
        swingManager.setDefaultPopupMenu(this.txtSize);
575
        swingManager.setDefaultPopupMenu(this.txtRequiredBytes);
574 576
        swingManager.setDefaultPopupMenu(this.cboDateFormat);
575 577
        swingManager.setDefaultPopupMenu(this.cboFieldType);
576 578
        swingManager.setDefaultPopupMenu(this.cboGeometrySubtype);
......
608 610
        this.pickerSize = evaluatorManager.createCalculatorController(
609 611
                this.txtSize, DataTypes.INT
610 612
        );
613
        this.pickerRequiredBytes = evaluatorManager.createCalculatorController(
614
                this.txtRequiredBytes, DataTypes.INT
615
        );
611 616
        this.pickerPrecision = evaluatorManager.createCalculatorController(
612 617
                this.txtPrecision, DataTypes.INT
613 618
        );
......
779 784
            descriptor.setIsPrimaryKey(this.chkIsPrimaryKey.isSelected());
780 785
            descriptor.setIsAutomatic(this.chkIsAutomatic.isSelected());
781 786
            descriptor.setSize(this.pickerSize.get(0));
787
            descriptor.setRequiredBytes(this.pickerRequiredBytes.get(0));
782 788
            descriptor.setPrecision(this.pickerPrecision.get(0));
783 789
            descriptor.setScale(this.pickerScale.get(0));
784 790
            descriptor.setDefaultValue(this.pickerDefaultValue.get());
......
918 924
        this.pickerIntervalStart.set(null);
919 925
        this.pickerScale.set(null);
920 926
        this.pickerSize.set(null);
927
        this.pickerRequiredBytes.set(null);
921 928

  
922 929
        this.chkAllowNulls.setSelected(false);
923 930
        this.chkIsAutomatic.setSelected(false);
......
1002 1009
        } else {
1003 1010
          this.pickerSize.set(null);
1004 1011
        }
1012
        this.pickerRequiredBytes.set(descriptor.getRequiredBytes());
1005 1013
        if( dataType.supportPrecision() ) {
1006 1014
          this.pickerPrecision.set(descriptor.getPrecision());
1007 1015
        } else {
......
1104 1112
            this.pickerSize.setEditable(false);
1105 1113
            this.pickerSize.set(null);
1106 1114
        }        
1115
        this.pickerRequiredBytes.setEditable(this.mode == MODE_EDIT_ALL);
1107 1116
        if( dataType.supportPrecision() ) {
1108 1117
          if( dataType.isPredefinedPrecision() ) {
1109 1118
            this.pickerPrecision.setEditable(false);
......
1204 1213
                this.pickerIntervalEnd.setEditable(true);
1205 1214
                this.pickerIntervalStart.setEditable(true);
1206 1215
                this.pickerSize.setEditable(dataType.supportSize());
1216
                this.pickerRequiredBytes.setEditable(true);
1207 1217
                if( dataType.isPredefinedPrecision() ) {
1208 1218
                  this.pickerPrecision.setEditable(false);
1209 1219
                  this.pickerPrecision.set(dataType.getMaxPrecision());
......
1269 1279

  
1270 1280
                this.cboDataProfile.setEnabled(true);
1271 1281

  
1282
                this.pickerRequiredBytes.setEditable(false);
1272 1283
                this.chkAllowNulls.setEnabled(false);
1273 1284
                this.chkIsAutomatic.setEnabled(false);
1274 1285
                if( this.isVirtualField() ) {
......
1300 1311
                this.pickerPrecision.setEditable(false);
1301 1312
                this.pickerScale.setEditable(false);
1302 1313
                this.pickerSize.setEditable(false);
1314
                this.pickerRequiredBytes.setEditable(false);
1303 1315
                this.cboDataProfile.setEnabled(false);
1304 1316

  
1305 1317
                this.chkAllowNulls.setEnabled(false);
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/featuretype/DefaultFeatureAttributePanelView.xml
25 25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26 26
   </super>
27 27
   <at name="id">/home/jjdelcerro/datos/devel/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/featuretype/DefaultFeatureAttributePanelView.xml</at>
28
   <at name="path">src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureAttributePanelView.xml</at>
29 28
   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:NONE,CENTER:2DLU:NONE</at>
30 29
   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
31 30
   <at name="components">
......
135 134
             </object>
136 135
            </at>
137 136
            <at name="name">txtFieldName</at>
138
            <at name="width">757</at>
137
            <at name="width">831</at>
139 138
            <at name="height">20</at>
140 139
           </object>
141 140
          </at>
......
283 282
                      </at>
284 283
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
285 284
                     </super>
286
                     <at name="id">embedded.1713323622</at>
287
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
285
                     <at name="id">embedded.275901094</at>
286
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
288 287
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
289 288
                     <at name="components">
290 289
                      <object classname="java.util.LinkedList">
......
295 294
                           <at name="cellconstraints">
296 295
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
297 296
                             <at name="column">2</at>
298
                             <at name="row">2</at>
297
                             <at name="row">4</at>
299 298
                             <at name="colspan">1</at>
300 299
                             <at name="rowspan">1</at>
301 300
                             <at name="halign">default</at>
......
355 354
                           <at name="cellconstraints">
356 355
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
357 356
                             <at name="column">4</at>
358
                             <at name="row">2</at>
357
                             <at name="row">4</at>
359 358
                             <at name="colspan">1</at>
360 359
                             <at name="rowspan">1</at>
361 360
                             <at name="halign">default</at>
......
393 392
                               </object>
394 393
                              </at>
395 394
                              <at name="name">txtSize</at>
396
                              <at name="width">691</at>
395
                              <at name="width">765</at>
397 396
                              <at name="height">20</at>
398 397
                             </object>
399 398
                            </at>
......
409 408
                           <at name="cellconstraints">
410 409
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
411 410
                             <at name="column">2</at>
412
                             <at name="row">4</at>
411
                             <at name="row">6</at>
413 412
                             <at name="colspan">1</at>
414 413
                             <at name="rowspan">1</at>
415 414
                             <at name="halign">default</at>
......
469 468
                           <at name="cellconstraints">
470 469
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
471 470
                             <at name="column">2</at>
472
                             <at name="row">8</at>
471
                             <at name="row">10</at>
473 472
                             <at name="colspan">1</at>
474 473
                             <at name="rowspan">1</at>
475 474
                             <at name="halign">default</at>
......
529 528
                           <at name="cellconstraints">
530 529
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
531 530
                             <at name="column">4</at>
532
                             <at name="row">4</at>
531
                             <at name="row">6</at>
533 532
                             <at name="colspan">1</at>
534 533
                             <at name="rowspan">1</at>
535 534
                             <at name="halign">default</at>
......
567 566
                               </object>
568 567
                              </at>
569 568
                              <at name="name">txtPrecision</at>
570
                              <at name="width">691</at>
569
                              <at name="width">765</at>
571 570
                              <at name="height">20</at>
572 571
                             </object>
573 572
                            </at>
......
583 582
                           <at name="cellconstraints">
584 583
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
585 584
                             <at name="column">4</at>
586
                             <at name="row">8</at>
585
                             <at name="row">10</at>
587 586
                             <at name="colspan">1</at>
588 587
                             <at name="rowspan">1</at>
589 588
                             <at name="halign">default</at>
......
621 620
                               </object>
622 621
                              </at>
623 622
                              <at name="name">txtDefaultValue</at>
624
                              <at name="width">691</at>
623
                              <at name="width">765</at>
625 624
                              <at name="height">20</at>
626 625
                             </object>
627 626
                            </at>
......
637 636
                           <at name="cellconstraints">
638 637
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
639 638
                             <at name="column">2</at>
640
                             <at name="row">10</at>
639
                             <at name="row">12</at>
641 640
                             <at name="colspan">1</at>
642 641
                             <at name="rowspan">1</at>
643 642
                             <at name="halign">default</at>
......
697 696
                           <at name="cellconstraints">
698 697
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
699 698
                             <at name="column">4</at>
700
                             <at name="row">10</at>
699
                             <at name="row">12</at>
701 700
                             <at name="colspan">1</at>
702 701
                             <at name="rowspan">1</at>
703 702
                             <at name="halign">default</at>
......
735 734
                               </object>
736 735
                              </at>
737 736
                              <at name="name">cboDataProfile</at>
738
                              <at name="width">691</at>
737
                              <at name="width">765</at>
739 738
                              <at name="items">
740 739
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
741 740
                                <at name="name">items</at>
......
756 755
                           <at name="cellconstraints">
757 756
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
758 757
                             <at name="column">2</at>
759
                             <at name="row">12</at>
758
                             <at name="row">14</at>
760 759
                             <at name="colspan">1</at>
761 760
                             <at name="rowspan">1</at>
762 761
                             <at name="halign">default</at>
......
812 811
                           <at name="cellconstraints">
813 812
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
814 813
                             <at name="column">4</at>
815
                             <at name="row">12</at>
814
                             <at name="row">14</at>
816 815
                             <at name="colspan">1</at>
817 816
                             <at name="rowspan">1</at>
818 817
                             <at name="halign">default</at>
......
822 821
                           </at>
823 822
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
824 823
                          </super>
825
                          <at name="id">embedded.833631781</at>
824
                          <at name="id">embedded.984324496</at>
826 825
                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
827 826
                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
828 827
                          <at name="components">
......
932 931
                                    </object>
933 932
                                   </at>
934 933
                                   <at name="name">txtVirtualField</at>
935
                                   <at name="width">659</at>
934
                                   <at name="width">733</at>
936 935
                                   <at name="height">20</at>
937 936
                                  </object>
938 937
                                 </at>
......
1030 1029
                           <at name="cellconstraints">
1031 1030
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1032 1031
                             <at name="column">2</at>
1033
                             <at name="row">6</at>
1032
                             <at name="row">8</at>
1034 1033
                             <at name="colspan">1</at>
1035 1034
                             <at name="rowspan">1</at>
1036 1035
                             <at name="halign">default</at>
......
1090 1089
                           <at name="cellconstraints">
1091 1090
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1092 1091
                             <at name="column">4</at>
1093
                             <at name="row">6</at>
1092
                             <at name="row">8</at>
1094 1093
                             <at name="colspan">1</at>
1095 1094
                             <at name="rowspan">1</at>
1096 1095
                             <at name="halign">default</at>
......
1128 1127
                               </object>
1129 1128
                              </at>
1130 1129
                              <at name="name">txtScale</at>
1131
                              <at name="width">691</at>
1130
                              <at name="width">765</at>
1132 1131
                              <at name="height">20</at>
1133 1132
                             </object>
1134 1133
                            </at>
......
1144 1143
                           <at name="cellconstraints">
1145 1144
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1146 1145
                             <at name="column">2</at>
1147
                             <at name="row">14</at>
1146
                             <at name="row">16</at>
1148 1147
                             <at name="colspan">1</at>
1149 1148
                             <at name="rowspan">1</at>
1150 1149
                             <at name="halign">default</at>
......
1204 1203
                           <at name="cellconstraints">
1205 1204
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1206 1205
                             <at name="column">4</at>
1207
                             <at name="row">14</at>
1206
                             <at name="row">16</at>
1208 1207
                             <at name="colspan">1</at>
1209 1208
                             <at name="rowspan">1</at>
1210 1209
                             <at name="halign">default</at>
......
1242 1241
                               </object>
1243 1242
                              </at>
1244 1243
                              <at name="name">cboRelationType</at>
1245
                              <at name="width">691</at>
1244
                              <at name="width">765</at>
1246 1245
                              <at name="items">
1247 1246
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1248 1247
                                <at name="name">items</at>
......
1256 1255
                         </object>
1257 1256
                        </at>
1258 1257
                       </item>
1258
                       <item >
1259
                        <at name="value">
1260
                         <object classname="com.jeta.forms.store.memento.BeanMemento">
1261
                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
1262
                           <at name="cellconstraints">
1263
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1264
                             <at name="column">2</at>
1265
                             <at name="row">2</at>
1266
                             <at name="colspan">1</at>
1267
                             <at name="rowspan">1</at>
1268
                             <at name="halign">default</at>
1269
                             <at name="valign">default</at>
1270
                             <at name="insets" object="insets">0,0,0,0</at>
1271
                            </object>
1272
                           </at>
1273
                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1274
                          </super>
1275
                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1276
                          <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
1277
                          <at name="beanproperties">
1278
                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1279
                            <at name="classname">com.jeta.forms.components.label.JETALabel</at>
1280
                            <at name="properties">
1281
                             <object classname="com.jeta.forms.store.support.PropertyMap">
1282
                              <at name="border">
1283
                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1284
                                <super classname="com.jeta.forms.store.properties.BorderProperty">
1285
                                 <at name="name">border</at>
1286
                                </super>
1287
                                <at name="borders">
1288
                                 <object classname="java.util.LinkedList">
1289
                                  <item >
1290
                                   <at name="value">
1291
                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1292
                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
1293
                                      <at name="name">border</at>
1294
                                     </super>
1295
                                    </object>
1296
                                   </at>
1297
                                  </item>
1298
                                 </object>
1299
                                </at>
1300
                               </object>
1301
                              </at>
1302
                              <at name="name">lblRequiredBytes</at>
1303
                              <at name="width">91</at>
1304
                              <at name="text">_required_bytes</at>
1305
                              <at name="fill">
1306
                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
1307
                                <at name="name">fill</at>
1308
                               </object>
1309
                              </at>
1310
                              <at name="height">14</at>
1311
                             </object>
1312
                            </at>
1313
                           </object>
1314
                          </at>
1315
                         </object>
1316
                        </at>
1317
                       </item>
1318
                       <item >
1319
                        <at name="value">
1320
                         <object classname="com.jeta.forms.store.memento.BeanMemento">
1321
                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
1322
                           <at name="cellconstraints">
1323
                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1324
                             <at name="column">4</at>
1325
                             <at name="row">2</at>
1326
                             <at name="colspan">1</at>
1327
                             <at name="rowspan">1</at>
1328
                             <at name="halign">default</at>
1329
                             <at name="valign">default</at>
1330
                             <at name="insets" object="insets">0,0,0,0</at>
1331
                            </object>
1332
                           </at>
1333
                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1334
                          </super>
1335
                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1336
                          <at name="beanclass">javax.swing.JTextField</at>
1337
                          <at name="beanproperties">
1338
                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1339
                            <at name="classname">javax.swing.JTextField</at>
1340
                            <at name="properties">
1341
                             <object classname="com.jeta.forms.store.support.PropertyMap">
1342
                              <at name="border">
1343
                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1344
                                <super classname="com.jeta.forms.store.properties.BorderProperty">
1345
                                 <at name="name">border</at>
1346
                                </super>
1347
                                <at name="borders">
1348
                                 <object classname="java.util.LinkedList">
1349
                                  <item >
1350
                                   <at name="value">
1351
                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1352
                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
1353
                                      <at name="name">border</at>
1354
                                     </super>
1355
                                    </object>
1356
                                   </at>
1357
                                  </item>
1358
                                 </object>
1359
                                </at>
1360
                               </object>
1361
                              </at>
1362
                              <at name="name">txtRequiredBytes</at>
1363
                              <at name="width">765</at>
1364
                              <at name="height">20</at>
1365
                             </object>
1366
                            </at>
1367
                           </object>
1368
                          </at>
1369
                         </object>
1370
                        </at>
1371
                       </item>
1259 1372
                      </object>
1260 1373
                     </at>
1261 1374
                     <at name="properties">
......
1313 1426
                     <at name="cellpainters">
1314 1427
                      <object classname="com.jeta.forms.store.support.Matrix">
1315 1428
                       <at name="rows">
1316
                        <object classname="[Ljava.lang.Object;" size="14">
1429
                        <object classname="[Ljava.lang.Object;" size="16">
1317 1430
                         <at name="item" index="0">
1318 1431
                          <object classname="[Ljava.lang.Object;" size="5"/>
1319 1432
                         </at>
......
1356 1469
                         <at name="item" index="13">
1357 1470
                          <object classname="[Ljava.lang.Object;" size="5"/>
1358 1471
                         </at>
1472
                         <at name="item" index="14">
1473
                          <object classname="[Ljava.lang.Object;" size="5"/>
1474
                         </at>
1475
                         <at name="item" index="15">
1476
                          <object classname="[Ljava.lang.Object;" size="5"/>
1477
                         </at>
1359 1478
                        </object>
1360 1479
                       </at>
1361 1480
                      </object>
......
1407 1526
                      </at>
1408 1527
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
1409 1528
                     </super>
1410
                     <at name="id">embedded.1977188865</at>
1529
                     <at name="id">embedded.957551362</at>
1411 1530
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
1412 1531
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
1413 1532
                     <at name="components">
......
1637 1756
                               </object>
1638 1757
                              </at>
1639 1758
                              <at name="name">cboGeometryType</at>
1640
                              <at name="width">669</at>
1759
                              <at name="width">743</at>
1641 1760
                              <at name="items">
1642 1761
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1643 1762
                                <at name="name">items</at>
......
1696 1815
                               </object>
1697 1816
                              </at>
1698 1817
                              <at name="name">cboGeometrySubtype</at>
1699
                              <at name="width">669</at>
1818
                              <at name="width">743</at>
1700 1819
                              <at name="items">
1701 1820
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1702 1821
                                <at name="name">items</at>
......
1727 1846
                           </at>
1728 1847
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
1729 1848
                          </super>
1730
                          <at name="id">embedded.667447837</at>
1849
                          <at name="id">embedded.292831314</at>
1731 1850
                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
1732 1851
                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
1733 1852
                          <at name="components">
......
1837 1956
                                    </object>
1838 1957
                                   </at>
1839 1958
                                   <at name="name">txtCRS</at>
1840
                                   <at name="width">637</at>
1959
                                   <at name="width">711</at>
1841 1960
                                   <at name="height">20</at>
1842 1961
                                  </object>
1843 1962
                                 </at>
......
2058 2177
                      </at>
2059 2178
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2060 2179
                     </super>
2061
                     <at name="id">embedded.2113112963</at>
2180
                     <at name="id">embedded.535152172</at>
2062 2181
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
2063 2182
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
2064 2183
                     <at name="components">
......
2171 2290
                              <at name="editable">true</at>
2172 2291
                              <at name="requestFocusEnabled">false</at>
2173 2292
                              <at name="name">cboDateFormat</at>
2174
                              <at name="width">706</at>
2293
                              <at name="width">780</at>
2175 2294
                              <at name="items">
2176 2295
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
2177 2296
                                <at name="name">items</at>
......
2262 2381
                           </at>
2263 2382
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2264 2383
                          </super>
2265
                          <at name="id">embedded.220431769</at>
2384
                          <at name="id">embedded.1540621912</at>
2266 2385
                          <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
2267 2386
                          <at name="colspecs">FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
2268 2387
                          <at name="components">
......
2432 2551
                                    </object>
2433 2552
                                   </at>
2434 2553
                                   <at name="name">txtIntervalStart</at>
2435
                                   <at name="width">629</at>
2554
                                   <at name="width">703</at>
2436 2555
                                   <at name="height">20</at>
2437 2556
                                  </object>
2438 2557
                                 </at>
......
2606 2725
                                    </object>
2607 2726
                                   </at>
2608 2727
                                   <at name="name">txtIntervalEnd</at>
2609
                                   <at name="width">629</at>
2728
                                   <at name="width">703</at>
2610 2729
                                   <at name="height">20</at>
2611 2730
                                  </object>
2612 2731
                                 </at>
......
2830 2949
                      </at>
2831 2950
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2832 2951
                     </super>
2833
                     <at name="id">embedded.2084374812</at>
2952
                     <at name="id">embedded.1403400725</at>
2834 2953
                     <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
2835 2954
                     <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
2836 2955
                     <at name="components">
......
2852 2971
                           </at>
2853 2972
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2854 2973
                          </super>
2855
                          <at name="id">embedded.1886771401</at>
2974
                          <at name="id">embedded.1703351616</at>
2856 2975
                          <at name="rowspecs">FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
2857 2976
                          <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at>
2858 2977
                          <at name="components">
......
3025 3144
                                   <at name="editable">true</at>
3026 3145
                                   <at name="requestFocusEnabled">false</at>
3027 3146
                                   <at name="name">cboTagsName</at>
3028
                                   <at name="width">639</at>
3147
                                   <at name="width">713</at>
3029 3148
                                   <at name="items">
3030 3149
                                    <object classname="com.jeta.forms.store.properties.ItemsProperty">
3031 3150
                                     <at name="name">items</at>
......
3084 3203
                                    </object>
3085 3204
                                   </at>
3086 3205
                                   <at name="name">tblTags</at>
3087
                                   <at name="width">687</at>
3206
                                   <at name="width">761</at>
3088 3207
                                   <at name="scollBars">
3089 3208
                                    <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
3090 3209
                                     <at name="name">scollBars</at>
......
3165 3284
                                    </object>
3166 3285
                                   </at>
3167 3286
                                   <at name="name">lblTagsDescription</at>
3168
                                   <at name="width">639</at>
3287
                                   <at name="width">713</at>
3169 3288
                                   <at name="fill">
3170 3289
                                    <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
3171 3290
                                     <at name="name">fill</at>
......
3196 3315
                                </at>
3197 3316
                                <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
3198 3317
                               </super>
3199
                               <at name="id">embedded.1870663841</at>
3318
                               <at name="id">embedded.1157397134</at>
3200 3319
                               <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
3201 3320
                               <at name="colspecs">FILL:DEFAULT:NONE</at>
3202 3321
                               <at name="components">
......
3511 3630
                                   <at name="editable">true</at>
3512 3631
                                   <at name="requestFocusEnabled">false</at>
3513 3632
                                   <at name="name">cboTagsValue</at>
3514
                                   <at name="width">639</at>
3633
                                   <at name="width">713</at>
3515 3634
                                   <at name="items">
3516 3635
                                    <object classname="com.jeta.forms.store.properties.ItemsProperty">
3517 3636
                                     <at name="name">items</at>
......
3734 3853
                      </at>
3735 3854
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
3736 3855
                     </super>
3737
                     <at name="id">embedded.1564699320</at>
3856
                     <at name="id">embedded.1363644472</at>
3738 3857
                     <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
3739 3858
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at>
3740 3859
                     <at name="components">
......
3785 3904
                              </at>
3786 3905
                              <at name="actionCommand">_is_foreing_key</at>
3787 3906
                              <at name="name">chkIsForeingKey</at>
3788
                              <at name="width">738</at>
3907
                              <at name="width">812</at>
3789 3908
                              <at name="text">_is_foreing_key</at>
3790 3909
                              <at name="height">16</at>
3791 3910
                             </object>
......
4023 4142
                              <at name="editable">true</at>
4024 4143
                              <at name="requestFocusEnabled">false</at>
4025 4144
                              <at name="name">cboForeingKeyTableName</at>
4026
                              <at name="width">696</at>
4145
                              <at name="width">770</at>
4027 4146
                              <at name="items">
4028 4147
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
4029 4148
                                <at name="name">items</at>
......
4085 4204
                              <at name="editable">true</at>
4086 4205
                              <at name="requestFocusEnabled">false</at>
4087 4206
                              <at name="name">cboForeingKeyCodeName</at>
4088
                              <at name="width">696</at>
4207
                              <at name="width">770</at>
4089 4208
                              <at name="items">
4090 4209
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
4091 4210
                                <at name="name">items</at>
......
4144 4263
                               </object>
4145 4264
                              </at>
4146 4265
                              <at name="name">txtForeingKeyFormula</at>
4147
                              <at name="width">641</at>
4266
                              <at name="width">715</at>
4148 4267
                              <at name="height">20</at>
4149 4268
                             </object>
4150 4269
                            </at>
......
4314 4433
                               </object>
4315 4434
                              </at>
4316 4435
                              <at name="name">chkIsClosedList</at>
4317
                              <at name="width">641</at>
4436
                              <at name="width">715</at>
4318 4437
                              <at name="height">15</at>
4319 4438
                             </object>
4320 4439
                            </at>
......
4465 4584
                      </at>
4466 4585
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
4467 4586
                     </super>
4468
                     <at name="id">embedded.889097359</at>
4587
                     <at name="id">embedded.1340505097</at>
4469 4588
                     <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
4470 4589
                     <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
4471 4590
                     <at name="components">
......
4550 4669
                                        </at>
4551 4670
                                        <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
4552 4671
                                       </super>
4553
                                       <at name="id">embedded.1634433775</at>
4672
                                       <at name="id">embedded.124321367</at>
4554 4673
                                       <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(0.2)</at>
4555 4674
                                       <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
4556 4675
                                       <at name="components">
......
4723 4842
                                                <at name="editable">true</at>
4724 4843
                                                <at name="requestFocusEnabled">false</at>
4725 4844
                                                <at name="name">cboGroup</at>
4726
                                                <at name="width">619</at>
4845
                                                <at name="width">693</at>
4727 4846
                                                <at name="items">
4728 4847
                                                 <object classname="com.jeta.forms.store.properties.ItemsProperty">
4729 4848
                                                  <at name="name">items</at>
......
4782 4901
                                                 </object>
4783 4902
                                                </at>
4784 4903
                                                <at name="name">txtOrder</at>
4785
                                                <at name="width">619</at>
4904
                                                <at name="width">693</at>
4786 4905
                                                <at name="height">20</at>
4787 4906
                                               </object>
4788 4907
                                              </at>
......
4896 5015
                                                 </object>
4897 5016
                                                </at>
4898 5017
                                                <at name="name">chkHidden</at>
4899
                                                <at name="width">619</at>
5018
                                                <at name="width">693</at>
4900 5019
                                                <at name="height">15</at>
4901 5020
                                               </object>
4902 5021
                                              </at>
......
5010 5129
                                                 </object>
5011 5130
                                                </at>
5012 5131
                                                <at name="name">txtLabel</at>
5013
                                                <at name="width">619</at>
5132
                                                <at name="width">693</at>
5014 5133
                                                <at name="height">20</at>
5015 5134
                                               </object>
5016 5135
                                              </at>
......
5127 5246
                                                <at name="scrollableTracksViewportHeight">true</at>
5128 5247
                                                <at name="scrollableTracksViewportWidth">true</at>
5129 5248
                                                <at name="name">txtDescription</at>
5130
                                                <at name="width">617</at>
5249
                                                <at name="width">691</at>
5131 5250
                                                <at name="scollBars">
5132 5251
                                                 <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
5133 5252
                                                  <at name="name">scollBars</at>
......
5302 5421
                                        </at>
5303 5422
                                        <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
5304 5423
                                       </super>
5305
                                       <at name="id">embedded.850442231</at>
5424
                                       <at name="id">embedded.1225149409</at>
5306 5425
                                       <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
5307 5426
                                       <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
5308 5427
                                       <at name="components">
......
5412 5531
                                                 </object>
5413 5532
                                                </at>
5414 5533
                                                <at name="name">txtMinValue</at>
5415
                                                <at name="width">593</at>
5534
                                                <at name="width">667</at>
5416 5535
                                                <at name="height">20</at>
5417 5536
                                               </object>
5418 5537
                                              </at>
......
5526 5645
                                                 </object>
5527 5646
                                                </at>
5528 5647
                                                <at name="name">txtMaxValue</at>
5529
                                                <at name="width">593</at>
5648
                                                <at name="width">667</at>
5530 5649
                                                <at name="height">20</at>
5531 5650
                                               </object>
5532 5651
                                              </at>
......
5580 5699
                                                 </object>
5581 5700
                                                </at>
5582 5701
                                                <at name="name">lblAvailableValues</at>
5583
                                                <at name="width">700</at>
5702
                                                <at name="width">774</at>
5584 5703
                                                <at name="text">_List_of_values</at>
5585 5704
                                                <at name="fill">
5586 5705
                                                 <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
......
5612 5731
                                             </at>
5613 5732
                                             <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
5614 5733
                                            </super>
5615
                                            <at name="id">embedded.1428155938</at>
5734
                                            <at name="id">embedded.1155467379</at>
5616 5735
                                            <at name="rowspecs">CENTER:DEFAULT:NONE</at>
5617 5736
                                            <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
5618 5737
                                            <at name="components">
......
5634 5753
                                                  </at>
5635 5754
                                                  <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
5636 5755
                                                 </super>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff