]> source.dussan.org Git - poi.git/commitdiff
Support getting and setting as int, as well as short (bug #43648)
authorNick Burch <nick@apache.org>
Mon, 12 Nov 2007 12:47:34 +0000 (12:47 +0000)
committerNick Burch <nick@apache.org>
Mon, 12 Nov 2007 12:47:34 +0000 (12:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@594097 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/record/formula/IntPtg.java

index 29df020f3ccce76d8651061223e8b6232fff6258..d2298ea8be378647c79c4ffa6353829d2377600b 100644 (file)
@@ -36,7 +36,8 @@
 
                <!-- Don't forget to update status.xml too! -->
         <release version="3.0.2-FINAL" date="2007-??-??">
-            <action dev="POI-DEVELOPERS" type="add">43751 - [PATCH] - Fix for handling rotated text in HSSFSheet.autoSizeColumn</action>
+            <action dev="POI-DEVELOPERS" type="fix">43648 - Fix for IntPtg and short vs int</action>
+            <action dev="POI-DEVELOPERS" type="fix">43751 - [PATCH] - Fix for handling rotated text in HSSFSheet.autoSizeColumn</action>
             <action dev="POI-DEVELOPERS" type="add">Include an Excel text extractor, and put all existing text extractors under a common superclass</action>
             <action dev="POI-DEVELOPERS" type="add">Improvements to the LZW compression engine used by HDGF</action>
             <action dev="POI-DEVELOPERS" type="add">HSSFPicture.resize() - a handy method to reset a picture to its original width and height</action>
index 22be5a09fb97dc9bb80c38e66766e747f19f7db3..f8c0eb6de82728cf78b70d890546072e2f7e140f 100644 (file)
@@ -33,6 +33,8 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.0.2-FINAL" date="2007-??-??">
+            <action dev="POI-DEVELOPERS" type="fix">43648 - Fix for IntPtg and short vs int</action>
+            <action dev="POI-DEVELOPERS" type="fix">43751 - [PATCH] - Fix for handling rotated text in HSSFSheet.autoSizeColumn</action>
             <action dev="POI-DEVELOPERS" type="add">Include an Excel text extractor, and put all existing text extractors under a common superclass</action>
             <action dev="POI-DEVELOPERS" type="add">Improvements to the LZW compression engine used by HDGF</action>
             <action dev="POI-DEVELOPERS" type="add">HSSFPicture.resize() - a handy method to reset a picture to its original width and height</action>
index 46de94ff619263fdf773ba2b13b9db6307302c41..602289776b0e7647b091b04739ea44e8b97f3056 100644 (file)
@@ -29,8 +29,8 @@ import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.record.RecordInputStream;
 
 /**
- * Integer (short intger)
- * Stores a (java) short value in a formula
+ * Integer (unsigned short intger)
+ * Stores an unsigned short value (java int) in a formula
  * @author  Andrew C. Oliver (acoliver at apache dot org)
  * @author Jason Height (jheight at chariot dot net dot au)
  */
@@ -57,16 +57,48 @@ public class IntPtg
         setValue(Short.parseShort(formulaToken));
     }
 
+    /**
+     * Sets the wrapped value.
+     * Normally you should call with a positive int.
+     */
     public void setValue(short value)
     {
         field_1_value = value;
     }
 
+    /**
+     * Sets the unsigned value.
+     * (Handles conversion to the internal short value) 
+     */
+    public void setValue(int value)
+    {
+       if(value > Short.MAX_VALUE) {
+               // Need to wrap
+               value -= (Short.MAX_VALUE+1)*2;
+       }
+       field_1_value = (short)value;
+    }
+
+    /**
+     * Returns the value as a short, which may have
+     *  been wrapped into negative numbers
+     */
     public short getValue()
     {
         return field_1_value;
     }
 
+    /**
+     * Returns the value as an unsigned positive int.
+     */
+    public int getValueAsInt()
+    {
+       if(field_1_value < 0) {
+               return (Short.MAX_VALUE + 1)*2 + field_1_value;
+       }
+        return field_1_value;
+    }
+
     public void writeBytes(byte [] array, int offset)
     {
         array[ offset + 0 ] = sid;