Revision 45129
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/AutomaticDetectionOfTypes.java | ||
---|---|---|
35 | 35 |
|
36 | 36 |
private int type; |
37 | 37 |
private int displaySize; |
38 |
private int precision;
|
|
39 |
private int scale;
|
|
38 |
private int integerDigits;
|
|
39 |
private int decimalDigits;
|
|
40 | 40 |
|
41 | 41 |
@Override |
42 | 42 |
public int getType() { |
... | ... | |
50 | 50 |
|
51 | 51 |
@Override |
52 | 52 |
public int getPrecision() { |
53 |
return this.precision;
|
|
53 |
return this.decimalDigits + this.integerDigits;
|
|
54 | 54 |
} |
55 | 55 |
|
56 | 56 |
@Override |
57 | 57 |
public int getScale() { |
58 |
return this.scale;
|
|
58 |
return this.decimalDigits;
|
|
59 | 59 |
} |
60 | 60 |
|
61 | 61 |
} |
... | ... | |
137 | 137 |
try { |
138 | 138 |
BigDecimal decimal = (BigDecimal) toDecimal.coerce(rawvalue, coercionContext); |
139 | 139 |
possibleDataType.possibleDecimal = true; |
140 |
if( decimal.scale() > detectedValue.scale ) {
|
|
141 |
detectedValue.scale = decimal.scale();
|
|
140 |
if( decimal.scale() > detectedValue.decimalDigits ) {
|
|
141 |
detectedValue.decimalDigits = decimal.scale();
|
|
142 | 142 |
} |
143 |
if( decimal.precision()>detectedValue.precision ) { |
|
144 |
detectedValue.precision = decimal.precision(); |
|
143 |
int integerDigits = decimal.precision() - decimal.scale(); |
|
144 |
if( integerDigits>detectedValue.integerDigits ) { |
|
145 |
detectedValue.integerDigits = integerDigits; |
|
145 | 146 |
} |
146 | 147 |
} catch (Exception ex) { |
147 | 148 |
possibleDataType.possibleDecimal = false; |
... | ... | |
195 | 196 |
} |
196 | 197 |
} |
197 | 198 |
row = rows.nextRowValues(); |
199 |
lineno++; |
|
198 | 200 |
} |
199 | 201 |
int n = 0; |
200 | 202 |
for (PossibleDataType possibleDataType : possibleDataTypes) { |
Also available in: Unified diff