]> source.dussan.org Git - jackcess.git/commitdiff
use fromUnitSize
authorJames Ahlborn <jtahlborn@yahoo.com>
Sat, 29 Dec 2018 05:27:46 +0000 (05:27 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Sat, 29 Dec 2018 05:27:46 +0000 (05:27 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1256 f203690c-595d-4dc9-a70b-905162fa7fd2

src/main/java/com/healthmarketscience/jackcess/ColumnBuilder.java
src/main/java/com/healthmarketscience/jackcess/DataType.java

index 35aeca3dbcbc0f209976fc988110b9e3915a324a..48fa1cf64810d09b4ab9fc735a3d6eaefb88ac38 100644 (file)
@@ -68,7 +68,7 @@ public class ColumnBuilder {
   public ColumnBuilder(String name) {
     this(name, null);
   }
-  
+
   public ColumnBuilder(String name, DataType type) {
     _name = name;
     _type = type;
@@ -96,7 +96,7 @@ public class ColumnBuilder {
   public ColumnBuilder setSQLType(int type) throws SQLException {
     return setSQLType(type, 0, null);
   }
-  
+
   /**
    * Sets the type for the new column based on the given SQL type and target
    * data length (in type specific units).
@@ -182,9 +182,9 @@ public class ColumnBuilder {
    * Sets the length (in type specific units) for the new column.
    */
   public ColumnBuilder setLengthInUnits(int unitLength) {
-    return setLength(_type.getUnitSize() * unitLength);
+    return setLength(_type.fromUnitSize(unitLength));
   }
-  
+
   /**
    * Sets the length for the new column to the max length for the type.  Does
    * nothing for types which are not variable length.
@@ -196,7 +196,7 @@ public class ColumnBuilder {
     }
     return this;
   }
-  
+
   /**
    * Sets whether of not the new column is an auto-number column.
    */
@@ -295,12 +295,12 @@ public class ColumnBuilder {
   private PropertyMap.Property getProperty(String name) {
     return ((_props != null) ? _props.get(name) : null);
   }
-  
+
   /**
    * Sets all attributes except name from the given Column template (including
    * all column properties except GUID).
    */
-  public ColumnBuilder setFromColumn(Column template) 
+  public ColumnBuilder setFromColumn(Column template)
     throws IOException
   {
     DataType type = template.getType();
@@ -325,7 +325,7 @@ public class ColumnBuilder {
         setProperty(colProp.getName(), colProp);
       }
     }
-    
+
     return this;
   }
 
@@ -349,7 +349,7 @@ public class ColumnBuilder {
     if(template._props != null) {
       _props = new HashMap<String,PropertyMap.Property>(template._props);
     }
-    
+
     return this;
   }
 
@@ -410,7 +410,7 @@ public class ColumnBuilder {
       throw new IllegalArgumentException(withErrorContext(
           "Database format " + format + " does not support type " + getType()));
     }
-    
+
     if(!getType().isVariableLength()) {
       if(getLength() < getType().getFixedSize()) {
         throw new IllegalArgumentException(withErrorContext(
@@ -433,7 +433,7 @@ public class ColumnBuilder {
       if(!getType().isValidPrecision(getPrecision())) {
         throw new IllegalArgumentException(withErrorContext(
             "Precision must be from " + getType().getMinPrecision() + " to " +
-            getType().getMaxPrecision() + " inclusive, found " + 
+            getType().getMaxPrecision() + " inclusive, found " +
             getPrecision()));
       }
     }
index 6850ab681df0d6e9e5cfb0232174e7720f903ab6..33496cfa6dcc3bf86d796dc1852570c09885c95f 100644 (file)
@@ -30,7 +30,7 @@ import com.healthmarketscience.jackcess.impl.JetFormat;
 
 /**
  * Supported access data types.
- * 
+ *
  * @author Tim McCune
  * @usage _general_class_
  */
@@ -104,7 +104,7 @@ public enum DataType {
    * null}.  Equivalent to SQL {@link Types#VARCHAR}, {@link Types#CHAR}.
    */
   TEXT((byte) 0x0A, Types.VARCHAR, null, true, false, 0,
-       JetFormat.TEXT_FIELD_MAX_LENGTH, JetFormat.TEXT_FIELD_MAX_LENGTH, 
+       JetFormat.TEXT_FIELD_MAX_LENGTH, JetFormat.TEXT_FIELD_MAX_LENGTH,
        JetFormat.TEXT_FIELD_UNIT_SIZE),
   /**
    * Corresponds to a java {@code byte[]} of max length 16777215 bytes.
@@ -151,7 +151,7 @@ public enum DataType {
    * Complex type corresponds to a special {@link #LONG} autonumber field
    * which is the key for a secondary table which holds the "real" data.
    */
-  COMPLEX_TYPE((byte) 0x12, null, 4),    
+  COMPLEX_TYPE((byte) 0x12, null, 4),
   /**
    * Corresponds to a java {@link Long}.  Accepts any {@link Number} (using
    * {@link Number#longValue}), Boolean as 1 or 0, any Object converted to a
@@ -206,7 +206,7 @@ public enum DataType {
     addNewSqlType("TIME_WITH_TIMEZONE", SHORT_DATE_TIME, null);
     addNewSqlType("TIMESTAMP_WITH_TIMEZONE", SHORT_DATE_TIME, null);
   }
-  
+
   private static Map<Byte, DataType> DATA_TYPES = new HashMap<Byte, DataType>();
   static {
     for (DataType type : DataType.values()) {
@@ -249,11 +249,11 @@ public enum DataType {
   private final int _maxPrecision;
   /** the number of bytes per "unit" for this data type */
   private final int _unitSize;
-  
+
   private DataType(byte value) {
     this(value, null, null);
   }
-  
+
   private DataType(byte value, Integer sqlType, Integer fixedSize) {
     this(value, sqlType, fixedSize, false, false, 0, 0, 0, 1);
   }
@@ -269,7 +269,7 @@ public enum DataType {
          minSize, defaultSize, maxSize,
          false, 0, 0, 0, 0, 0, 0, unitSize);
   }
-  
+
   private DataType(byte value, Integer sqlType, Integer fixedSize,
                    boolean variableLength,
                    boolean longValue,
@@ -301,11 +301,11 @@ public enum DataType {
     _maxPrecision = maxPrecision;
     _unitSize = unitSize;
   }
-  
+
   public byte getValue() {
     return _value;
   }
-  
+
   public boolean isVariableLength() {
     return _variableLength;
   }
@@ -315,7 +315,7 @@ public enum DataType {
     // e.g. NUMERIC
     return (isVariableLength() && (getMinSize() != getMaxSize()));
   }
-  
+
   public boolean isLongValue() {
     return _longValue;
   }
@@ -327,7 +327,7 @@ public enum DataType {
   public int getFixedSize() {
     return getFixedSize(null);
   }
-  
+
   public int getFixedSize(Short colLength) {
     if(_fixedSize != null) {
       if(colLength != null) {
@@ -338,7 +338,7 @@ public enum DataType {
     if(colLength != null) {
       return colLength;
     }
-    throw new IllegalArgumentException("Unexpected fixed length column " + 
+    throw new IllegalArgumentException("Unexpected fixed length column " +
                                        this);
   }
 
@@ -353,7 +353,7 @@ public enum DataType {
   public int getMaxSize() {
     return _maxSize;
   }
-  
+
   public int getSQLType() throws SQLException {
     if (_sqlType != null) {
       return _sqlType;
@@ -368,19 +368,19 @@ public enum DataType {
   public int getDefaultScale() {
     return _defaultScale;
   }
-  
+
   public int getMaxScale() {
     return _maxScale;
   }
-  
+
   public int getMinPrecision() {
     return _minPrecision;
   }
-  
+
   public int getDefaultPrecision() {
     return _defaultPrecision;
   }
-  
+
   public int getMaxPrecision() {
     return _maxPrecision;
   }
@@ -389,13 +389,11 @@ public enum DataType {
     return _unitSize;
   }
 
-  public int toUnitSize(int size)
-  {
+  public int toUnitSize(int size) {
     return(size / getUnitSize());
   }
 
-  public int fromUnitSize(int unitSize)
-  {
+  public int fromUnitSize(int unitSize) {
     return(unitSize * getUnitSize());
   }
 
@@ -414,7 +412,7 @@ public enum DataType {
   private static boolean isWithinRange(int value, int minValue, int maxValue) {
     return((value >= minValue) && (value <= maxValue));
   }
-  
+
   public int toValidSize(int size) {
     return toValidRange(size, getMinSize(), getMaxSize());
   }
@@ -442,12 +440,12 @@ public enum DataType {
   public boolean isUnsupported() {
     return((this == UNSUPPORTED_FIXEDLEN) || (this == UNSUPPORTED_VARLEN));
   }
-  
+
   private static int toValidRange(int value, int minValue, int maxValue) {
     return((value > maxValue) ? maxValue :
            ((value < minValue) ? minValue : value));
   }
-  
+
   public static DataType fromByte(byte b) throws IOException {
     DataType rtn = DATA_TYPES.get(b);
     if (rtn != null) {
@@ -455,13 +453,13 @@ public enum DataType {
     }
     throw new IOException("Unrecognized data type: " + b);
   }
-  
+
   public static DataType fromSQLType(int sqlType)
     throws SQLException
   {
     return fromSQLType(sqlType, 0, null);
   }
-  
+
   public static DataType fromSQLType(int sqlType, int lengthInUnits)
     throws SQLException
   {
@@ -493,7 +491,7 @@ public enum DataType {
     }
 
     // make sure size is reasonable
-    int size = lengthInUnits * rtn.getUnitSize();
+    int size = rtn.fromUnitSize(lengthInUnits);
     if(rtn.isVariableLength() && !rtn.isValidSize(size)) {
       // try alternate type.  we always accept alternate "long value" types
       // regardless of the given lengthInUnits
@@ -504,7 +502,7 @@ public enum DataType {
         rtn = altRtn;
       }
     }
-      
+
     return rtn;
   }
 
@@ -512,7 +510,7 @@ public enum DataType {
    * Adds mappings for a sql type which was added after jdk 1.5 (using
    * reflection).
    */
-  private static void addNewSqlType(String typeName, DataType type, 
+  private static void addNewSqlType(String typeName, DataType type,
                                     DataType altType)
   {
     try {