]> source.dussan.org Git - jackcess.git/commitdiff
Make ColumnBuilder.setMaxLength do the right thing regardless of column type. Add...
authorJames Ahlborn <jtahlborn@yahoo.com>
Sat, 31 Jan 2015 19:30:55 +0000 (19:30 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Sat, 31 Jan 2015 19:30:55 +0000 (19:30 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@910 f203690c-595d-4dc9-a70b-905162fa7fd2

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

index 5244f9627f3fb243953eb9445e198ca2c62e7050..23c1f09180e4c90cd1154e37a14fef2c4f839a0d 100644 (file)
@@ -4,6 +4,12 @@
     <author email="javajedi@users.sf.net">Tim McCune</author>
   </properties>
   <body>
+    <release version="2.0.9" date="TBD">
+      <action dev="jahlborn" type="fix" system="SourceForge2" issue="116">
+        Make ColumnBuilder.setMaxLength do the right thing regardless of
+        column type.
+      </action>
+    </release>
     <release version="2.0.8" date="2014-12-26">
       <action dev="jahlborn" type="fix" system="SourceForge2" issue="113">
         Add newer sql type to access type mappings if the jvm supports them.
index bbfca27edec8a6c08f7cc14d6ac18a621ed2fa4d..f013e3bfa2da201c81bcb4dac337cb2a37c9af2a 100644 (file)
@@ -129,6 +129,17 @@ public class ColumnBuilder {
     return ((_precision != null) ? _precision : (byte)_type.getDefaultPrecision());
   }
 
+  /**
+   * Sets the precision for the new column to the max length for the type.
+   * Does nothing for types which do not have a precision.
+   */
+  public ColumnBuilder setMaxPrecision() {
+    if(_type.getHasScalePrecision()) {
+      setPrecision(_type.getMaxPrecision());
+    }
+    return this;
+  }
+
   /**
    * Sets the scale for the new column.
    */
@@ -141,6 +152,17 @@ public class ColumnBuilder {
     return ((_scale != null) ? _scale : (byte)_type.getDefaultScale());
   }
 
+  /**
+   * Sets the scale for the new column to the max length for the type.  Does
+   * nothing for types which do not have a scale.
+   */
+  public ColumnBuilder setMaxScale() {
+    if(_type.getHasScalePrecision()) {
+      setScale(_type.getMaxScale());
+    }
+    return this;
+  }
+
   /**
    * Sets the length (in bytes) for the new column.
    */
@@ -163,10 +185,15 @@ public class ColumnBuilder {
   }
   
   /**
-   * Sets the length for the new column to the max length for the type.
+   * Sets the length for the new column to the max length for the type.  Does
+   * nothing for types which are not variable length.
    */
   public ColumnBuilder setMaxLength() {
-    return setLength(_type.getMaxSize());
+    // length setting only makes sense for variable length columns
+    if(_type.isVariableLength()) {
+      setLength(_type.getMaxSize());
+    }
+    return this;
   }
   
   /**
index ffd5bf4cf8199abf933c1d74108ce45264a48735..ad6deaf242c96fe62f5a52fd4b3c085d89b1079d 100644 (file)
@@ -114,8 +114,8 @@ public enum DataType {
    * null}.  Equivalent to SQL {@link Types#VARCHAR}, {@link Types#CHAR}.
    */
   TEXT((byte) 0x0A, Types.VARCHAR, null, true, false, 0,
-       50 * JetFormat.TEXT_FIELD_UNIT_SIZE,
-       JetFormat.TEXT_FIELD_MAX_LENGTH, JetFormat.TEXT_FIELD_UNIT_SIZE),
+       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.
    * Accepts a {@code byte[]}, or {@code null}.  Equivalent to SQL