Revision 47325
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 | ||
---|---|---|
811 | 811 |
int displaySize = descriptor.getDisplaySize(); |
812 | 812 |
switch (type) { |
813 | 813 |
case DataTypes.DECIMAL: |
814 |
if( displaySize<1 ) { |
|
815 |
if( precision < 0) { |
|
816 |
displaySize = DbaseFieldDescriptor.MAX_NUMBER_SIZE; |
|
817 |
} else { |
|
818 |
displaySize = precision + 3; |
|
814 |
if( precision < 0) { |
|
815 |
if( displaySize < 1){ |
|
816 |
displaySize = DbaseFieldDescriptor.MAX_NUMBER_SIZE; |
|
819 | 817 |
} |
818 |
} else { |
|
819 |
displaySize = Math.max(displaySize, precision + 3); |
|
820 | 820 |
} |
821 | 821 |
header.addColumn(colName, DBFTYPE_NUMBER, displaySize, precision, scale); |
822 | 822 |
break; |
823 | 823 |
case DataTypes.DOUBLE: |
824 |
if( displaySize<1 ) {
|
|
824 |
if( displaySize < 1 ) {
|
|
825 | 825 |
displaySize = DataType.DOUBLE_MAX_PRECISION+3; |
826 | 826 |
} |
827 | 827 |
if( displaySize>DbaseFieldDescriptor.MAX_NUMBER_SIZE ) { |
... | ... | |
830 | 830 |
header.addColumn(colName, DBFTYPE_FLOAT, displaySize, precision, scale); |
831 | 831 |
break; |
832 | 832 |
case DataTypes.FLOAT: |
833 |
if( displaySize<1 ) {
|
|
833 |
if( displaySize < 1 ) {
|
|
834 | 834 |
displaySize = DataType.FLOAT_MAX_PRECISION+3; |
835 | 835 |
} |
836 | 836 |
if( displaySize>DbaseFieldDescriptor.MAX_NUMBER_SIZE ) { |
... | ... | |
839 | 839 |
header.addColumn(colName, DBFTYPE_FLOAT, displaySize, precision, scale); |
840 | 840 |
break; |
841 | 841 |
case DataTypes.INT: |
842 |
if( displaySize<1 ) { |
|
843 |
if( precision>=DataType.INT_MAX_PRECISION ) { |
|
844 |
displaySize = DataType.INT_MAX_PRECISION; |
|
845 |
} else { |
|
846 |
displaySize = precision + 1; |
|
847 |
} |
|
842 |
displaySize = Math.max(displaySize, precision + 1); |
|
843 |
if( displaySize >= DataType.INT_MAX_PRECISION ) { |
|
844 |
displaySize = DataType.INT_MAX_PRECISION; |
|
848 | 845 |
} |
849 | 846 |
if( displaySize>DbaseFieldDescriptor.MAX_NUMBER_SIZE ) { |
850 | 847 |
displaySize = DbaseFieldDescriptor.MAX_NUMBER_SIZE; |
... | ... | |
852 | 849 |
header.addColumn(colName, DBFTYPE_NUMBER, displaySize, precision, scale); |
853 | 850 |
break; |
854 | 851 |
case DataTypes.LONG: |
855 |
if( displaySize<1 ) { |
|
856 |
if( precision>=DataType.LONG_MAX_PRECISION ) { |
|
857 |
displaySize = DataType.LONG_MAX_PRECISION; |
|
858 |
} else { |
|
859 |
displaySize = precision + 1; |
|
860 |
} |
|
852 |
displaySize = Math.max(displaySize, precision + 1); |
|
853 |
if( displaySize >= DataType.LONG_MAX_PRECISION ) { |
|
854 |
displaySize = DataType.LONG_MAX_PRECISION; |
|
861 | 855 |
} |
862 | 856 |
if( displaySize>DbaseFieldDescriptor.MAX_NUMBER_SIZE ) { |
863 | 857 |
displaySize = DbaseFieldDescriptor.MAX_NUMBER_SIZE; |
... | ... | |
877 | 871 |
header.addColumn(colName, DBFTYPE_BOOLEAN, 1, 0, 0); |
878 | 872 |
break; |
879 | 873 |
case DataTypes.STRING: |
880 |
if( displaySize<1 ) { |
|
881 |
displaySize = size; |
|
882 |
} |
|
874 |
displaySize = Math.max(displaySize, size); |
|
883 | 875 |
if( displaySize>DbaseFieldDescriptor.MAX_SIZE ) { |
884 | 876 |
displaySize = DbaseFieldDescriptor.MAX_SIZE; |
885 | 877 |
} |
886 | 878 |
header.addColumn(colName, DBFTYPE_STRING, displaySize, 0, 0); |
887 | 879 |
break; |
888 | 880 |
case DataTypes.BYTE: |
889 |
if( displaySize<1 ) { |
|
890 |
if( precision>=DataType.BYTE_MAX_PRECISION ) { |
|
891 |
displaySize = precision; |
|
892 |
} else { |
|
893 |
displaySize = precision + 1; |
|
894 |
} |
|
881 |
displaySize = Math.max(displaySize, precision + 1); |
|
882 |
if( displaySize >= DataType.BYTE_MAX_PRECISION ) { |
|
883 |
displaySize = DataType.BYTE_MAX_PRECISION; |
|
895 | 884 |
} |
896 | 885 |
if( displaySize>DbaseFieldDescriptor.MAX_NUMBER_SIZE ) { |
897 | 886 |
displaySize = DbaseFieldDescriptor.MAX_NUMBER_SIZE; |
... | ... | |
900 | 889 |
break; |
901 | 890 |
default: |
902 | 891 |
// Si no sabemos lo que es intentaremos guardarlo como un string |
903 |
if( displaySize<1 ) { |
|
904 |
if( size < 20 ) { |
|
905 |
displaySize = 20; |
|
906 |
} else { |
|
907 |
displaySize = size; |
|
908 |
} |
|
909 |
} |
|
892 |
displaySize = Math.max(displaySize, Math.max(size, 20)); |
|
910 | 893 |
if( displaySize>DbaseFieldDescriptor.MAX_SIZE ) { |
911 | 894 |
displaySize = DbaseFieldDescriptor.MAX_SIZE; |
912 | 895 |
} |
Also available in: Unified diff