You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/05/05 16:20:41 UTC
svn commit: r653490 [1/3] - in /poi/tags/REL_3_1_BETA2: ./ ooxml-lib/
src/documentation/ src/documentation/content/xdocs/
src/java/org/apache/poi/ddf/ src/java/org/apache/poi/hssf/model/
src/java/org/apache/poi/hssf/record/ src/java/org/apache/poi/hssf...
Author: yegor
Date: Mon May 5 07:20:39 2008
New Revision: 653490
URL: http://svn.apache.org/viewvc?rev=653490&view=rev
Log:
merged with trunk r653489
Added:
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java
- copied unchanged from r653488, poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java
poi/tags/REL_3_1_BETA2/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java
- copied unchanged from r653488, poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/ddf/TestEscherBlipRecord.java
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/ddf/TestEscherBlipRecord.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/ddf/data/
- copied from r653488, poi/trunk/src/testcases/org/apache/poi/ddf/data/
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/ddf/data/Container.dat
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/ddf/data/Container.dat
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/data/44840.xls
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/data/44840.xls
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/data/44861.xls
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/data/44861.xls
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/data/44891.xls
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/data/44891.xls
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/data/ex44921-21902.xls
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/data/ex44921-21902.xls
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/record/formula/TestFuncVarPtg.java
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/record/formula/TestFuncVarPtg.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPatriarch.java
- copied unchanged from r653488, poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPatriarch.java
Removed:
poi/tags/REL_3_1_BETA2/ooxml-lib/
poi/tags/REL_3_1_BETA2/src/scratchpad/ooxml-src/
poi/tags/REL_3_1_BETA2/src/scratchpad/ooxml-testcases/
Modified:
poi/tags/REL_3_1_BETA2/build.xml
poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/changes.xml
poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/index.xml
poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/status.xml
poi/tags/REL_3_1_BETA2/src/documentation/release-guide.txt
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherDggRecord.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherMetafileBlip.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/FormulaParser.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/Workbook.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FileSharingRecord.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FormulaRecord.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/Ptg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNVPtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/function/FunctionDataBuilder.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/function/FunctionMetadata.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/function/FunctionMetadataReader.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/usermodel/HSSFPictureData.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/AutoShapes.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/Picture.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/Shape.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/ShapeGroup.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/SimpleShape.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/Slide.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/SlideMaster.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/usermodel/RichTextRun.java
poi/tags/REL_3_1_BETA2/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
poi/tags/REL_3_1_BETA2/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java
poi/tags/REL_3_1_BETA2/src/scratchpad/testcases/org/apache/poi/hslf/model/TestShapes.java
poi/tags/REL_3_1_BETA2/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/ddf/AllPOIDDFTests.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/HSSFTestDataSamples.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/record/formula/AllFormulaTests.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/AllUserModelTests.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
poi/tags/REL_3_1_BETA2/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Modified: poi/tags/REL_3_1_BETA2/build.xml
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/build.xml?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/build.xml (original)
+++ poi/tags/REL_3_1_BETA2/build.xml Mon May 5 07:20:39 2008
@@ -74,7 +74,6 @@
<property name="main.output.dir" location="build/classes"/>
<property name="main.output.test.dir" location="build/test-classes"/>
<property name="main.lib" location="lib"/>
- <property name="ooxml.lib" location="ooxml-lib"/>
<property name="main.reports.test" location="build/test-results"/>
<property name="main.jar1.dir" location="${main.lib}/commons-logging-1.1.jar"/>
<property name="main.jar1.url" value="${repository}/commons-logging/jars/commons-logging-1.1.jar"/>
@@ -124,33 +123,6 @@
<property name="examples.jar3.url" value="${repository}/commons-lang/jars/commons-lang-2.1.jar"/>
<property name="examples.testokfile" location="build/examples-testokfile.txt"/>
- <!-- Experimental OOXML support: -->
- <property name="ooxml.src" location="src/scratchpad/ooxml-src"/>
- <property name="ooxml.src.test" location="src/scratchpad/ooxml-testcases"/>
- <property name="ooxml.reports.test" location="build/ooxml-test-results"/>
- <property name="ooxml.output.dir" location="build/ooxml-classes"/>
- <property name="ooxml.output.test.dir" location="build/ooxml-test-classes"/>
- <property name="ooxml.testokfile" location="build/ooxml-testokfile.txt"/>
-
- <property name="ooxml.jar1.dir" location="${ooxml.lib}/dom4j-1.6.1.jar"/>
- <property name="ooxml.jar1.url" value="${repository}/dom4j/jars/dom4j-1.6.1.jar"/>
- <property name="ooxml.jar2.dir" location="${ooxml.lib}/jaxen-1.1.jar"/>
- <property name="ooxml.jar2.url" value="${repository}/jaxen/jars/jaxen-1.1.jar"/>
- <property name="ooxml.jar3.dir" location="${ooxml.lib}/xmlbeans-2.3.0.jar"/>
- <property name="ooxml.jar3.url" value="${repository}/org.apache.xmlbeans/jars/xmlbeans-2.3.0.jar"/>
- <property name="ooxml.jar4.dir" location="${ooxml.lib}/jsr173_1.0_api.jar"/>
- <property name="ooxml.jar4.url" value="${repository}/xmlbeans/jars/jsr173_1.0_api.jar"/>
- <!-- No official release of openxml4j yet -->
- <property name="ooxml.jar5.dir" location="${ooxml.lib}/openxml4j-bin-alpha-080124.jar"/>
- <property name="ooxml.jar5.url" value="http://people.apache.org/~nick/openxml4j-bin-prealpha-071224.jar"/>
-
- <!-- See http://www.ecma-international.org/publications/standards/Ecma-376.htm -->
- <!-- "Copy these file(s), free of charge" -->
- <property name="ooxml.xsds.ozip" location="${ooxml.lib}/OfficeOpenXML-Part4.zip"/>
- <property name="ooxml.xsds.izip" location="${ooxml.lib}/OfficeOpenXML-XMLSchema.zip"/>
- <property name="ooxml.xsds.url" value="http://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%20Part%204%20(DOCX).zip" />
- <property name="ooxml.xsds.jar" location="${ooxml.lib}/ooxml-schemas.jar"/>
-
<property name="build.site" location="build/tmp/site/build/site"/>
<property name="build.site.src" location="build/tmp/site"/>
<property name="junit.report.dir" location="${build.site}/junit"/>
@@ -163,7 +135,7 @@
<property name="mavendist.poi.dir" location="build/maven-dist/poi"/>
<property name="mavendist.oap.dir" location="build/maven-dist/org.apache.poi"/>
<property name="jar.name" value="poi"/>
- <property name="version.id" value="3.1-beta1"/>
+ <property name="version.id" value="3.1-beta2"/>
<property name="halt.on.test.failure" value="true"/>
<property name="jdk.version.source" value="1.3"
description="JDK version of source code"/>
@@ -195,15 +167,6 @@
<pathelement location="${contrib.output.test.dir}"/>
</path>
- <path id="ooxml.classpath">
- <path refid="main.classpath"/>
- <path refid="scratchpad.classpath"/>
- <fileset dir="${ooxml.lib}">
- <include name="*.jar" />
- </fileset>
- </path>
-
-
<path id="examples.classpath">
<path refid="main.classpath"/>
<pathelement location="${main.output.dir}"/>
@@ -268,15 +231,12 @@
<mkdir dir="${scratchpad.output.dir}"/>
<mkdir dir="${contrib.output.dir}"/>
<mkdir dir="${examples.output.dir}"/>
- <mkdir dir="${ooxml.output.dir}"/>
<mkdir dir="${main.output.test.dir}"/>
<mkdir dir="${contrib.output.test.dir}"/>
<mkdir dir="${scratchpad.output.test.dir}"/>
- <mkdir dir="${ooxml.output.test.dir}"/>
<mkdir dir="${main.reports.test}"/>
<mkdir dir="${scratchpad.reports.test}"/>
<mkdir dir="${contrib.reports.test}"/>
- <mkdir dir="${ooxml.reports.test}"/>
<mkdir dir="${junit.report.dir}"/>
<mkdir dir="${jdepend.report.dir}"/>
<mkdir dir="${jdepend.report.out.dir}"/>
@@ -311,11 +271,6 @@
<available file="${contrib.jar2.dir}"/>
<available file="${contrib.jar3.dir}"/>
<available file="${junit.jar1.dir}"/>
- <available file="${ooxml.jar1.dir}"/>
- <available file="${ooxml.jar2.dir}"/>
- <available file="${ooxml.jar3.dir}"/>
- <available file="${ooxml.jar4.dir}"/>
- <available file="${ooxml.jar5.dir}"/>
</and>
<isset property="disconnected"/>
</or>
@@ -330,67 +285,8 @@
<get src="${contrib.jar2.url}" dest="${contrib.jar2.dir}"/>
<get src="${contrib.jar3.url}" dest="${contrib.jar3.dir}"/>
<get src="${junit.jar1.url}" dest="${junit.jar1.dir}"/>
-
- <get src="${ooxml.jar1.url}" dest="${ooxml.jar1.dir}"/>
- <get src="${ooxml.jar2.url}" dest="${ooxml.jar2.dir}"/>
- <get src="${ooxml.jar3.url}" dest="${ooxml.jar3.dir}"/>
- <get src="${ooxml.jar4.url}" dest="${ooxml.jar4.dir}"/>
- <get src="${ooxml.jar5.url}" dest="${ooxml.jar5.dir}"/>
</target>
- <target name="check-ooxml-xsds">
- <condition property="ooxml-xsds.present">
- <or>
- <and>
- <available file="${ooxml.xsds.izip}"/>
- </and>
- <isset property="disconnected"/>
- </or>
- </condition>
- </target>
- <target name="fetch-ooxml-xsds" unless="ooxml-xsds.present"
- description="Fetches needed OOXML xsd files from the Internet">
- <get src="${ooxml.xsds.url}" dest="${ooxml.xsds.ozip}"/>
- <unzip src="${ooxml.xsds.ozip}" dest="${ooxml.lib}">
- <patternset>
- <include name="OfficeOpenXML-XMLSchema.zip" />
- </patternset>
- </unzip>
- </target>
- <target name="check-compiled-ooxml-xsds">
- <condition property="ooxml-compiled-xsds.present">
- <or>
- <and>
- <available file="${ooxml.xsds.jar}"/>
- </and>
- <isset property="disconnected"/>
- </or>
- </condition>
- </target>
- <target name="compile-ooxml-xsds" unless="ooxml-compiled-xsds.present"
- depends="check-jars,fetch-jars,check-ooxml-xsds,fetch-ooxml-xsds,check-compiled-ooxml-xsds"
- description="Unpacks the OOXML xsd files, and compiles them into XmlBeans">
- <taskdef name="xmlbean"
- classname="org.apache.xmlbeans.impl.tool.XMLBean"
- classpath="${ooxml.jar3.dir}:${ooxml.jar4.dir}" />
-
- <unzip src="${ooxml.xsds.izip}" dest="build/ooxml-xsds/" />
- <!--
- schema="build/ooxml-xsds/"
- schema="build/ooxml-xsds/sml-workbook.xsd"
- -->
- <xmlbean
- schema="build/ooxml-xsds/"
- destfile="${ooxml.xsds.jar}"
- javasource="1.4"
- failonerror="false"
- fork="true"
- memoryMaximumSize="512m"
- >
- <classpath refid="ooxml.classpath"/>
- </xmlbean>
- </target>
-
<target name="compile" depends="init, compile-main, compile-scratchpad,
compile-contrib, compile-examples"
description="Compiles the POI main classes, scratchpad, contrib, and examples"/>
@@ -473,24 +369,6 @@
</javac>
</target>
- <target name="compile-ooxml" depends="init, check-ooxml-xsds, fetch-ooxml-xsds, compile-ooxml-xsds, compile-main">
- <!-- openxml4j requires java 1.5, so so must we, for now -->
- <javac target="1.5" source="1.5"
- destdir="${ooxml.output.dir}" debug="on" srcdir="${ooxml.src}">
- <classpath refid="ooxml.classpath"/>
- </javac>
-
- <javac target="1.5" source="1.5"
- failonerror="true" destdir="${ooxml.output.test.dir}" debug="on"
- fork="yes" srcdir="${ooxml.src.test}">
- <classpath>
- <path refid="ooxml.classpath"/>
- <pathelement location="${ooxml.output.dir}"/>
- <pathelement location="${junit.jar1.dir}"/>
- </classpath>
- </javac>
- </target>
-
<target name="test" depends="test-main,test-scratchpad,test-contrib"
description="Tests main, contrib and scratchpad"/>
@@ -523,6 +401,8 @@
file="${main.src.test}/org/apache/poi/hpsf/data"/>
<sysproperty key="POIFS.testdata.path"
file="${main.src.test}/org/apache/poi/poifs/data"/>
+ <sysproperty key="DDF.testdata.path"
+ file="${main.src.test}/org/apache/poi/ddf/data"/>
<sysproperty key="java.awt.headless" value="true"/>
<formatter type="plain"/>
<formatter type="xml"/>
@@ -725,43 +605,6 @@
<echo file="${contrib.testokfile}" append="false" message="testok"/>
</target>
- <target name="-test-ooxml-check">
- <uptodate property="ooxml.test.notRequired" targetfile="${ooxml.testokfile}">
- <srcfiles dir="${ooxml.src}"/>
- <srcfiles dir="${ooxml.src.test}"/>
- </uptodate>
- </target>
-
- <target name="test-ooxml" depends="compile-main,compile-ooxml,-test-ooxml-check" unless="ooxml.test.notRequired">
- <junit printsummary="yes" fork="no" haltonfailure="${halt.on.test.failure}" failureproperty="ooxml.test.failed">
- <classpath>
- <path refid="ooxml.classpath"/>
- <pathelement location="${main.output.dir}"/>
- <pathelement location="${ooxml.output.dir}"/>
- <pathelement location="${ooxml.output.test.dir}"/>
- <pathelement location="${junit.jar1.dir}"/>
- </classpath>
- <sysproperty key="HSSF.testdata.path" file="${main.src.test}/org/apache/poi/hssf/data"/>
- <sysproperty key="HWPF.testdata.path" file="${scratchpad.src.test}/org/apache/poi/hwpf/data"/>
- <sysproperty key="HSLF.testdata.path" file="${scratchpad.src.test}/org/apache/poi/hslf/data"/>
- <sysproperty key="java.awt.headless" value="true"/>
- <formatter type="plain"/>
- <formatter type="xml"/>
- <batchtest todir="${ooxml.reports.test}">
- <fileset dir="${ooxml.src.test}">
- <include name="**/Test*.java"/>
- <exclude name="**/AllTests.java"/>
- </fileset>
- </batchtest>
- </junit>
- <delete file="${ooxml.testokfile}"/>
- <antcall target="-test-ooxml-write-testfile"/>
- </target>
-
- <target name="-test-ooxml-write-testfile" unless="ooxml.test.failed">
- <echo file="${ooxml.testokfile}" append="false" message="testok"/>
- </target>
-
<target name="-check-docs">
<uptodate property="main.docs.notRequired" targetfile="${build.site}/index.html">
<srcfiles dir="${build.site.src}"/>
@@ -1148,21 +991,6 @@
</manifest>
</jar>
</target>
- <target name="jar-ooxml" depends="compile-ooxml" description="Creates the ooxml jar files for distribution">
- <jar destfile="${dist.dir}/${jar.name}-ooxml-${version.id}-${DSTAMP}.jar">
- <fileset dir="${ooxml.output.dir}" />
- <fileset dir="legal/" />
- <manifest>
- <attribute name="Built-By" value="${user.name}"/>
- <attribute name="Specification-Title" value="Apache POI"/>
- <attribute name="Specification-Version" value="${version.id}-${DSTAMP}"/>
- <attribute name="Specification-Vendor" value="Apache"/>
- <attribute name="Implementation-Title" value="Apache POI"/>
- <attribute name="Implementation-Version" value="${version.id}-${DSTAMP}"/>
- <attribute name="Implementation-Vendor" value="Apache"/>
- </manifest>
- </jar>
- </target>
<target name="dist" depends="clean, fail-unless-tools-are-available, compile, site, jar"
description="Creates the entire distribution into build/dist, from scratch">
@@ -1171,6 +999,7 @@
<zip destfile="${dist.dir}/${jar.name}-bin-${version.id}-${DSTAMP}.zip">
<zipfileset dir="legal/" prefix="${zipdir}" />
+ <zipfileset dir="lib/" prefix="${zipdir}/lib" />
<zipfileset dir="${build.site}" prefix="${zipdir}/docs"/>
<zipfileset file="${dist.dir}/${jar.name}-${version.id}-${DSTAMP}.jar" prefix="${zipdir}" />
<zipfileset file="${dist.dir}/${jar.name}-contrib-${version.id}-${DSTAMP}.jar" prefix="${zipdir}" />
@@ -1193,6 +1022,7 @@
<tar destfile="${dist.dir}/${jar.name}-bin-${version.id}-${DSTAMP}.tar.gz"
compression="gzip">
<tarfileset dir="legal/" prefix="${zipdir}" />
+ <tarfileset dir="lib/" prefix="${zipdir}/lib" />
<tarfileset dir="${build.site}" prefix="${zipdir}/docs"/>
<tarfileset file="${dist.dir}/${jar.name}-${version.id}-${DSTAMP}.jar" prefix="${zipdir}" />
<tarfileset file="${dist.dir}/${jar.name}-contrib-${version.id}-${DSTAMP}.jar" prefix="${zipdir}" />
Modified: poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/changes.xml?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/changes.xml (original)
+++ poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/changes.xml Mon May 5 07:20:39 2008
@@ -36,7 +36,17 @@
</devs>
<!-- Don't forget to update status.xml too! -->
- <release version="3.1-beta1" date="2008-04-??">
+ <release version="3.1-beta2" date="2008-05-??">
+ <action dev="POI-DEVELOPERS" type="fix">44929 - Improved error handling in HSSFWorkbook when attempting to read a BIFF5 file</action>
+ <action dev="POI-DEVELOPERS" type="fix">44675 - Parameter operand classes (function metadata) required to encode SUM() etc properly. Added parse validation for number of parameters</action>
+ <action dev="POI-DEVELOPERS" type="fix">44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*)</action>
+ <action dev="POI-DEVELOPERS" type="fix">44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN"</action>
+ <action dev="POI-DEVELOPERS" type="fix">44892 - made HSSFWorkbook.getSheet(String) case insensitive</action>
+ <action dev="POI-DEVELOPERS" type="fix">44886] - Correctly process PICT metafile in EscherMetafileBlip</action>
+ <action dev="POI-DEVELOPERS" type="fix">44893 - Take into account indentation in HSSFSheet.autoSizeColumn</action>
+ </release>
+ <release version="3.1-beta1" date="2008-04-28">
+ <action dev="POI-DEVELOPERS" type="fix">44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect</action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Support for getting embedded sounds from slide show </action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Initial support for rendering slides into images</action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Support for getting OLE object data from slide show </action>
Modified: poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/index.xml
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/index.xml?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/index.xml (original)
+++ poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/index.xml Mon May 5 07:20:39 2008
@@ -31,6 +31,23 @@
</header>
<body>
+ <section><title>POI 3.1-BETA1 Released (2008-04028)</title>
+ <p>
+ The POI team is pleased to announce the release of 3.1 BETA1 which is one of the final steps before 3.1 FINAL.
+ The status of this release is a beta, meaning that we encourage users to try it out.
+ If you find any bugs, please report them to the POI <link href="https://issues.apache.org/bugzilla/buglist.cgi?product=POI">bug database</link> or to
+ the <link href="./mailinglists.html">POI Developer List</link>.
+ </p><p> A full list of changes is available in
+ <link href="./changes.html">the changelog</link>, and
+ <link href="http://www.apache.org/dyn/closer.cgi/poi/dev/">download</link>
+ the source and binaries from your
+ <link href="http://www.apache.org/dyn/closer.cgi/poi/dev/">local mirror</link>.
+ </p>
+ <p>
+ The release is also available from the central Maven repository
+ under Group ID "org.apache.poi" and Version "3.1-beta1".
+ </p>
+ </section>
<section><title>POI 3.0.2 Released</title>
<p>The POI team is pleased to announce POI 3.0.2, the latest release of Apache POI.
There have been many important bug fixes since the 3.0.1 release and a lot of new features. A full list of changes is available in
Modified: poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/status.xml?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/status.xml (original)
+++ poi/tags/REL_3_1_BETA2/src/documentation/content/xdocs/status.xml Mon May 5 07:20:39 2008
@@ -33,7 +33,17 @@
<!-- Don't forget to update changes.xml too! -->
<changes>
- <release version="3.1-beta1" date="2008-04-??">
+ <release version="3.1-beta2" date="2008-05-??">
+ <action dev="POI-DEVELOPERS" type="fix">44929 - Improved error handling in HSSFWorkbook when attempting to read a BIFF5 file</action>
+ <action dev="POI-DEVELOPERS" type="fix">44675 - Parameter operand classes (function metadata) required to encode SUM() etc properly. Added parse validation for number of parameters</action>
+ <action dev="POI-DEVELOPERS" type="fix">44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*)</action>
+ <action dev="POI-DEVELOPERS" type="fix">44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN"</action>
+ <action dev="POI-DEVELOPERS" type="fix">44892 - made HSSFWorkbook.getSheet(String) case insensitive</action>
+ <action dev="POI-DEVELOPERS" type="fix">44886] - Correctly process PICT metafile in EscherMetafileBlip</action>
+ <action dev="POI-DEVELOPERS" type="fix">44893 - Take into account indentation in HSSFSheet.autoSizeColumn</action>
+ </release>
+ <release version="3.1-beta1" date="2008-04-28">
+ <action dev="POI-DEVELOPERS" type="fix">44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect</action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Support for getting embedded sounds from slide show </action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Initial support for rendering slides into images</action>
<action dev="POI-DEVELOPERS" type="add">HSLF: Support for getting OLE object data from slide show </action>
Modified: poi/tags/REL_3_1_BETA2/src/documentation/release-guide.txt
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/documentation/release-guide.txt?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/documentation/release-guide.txt (original)
+++ poi/tags/REL_3_1_BETA2/src/documentation/release-guide.txt Mon May 5 07:20:39 2008
@@ -19,7 +19,11 @@
POI 3.0.2 and 3.1 were built using Ant 1.6.2 and Forrest 0.5
(II) Making release artefacts
- 1. Update version id in build.xml.
+ 1. Update version id in build.xml
+{code:xml}
+ <property name="version.id" value="3.1-beta1"/>
+{code}
+
2. Tag current version. Include the current revision number in the comment
{code}
@@ -46,7 +50,7 @@
5. Start a new section in sites.xml and status.xml.
- 6. Build as if the vote had passed. The buid date must be +7 days from current.
+ 6. Build as if the vote had passed. The build date must be +7 days from current.
{code}
ant build
{code}
@@ -109,27 +113,68 @@
1. Go to ~/POI-3.1-BETA1
+zap previous version first.
+
+{code}
cd ~/POI-3.1-BETA1/main
+{code}
BETA and ALPHA releases:
+
+{code}
cp *-src-* /www/www.apache.org/dist/poi/dev/src
cp *-bin-* /www/www.apache.org/dist/poi/dev/bin
+{code}
FINAL release:
+{code}
cp *-src-* /www/www.apache.org/dist/poi/release/src
cp *-bin-* /www/www.apache.org/dist/poi/release/bin
+{code}
+{code}
cd ~/POI-3.1-BETA1/maven
-
cp -r org.apache.poi /www/people.apache.org/repo/m1-ibiblio-rsync-repository/
cp -r poi/poms /www/people.apache.org/repo/m1-ibiblio-rsync-repository/poi
-
+{code}
2. Make sure that the files are owned by the unix group apcvs and that they are writable by this group.
3. Wait for the distributions to appear on your favourite mirror
-4. Send announcements:
+4. test maven
+create a simple project and make sure the release artifacts are accessible by maven:
+
+{code}
+$ mvn archetype:create -DgroupId=org.apache.poi.scratchpad -DartifactId=maven-test
+cd maven-test
+{code}
+edit pom.xml and add the release artefacts to the project dependencies:
+
+{code:xml}
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>3.1-beta1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ <version>3.1-beta1</version>
+ </dependency>
+{code}
+
+{code}
+mvn compile
+{code}
+
+You should see [INFO] BUILD SUCCESSFUL in the end.
+
+5. Don't forget to upload the latest version of the site and javadocs
+
+6. Send announcements:
- to poi-user and poi-dev lists
- - send announcements to announcement@apache.org, announcements@jakarta.apache.org
+ - to announcement@apache.org, announcements@jakarta.apache.org
+
+Note, announcements should be sent from your @apache.org e-mail address.
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherDggRecord.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherDggRecord.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherDggRecord.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherDggRecord.java Mon May 5 07:20:39 2008
@@ -38,6 +38,7 @@
private int field_3_numShapesSaved;
private int field_4_drawingsSaved;
private FileIdCluster[] field_5_fileIdClusters;
+ private int maxDgId;
public static class FileIdCluster
{
@@ -87,6 +88,7 @@
for (int i = 0; i < field_5_fileIdClusters.length; i++)
{
field_5_fileIdClusters[i] = new FileIdCluster(LittleEndian.getInt( data, pos + size ), LittleEndian.getInt( data, pos + size + 4 ));
+ maxDgId = Math.max(maxDgId, field_5_fileIdClusters[i].getDrawingGroupId());
size += 8;
}
bytesRemaining -= size;
@@ -229,7 +231,14 @@
this.field_4_drawingsSaved = field_4_drawingsSaved;
}
- public FileIdCluster[] getFileIdClusters()
+ /**
+ * @return The maximum drawing group ID
+ */
+ public int getMaxDrawingGroupId(){
+ return maxDgId;
+ }
+
+ public FileIdCluster[] getFileIdClusters()
{
return field_5_fileIdClusters;
}
@@ -241,9 +250,22 @@
public void addCluster( int dgId, int numShapedUsed )
{
+ addCluster(dgId, numShapedUsed, true);
+ }
+
+ /**
+ * Add a new cluster
+ *
+ * @param dgId id of the drawing group (stored in the record options)
+ * @param numShapedUsed initial value of the numShapedUsed field
+ * @param sort if true then sort clusters by drawing group id.(
+ * In Excel the clusters are sorted but in PPT they are not)
+ */
+ public void addCluster( int dgId, int numShapedUsed, boolean sort )
+ {
List clusters = new ArrayList(Arrays.asList(field_5_fileIdClusters));
clusters.add(new FileIdCluster(dgId, numShapedUsed));
- Collections.sort(clusters, new Comparator()
+ if(sort) Collections.sort(clusters, new Comparator()
{
public int compare( Object o1, Object o2 )
{
@@ -257,6 +279,7 @@
return +1;
}
} );
+ maxDgId = Math.min(maxDgId, dgId);
field_5_fileIdClusters = (FileIdCluster[]) clusters.toArray( new FileIdCluster[clusters.size()] );
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherMetafileBlip.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherMetafileBlip.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherMetafileBlip.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/ddf/EscherMetafileBlip.java Mon May 5 07:20:39 2008
@@ -41,9 +41,20 @@
public static final short RECORD_ID_WMF = (short) 0xF018 + 3;
public static final short RECORD_ID_PICT = (short) 0xF018 + 4;
+ /**
+ * BLIP signatures as defined in the escher spec
+ */
+ public static final short SIGNATURE_EMF = 0x3D40;
+ public static final short SIGNATURE_WMF = 0x2160;
+ public static final short SIGNATURE_PICT = 0x5420;
+
private static final int HEADER_SIZE = 8;
private byte[] field_1_UID;
+ /**
+ * The primary UID is only saved to disk if (blip_instance ^ blip_signature == 1)
+ */
+ private byte[] field_2_UID;
private int field_2_cb;
private int field_3_rcBounds_x1;
private int field_3_rcBounds_y1;
@@ -72,6 +83,12 @@
field_1_UID = new byte[16];
System.arraycopy( data, pos, field_1_UID, 0, 16 ); pos += 16;
+
+ if((getOptions() ^ getSignature()) == 0x10){
+ field_2_UID = new byte[16];
+ System.arraycopy( data, pos, field_2_UID, 0, 16 ); pos += 16;
+ }
+
field_2_cb = LittleEndian.getInt( data, pos ); pos += 4;
field_3_rcBounds_x1 = LittleEndian.getInt( data, pos ); pos += 4;
field_3_rcBounds_y1 = LittleEndian.getInt( data, pos ); pos += 4;
@@ -118,9 +135,12 @@
int pos = offset;
LittleEndian.putShort( data, pos, getOptions() ); pos += 2;
LittleEndian.putShort( data, pos, getRecordId() ); pos += 2;
- LittleEndian.putInt( data, getRecordSize() - HEADER_SIZE ); pos += 4;
+ LittleEndian.putInt( data, pos, getRecordSize() - HEADER_SIZE ); pos += 4;
- System.arraycopy( field_1_UID, 0, data, pos, 16 ); pos += 16;
+ System.arraycopy( field_1_UID, 0, data, pos, field_1_UID.length ); pos += field_1_UID.length;
+ if((getOptions() ^ getSignature()) == 0x10){
+ System.arraycopy( field_2_UID, 0, data, pos, field_2_UID.length ); pos += field_2_UID.length;
+ }
LittleEndian.putInt( data, pos, field_2_cb ); pos += 4;
LittleEndian.putInt( data, pos, field_3_rcBounds_x1 ); pos += 4;
LittleEndian.putInt( data, pos, field_3_rcBounds_y1 ); pos += 4;
@@ -135,7 +155,7 @@
System.arraycopy( raw_pictureData, 0, data, pos, raw_pictureData.length );
listener.afterRecordSerialize(offset + getRecordSize(), getRecordId(), getRecordSize(), this);
- return HEADER_SIZE + 16 + 1 + raw_pictureData.length;
+ return getRecordSize();
}
/**
@@ -161,7 +181,7 @@
}
catch ( IOException e )
{
- log.log(POILogger.INFO, "Possibly corrupt compression or non-compressed data", e);
+ log.log(POILogger.WARN, "Possibly corrupt compression or non-compressed data", e);
return data;
}
}
@@ -173,7 +193,11 @@
*/
public int getRecordSize()
{
- return 8 + 50 + raw_pictureData.length;
+ int size = 8 + 50 + raw_pictureData.length;
+ if((getOptions() ^ getSignature()) == 0x10){
+ size += field_2_UID.length;
+ }
+ return size;
}
public byte[] getUID()
@@ -186,6 +210,16 @@
this.field_1_UID = field_1_UID;
}
+ public byte[] getPrimaryUID()
+ {
+ return field_2_UID;
+ }
+
+ public void setPrimaryUID( byte[] field_2_UID )
+ {
+ this.field_2_UID = field_2_UID;
+ }
+
public int getUncompressedSize()
{
return field_2_cb;
@@ -264,6 +298,7 @@
" RecordId: 0x" + HexDump.toHex( getRecordId() ) + nl +
" Options: 0x" + HexDump.toHex( getOptions() ) + nl +
" UID: 0x" + HexDump.toHex( field_1_UID ) + nl +
+ (field_2_UID == null ? "" : (" UID2: 0x" + HexDump.toHex( field_2_UID ) + nl)) +
" Uncompressed Size: " + HexDump.toHex( field_2_cb ) + nl +
" Bounds: " + getBounds() + nl +
" Size in EMU: " + getSizeEMU() + nl +
@@ -273,4 +308,19 @@
" Extra Data:" + nl + extraData;
}
+ /**
+ * Return the blip signature
+ *
+ * @return the blip signature
+ */
+ public short getSignature(){
+ short sig = 0;
+ switch(getRecordId()){
+ case RECORD_ID_EMF: sig = SIGNATURE_EMF; break;
+ case RECORD_ID_WMF: sig = SIGNATURE_WMF; break;
+ case RECORD_ID_PICT: sig = SIGNATURE_PICT; break;
+ default: log.log(POILogger.WARN, "Unknown metafile: " + getRecordId()); break;
+ }
+ return sig;
+ }
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/FormulaParser.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/FormulaParser.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/FormulaParser.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/FormulaParser.java Mon May 5 07:20:39 2008
@@ -380,12 +380,13 @@
} else {
isVarArgs = !fm.hasFixedArgsLength();
funcIx = fm.getIndex();
+ validateNumArgs(numArgs, fm);
}
AbstractFunctionPtg retval;
if(isVarArgs) {
retval = new FuncVarPtg(name, (byte)numArgs);
} else {
- retval = new FuncPtg(funcIx, (byte)numArgs);
+ retval = new FuncPtg(funcIx);
}
if (!name.equals(AbstractFunctionPtg.FUNCTION_NAME_IF)) {
// early return for everything else besides IF()
@@ -447,6 +448,29 @@
return retval;
}
+ private void validateNumArgs(int numArgs, FunctionMetadata fm) {
+ if(numArgs < fm.getMinParams()) {
+ String msg = "Too few arguments to function '" + fm.getName() + "'. ";
+ if(fm.hasFixedArgsLength()) {
+ msg += "Expected " + fm.getMinParams();
+ } else {
+ msg += "At least " + fm.getMinParams() + " were expected";
+ }
+ msg += " but got " + numArgs + ".";
+ throw new FormulaParseException(msg);
+ }
+ if(numArgs > fm.getMaxParams()) {
+ String msg = "Too many arguments to function '" + fm.getName() + "'. ";
+ if(fm.hasFixedArgsLength()) {
+ msg += "Expected " + fm.getMaxParams();
+ } else {
+ msg += "At most " + fm.getMaxParams() + " were expected";
+ }
+ msg += " but got " + numArgs + ".";
+ throw new FormulaParseException(msg);
+ }
+ }
+
private static boolean isArgumentDelimiter(char ch) {
return ch == ',' || ch == ')';
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/Workbook.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/Workbook.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/Workbook.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/model/Workbook.java Mon May 5 07:20:39 2008
@@ -476,9 +476,9 @@
}
/**
- * Determines whether a workbook contains the privided sheet name.
+ * Determines whether a workbook contains the provided sheet name.
*
- * @param name the name to test
+ * @param name the name to test (case insensitive match)
* @param excludeSheetIdx the sheet to exclude from the check or -1 to include all sheets in the check.
* @return true if the sheet contains the name, false otherwise.
*/
@@ -487,7 +487,7 @@
for ( int i = 0; i < boundsheets.size(); i++ )
{
BoundSheetRecord boundSheetRecord = (BoundSheetRecord) boundsheets.get( i );
- if (excludeSheetIdx != i && name.equals(boundSheetRecord.getSheetname()))
+ if (excludeSheetIdx != i && name.equalsIgnoreCase(boundSheetRecord.getSheetname()))
return true;
}
return false;
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java Mon May 5 07:20:39 2008
@@ -1,4 +1,3 @@
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,13 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-/*
- * ColumnInfoRecord.java
- *
- * Created on December 8, 2001, 8:44 AM
- */
package org.apache.poi.hssf.record;
import org.apache.poi.util.LittleEndian;
@@ -29,29 +22,28 @@
import org.apache.poi.util.BitFieldFactory;
/**
- * Title: ColumnInfo Record<P>
- * Description: Defines with width and formatting for a range of columns<P>
- * REFERENCE: PG 293 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
+ * Title: COLINFO Record<p/>
+ * Description: Defines with width and formatting for a range of columns<p/>
+ * REFERENCE: PG 293 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<p/>
* @author Andrew C. Oliver (acoliver at apache dot org)
* @version 2.0-pre
*/
-
-public class ColumnInfoRecord
- extends Record
-{
+public final class ColumnInfoRecord extends Record {
public static final short sid = 0x7d;
private short field_1_first_col;
private short field_2_last_col;
private short field_3_col_width;
private short field_4_xf_index;
private short field_5_options;
- static final private BitField hidden = BitFieldFactory.getInstance(0x01);
- static final private BitField outlevel = BitFieldFactory.getInstance(0x0700);
- static final private BitField collapsed = BitFieldFactory.getInstance(0x1000);
+ private static final BitField hidden = BitFieldFactory.getInstance(0x01);
+ private static final BitField outlevel = BitFieldFactory.getInstance(0x0700);
+ private static final BitField collapsed = BitFieldFactory.getInstance(0x1000);
+ // Excel seems write values 2, 10, and 260, even though spec says "must be zero"
private short field_6_reserved;
public ColumnInfoRecord()
{
+ field_6_reserved = 2; // seems to be the most common value
}
/**
@@ -71,7 +63,18 @@
field_3_col_width = in.readShort();
field_4_xf_index = in.readShort();
field_5_options = in.readShort();
- field_6_reserved = in.readShort();
+ switch(in.remaining()) {
+ case 2: // usual case
+ field_6_reserved = in.readShort();
+ break;
+ case 1:
+ // often COLINFO gets encoded 1 byte short
+ // shouldn't matter because this field is unused
+ field_6_reserved = in.readByte();
+ break;
+ default:
+ throw new RuntimeException("Unusual record size remaining=(" + in.remaining() + ")");
+ }
}
protected void validateSid(short id)
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FileSharingRecord.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FileSharingRecord.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FileSharingRecord.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FileSharingRecord.java Mon May 5 07:20:39 2008
@@ -14,31 +14,26 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.record;
import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.POILogFactory;
-import org.apache.poi.util.POILogger;
import org.apache.poi.util.StringUtil;
/**
- * Title: FileSharing<P>
+ * Title: FILESHARING<P>
* Description: stores the encrypted readonly for a workbook (write protect)
- * REFERENCE: PG 314 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
+ * This functionality is accessed from the options dialog box available when performing 'Save As'.<p/>
+ * REFERENCE: PG 314 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<p/>
* @author Andrew C. Oliver (acoliver at apache dot org)
*/
+public final class FileSharingRecord extends Record {
-public class FileSharingRecord extends Record {
- private static POILogger logger = POILogFactory.getLogger(FileSharingRecord.class);
-
public final static short sid = 0x5b;
private short field_1_readonly;
private short field_2_password;
- private byte field_3_username_length;
- private short field_4_unknown; // not documented
- private String field_5_username;
+ private byte field_3_username_unicode_options;
+ private String field_3_username_value;
public FileSharingRecord() {}
@@ -61,23 +56,15 @@
protected void fillFields(RecordInputStream in) {
field_1_readonly = in.readShort();
field_2_password = in.readShort();
- field_3_username_length = in.readByte();
- // Is this really correct? The latest docs
- // seem to hint there's nothing between the
- // username length and the username string
- field_4_unknown = in.readShort();
+ int nameLen = in.readShort();
- // Ensure we don't try to read more data than
- // there actually is
- if(field_3_username_length > in.remaining()) {
- logger.log(POILogger.WARN, "FileSharingRecord defined a username of length " + field_3_username_length + ", but only " + in.remaining() + " bytes were left, truncating");
- field_3_username_length = (byte)in.remaining();
- }
- if(field_3_username_length > 0) {
- field_5_username = in.readCompressedUnicode(field_3_username_length);
+ if(nameLen > 0) {
+ // TODO - Current examples(3) from junits only have zero length username.
+ field_3_username_unicode_options = in.readByte();
+ field_3_username_value = in.readCompressedUnicode(nameLen);
} else {
- field_5_username = "";
+ field_3_username_value = "";
}
}
@@ -135,45 +122,24 @@
/**
* @returns byte representing the length of the username field
*/
- public byte getUsernameLength() {
- return field_3_username_length ;
- }
-
- /**
- * @param byte representing the length of the username field
- */
- public void setUsernameLength(byte length) {
- this.field_3_username_length = length;
+ public short getUsernameLength() {
+ return (short) field_3_username_value.length();
}
/**
* @returns username of the user that created the file
*/
public String getUsername() {
- return this.field_5_username;
+ return field_3_username_value;
}
/**
* @param username of the user that created the file
*/
public void setUsername(String username) {
- this.field_5_username = username;
- this.field_3_username_length = (byte)username.length();
- }
-
- /**
- * @return short value of a "bonus field" in Excel that was not doc'd
- */
- public short getUnknown() {
- return field_4_unknown;
+ field_3_username_value = username;
}
- /**
- * @param unknown field value to set (bonus field that is not doc'd)
- */
- public void setUnknown(short unk) {
- field_4_unknown = unk;
- }
public String toString() {
StringBuffer buffer = new StringBuffer();
@@ -183,10 +149,6 @@
.append(getReadOnly() == 1 ? "true" : "false").append("\n");
buffer.append(" .password = ")
.append(Integer.toHexString(getPassword())).append("\n");
- buffer.append(" .userlen = ")
- .append(Integer.toHexString(getUsernameLength())).append("\n");
- buffer.append(" .unknown = ")
- .append(Integer.toHexString(getUnknown())).append("\n");
buffer.append(" .username = ")
.append(getUsername()).append("\n");
buffer.append("[/FILESHARING]\n");
@@ -194,18 +156,25 @@
}
public int serialize(int offset, byte [] data) {
+ // TODO - junit
LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset, (short)(getRecordSize()-4));
LittleEndian.putShort(data, 4 + offset, getReadOnly());
LittleEndian.putShort(data, 6 + offset, getPassword());
- data[ 8 + offset ] = getUsernameLength();
- LittleEndian.putShort(data, 9 + offset, getUnknown());
- StringUtil.putCompressedUnicode( getUsername(), data, 11 + offset );
+ LittleEndian.putShort(data, 8 + offset, getUsernameLength());
+ if(getUsernameLength() > 0) {
+ LittleEndian.putByte(data, 10 + offset, field_3_username_unicode_options);
+ StringUtil.putCompressedUnicode( getUsername(), data, 11 + offset );
+ }
return getRecordSize();
}
public int getRecordSize() {
- return 11+getUsernameLength();
+ short nameLen = getUsernameLength();
+ if (nameLen < 1) {
+ return 10;
+ }
+ return 11+nameLen;
}
public short getSid() {
@@ -219,10 +188,7 @@
FileSharingRecord clone = new FileSharingRecord();
clone.setReadOnly(field_1_readonly);
clone.setPassword(field_2_password);
- clone.setUsernameLength(field_3_username_length);
- clone.setUnknown(field_4_unknown);
- clone.setUsername(field_5_username);
+ clone.setUsername(field_3_username_value);
return clone;
}
-
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FormulaRecord.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FormulaRecord.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FormulaRecord.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/FormulaRecord.java Mon May 5 07:20:39 2008
@@ -40,7 +40,7 @@
* @version 2.0-pre
*/
-public class FormulaRecord
+public final class FormulaRecord
extends Record
implements CellValueRecordInterface, Comparable
{
@@ -108,6 +108,11 @@
} catch (java.lang.UnsupportedOperationException uoe) {
throw new RecordFormatException(uoe);
}
+ if (in.remaining() == 10) {
+ // TODO - this seems to occur when IntersectionPtg is present
+ // 10 extra bytes are just 0x01 and 0x00
+ // This causes POI stderr: "WARN. Unread 10 bytes of record 0x6"
+ }
}
//public void setRow(short row)
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/SharedFormulaRecord.java Mon May 5 07:20:39 2008
@@ -33,7 +33,7 @@
* @author Danny Mui at apache dot org
*/
public final class SharedFormulaRecord extends Record {
- public final static short sid = 0x4BC;
+ public final static short sid = 0x4BC;
private int field_1_first_row;
private int field_2_last_row;
@@ -186,6 +186,16 @@
* counter part
*/
protected static Stack convertSharedFormulas(Stack ptgs, int formulaRow, int formulaColumn) {
+ if(false) {
+ /*
+ * TODO - (May-2008) Stop converting relative ref Ptgs in shared formula records.
+ * If/when POI writes out the workbook, this conversion makes an unnecessary diff in the BIFF records.
+ * Disabling this code breaks one existing junit.
+ * Some fix-up will be required to make Ptg.toFormulaString(HSSFWorkbook) work properly.
+ * That method will need 2 extra params: rowIx and colIx.
+ */
+ return ptgs;
+ }
Stack newPtgStack = new Stack();
if (ptgs != null)
@@ -265,7 +275,7 @@
throw new RuntimeException("Shared Formula Conversion: Coding Error");
}
}
-
+
private static int fixupRelativeColumn(int currentcolumn, int column, boolean relative) {
if(relative) {
// mask out upper bits to produce 'wrapping' at column 256 ("IV")
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AbstractFunctionPtg.java Mon May 5 07:20:39 2008
@@ -147,10 +147,12 @@
}
public byte getParameterClass(int index) {
- try {
- return paramClass[index];
- } catch (ArrayIndexOutOfBoundsException aioobe) {
+ if (index >= paramClass.length) {
+ // For var-arg (and other?) functions, the metadata does not list all the parameter
+ // operand classes. In these cases, all extra parameters are assumed to have the
+ // same operand class as the last one specified.
return paramClass[paramClass.length - 1];
}
+ return paramClass[index];
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNAPtg.java Mon May 5 07:20:39 2008
@@ -1,4 +1,3 @@
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,9 @@
limitations under the License.
==================================================================== */
-/*
- * AreaPtg.java
- *
- * Created on November 17, 2001, 9:30 PM
- */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;
-
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.hssf.util.AreaReference;
-import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
@@ -36,8 +25,7 @@
* @author Jason Height (jheight at chariot dot net dot au)
*/
-public class AreaNAPtg
- extends AreaPtg
+public final class AreaNAPtg extends AreaPtg
{
public final static short sid = 0x6D;
@@ -50,20 +38,16 @@
super(in);
}
- public void writeBytes(byte [] array, int offset) {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
- }
-
public String getAreaPtgName() {
return "AreaNAPtg";
}
public String toFormulaString(HSSFWorkbook book)
{
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
public Object clone() {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNPtg.java Mon May 5 07:20:39 2008
@@ -36,8 +36,7 @@
* @author Jason Height (jheight at chariot dot net dot au)
*/
-public class AreaNPtg
- extends AreaPtg
+public final class AreaNPtg extends AreaPtg
{
public final static short sid = 0x2D;
@@ -50,23 +49,16 @@
super(in);
}
- public void writeBytes(byte [] array, int offset) {
- super.writeBytes(array,offset);
- //this should be a warning...there doesn't seem to be any rationale to throwing an exception here...
- //this excpeiton appears to break user defined named ranges...
- //throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
- }
-
public String getAreaPtgName() {
return "AreaNPtg";
}
public String toFormulaString(HSSFWorkbook book)
{
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
public Object clone() {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaNVPtg.java Mon May 5 07:20:39 2008
@@ -1,4 +1,3 @@
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,9 @@
limitations under the License.
==================================================================== */
-/*
- * AreaPtg.java
- *
- * Created on November 17, 2001, 9:30 PM
- */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;
-
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.hssf.util.AreaReference;
-import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
@@ -36,10 +25,7 @@
* @author andy
* @author Jason Height (jheight at chariot dot net dot au)
*/
-
-public class AreaNVPtg
- extends AreaPtg
-{
+public final class AreaNVPtg extends AreaPtg {
public final static short sid = 0x4D;
protected AreaNVPtg() {
@@ -51,20 +37,16 @@
super(in);
}
- public void writeBytes(byte [] array, int offset) {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
- }
-
public String getAreaPtgName() {
return "AreaNVPtg";
}
public String toFormulaString(HSSFWorkbook book)
{
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
public Object clone() {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java Mon May 5 07:20:39 2008
@@ -15,7 +15,6 @@
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.record.formula;
import org.apache.poi.util.LittleEndian;
@@ -32,10 +31,15 @@
* @author andy
* @author Jason Height (jheight at chariot dot net dot au)
*/
+public class AreaPtg extends Ptg implements AreaI {
+ /**
+ * TODO - (May-2008) fix subclasses of AreaPtg 'AreaN~' which are used in shared formulas.
+ * see similar comment in ReferencePtg
+ */
+ protected final RuntimeException notImplemented() {
+ return new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ }
-public class AreaPtg
- extends Ptg implements AreaI
-{
public final static short sid = 0x25;
private final static int SIZE = 9;
/** zero based, unsigned 16 bit */
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncPtg.java Mon May 5 07:20:39 2008
@@ -57,10 +57,12 @@
}
numParams = fm.getMinParams();
}
- public FuncPtg(int functionIndex, int numberOfParameters) {
+ public FuncPtg(int functionIndex) {
field_2_fnc_index = (short) functionIndex;
- numParams = numberOfParameters;
- paramClass = new byte[] { Ptg.CLASS_VALUE, }; // TODO
+ FunctionMetadata fm = FunctionMetadataRegistry.getFunctionByIndex(functionIndex);
+ numParams = fm.getMinParams(); // same as max since these are not var-arg funcs
+ returnClass = fm.getReturnClassCode();
+ paramClass = fm.getParameterClassCodes();
}
public void writeBytes(byte[] array, int offset) {
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java Mon May 5 07:20:39 2008
@@ -54,8 +54,8 @@
returnClass = Ptg.CLASS_VALUE;
paramClass = new byte[] {Ptg.CLASS_VALUE};
} else {
- returnClass = Ptg.CLASS_VALUE;
- paramClass = new byte[] {Ptg.CLASS_VALUE};
+ returnClass = fm.getReturnClassCode();
+ paramClass = fm.getParameterClassCodes();
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/Ptg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/Ptg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/Ptg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/Ptg.java Mon May 5 07:20:39 2008
@@ -30,24 +30,23 @@
* @author avik
* @author Jason Height (jheight at chariot dot net dot au)
*/
-
public abstract class Ptg
{
-
+
/* convert infix order ptg list to rpn order ptg list
* @return List ptgs in RPN order
* @param infixPtgs List of ptgs in infix order
*/
-
+
/* DO NOT REMOVE
*we keep this method in case we wish to change the way we parse
*It needs a getPrecedence in OperationsPtg
-
+
public static List ptgsToRpn(List infixPtgs) {
java.util.Stack operands = new java.util.Stack();
java.util.List retval = new java.util.Stack();
-
+
java.util.ListIterator i = infixPtgs.listIterator();
Object p;
OperationPtg o ;
@@ -61,13 +60,13 @@
weHaveABracket = true;
} else {
o = (OperationPtg) operands.pop();
- while (!(o instanceof ParenthesisPtg)) {
+ while (!(o instanceof ParenthesisPtg)) {
retval.add(o);
}
weHaveABracket = false;
}
} else {
-
+
while (!operands.isEmpty() && ((OperationPtg) operands.peek()).getPrecedence() >= ((OperationPtg) p).getPrecedence() ) { //TODO handle ^ since it is right associative
retval.add(operands.pop());
}
@@ -82,12 +81,16 @@
//throw some error
} else {
retval.add(operands.pop());
- }
+ }
}
return retval;
}
*/
+ /**
+ * Reads <tt>size</tt> bytes of the input stream, to create an array of <tt>Ptg</tt>s.
+ * Extra data (beyond <tt>size</tt>) may be read if and <tt>ArrayPtg</tt>s are present.
+ */
public static Stack createParsedExpressionTokens(short size, RecordInputStream in )
{
Stack stack = new Stack();
@@ -97,22 +100,25 @@
{
Ptg ptg = Ptg.createPtg( in );
if (ptg instanceof ArrayPtg) {
- if (arrayPtgs == null)
- arrayPtgs = new ArrayList(5);
- arrayPtgs.add(ptg);
- pos += 8;
+ if (arrayPtgs == null)
+ arrayPtgs = new ArrayList(5);
+ arrayPtgs.add(ptg);
+ pos += 8;
} else pos += ptg.getSize();
stack.push( ptg );
}
+ if(pos != size) {
+ throw new RuntimeException("Ptg array size mismatch");
+ }
if (arrayPtgs != null) {
- for (int i=0;i<arrayPtgs.size();i++) {
- ArrayPtg p = (ArrayPtg)arrayPtgs.get(i);
- p.readTokenValues(in);
- }
+ for (int i=0;i<arrayPtgs.size();i++) {
+ ArrayPtg p = (ArrayPtg)arrayPtgs.get(i);
+ p.readTokenValues(in);
+ }
}
return stack;
}
-
+
public static Ptg createPtg(RecordInputStream in)
{
byte id = in.readByte();
@@ -123,142 +129,142 @@
case ExpPtg.sid : // 0x01
retval = new ExpPtg(in);
break;
-
+
case AddPtg.sid : // 0x03
retval = new AddPtg(in);
break;
-
+
case SubtractPtg.sid : // 0x04
retval = new SubtractPtg(in);
break;
-
+
case MultiplyPtg.sid : // 0x05
retval = new MultiplyPtg(in);
break;
-
+
case DividePtg.sid : // 0x06
- retval = new DividePtg(in);
- break;
-
+ retval = new DividePtg(in);
+ break;
+
case PowerPtg.sid : // 0x07
retval = new PowerPtg(in);
break;
-
+
case ConcatPtg.sid : // 0x08
retval = new ConcatPtg(in);
- break;
-
+ break;
+
case LessThanPtg.sid: // 0x09
retval = new LessThanPtg(in);
- break;
-
+ break;
+
case LessEqualPtg.sid : // 0x0a
retval = new LessEqualPtg(in);
- break;
-
+ break;
+
case EqualPtg.sid : // 0x0b
retval = new EqualPtg(in);
- break;
-
+ break;
+
case GreaterEqualPtg.sid : // 0x0c
retval = new GreaterEqualPtg(in);
- break;
-
+ break;
+
case GreaterThanPtg.sid : // 0x0d
retval = new GreaterThanPtg(in);
- break;
-
+ break;
+
case NotEqualPtg.sid : // 0x0e
retval = new NotEqualPtg(in);
- break;
-
+ break;
+
case IntersectionPtg.sid : // 0x0f
retval = new IntersectionPtg(in);
- break;
+ break;
case UnionPtg.sid : // 0x10
retval = new UnionPtg(in);
- break;
-
+ break;
+
case RangePtg.sid : // 0x11
retval = new RangePtg(in);
- break;
-
+ break;
+
case UnaryPlusPtg.sid : // 0x12
retval = new UnaryPlusPtg(in);
- break;
-
+ break;
+
case UnaryMinusPtg.sid : // 0x13
retval = new UnaryMinusPtg(in);
- break;
-
+ break;
+
case PercentPtg.sid : // 0x14
retval = new PercentPtg(in);
- break;
-
+ break;
+
case ParenthesisPtg.sid : // 0x15
retval = new ParenthesisPtg(in);
- break;
-
+ break;
+
case MissingArgPtg.sid : // 0x16
retval = new MissingArgPtg(in);
- break;
-
+ break;
+
case StringPtg.sid : // 0x17
retval = new StringPtg(in);
break;
-
+
case AttrPtg.sid : // 0x19
case 0x1a :
retval = new AttrPtg(in);
- break;
-
+ break;
+
case ErrPtg.sid : // 0x1c
retval = new ErrPtg(in);
- break;
-
+ break;
+
case BoolPtg.sid : // 0x1d
retval = new BoolPtg(in);
break;
-
+
case IntPtg.sid : // 0x1e
retval = new IntPtg(in);
- break;
-
+ break;
+
case NumberPtg.sid : // 0x1f
- retval = new NumberPtg(in);
- break;
-
+ retval = new NumberPtg(in);
+ break;
+
case ArrayPtg.sid : // 0x20
- retval = new ArrayPtg(in);
- break;
+ retval = new ArrayPtg(in);
+ break;
case ArrayPtgV.sid : // 0x40
- retval = new ArrayPtgV(in);
- break;
+ retval = new ArrayPtgV(in);
+ break;
case ArrayPtgA.sid : // 0x60
- retval = new ArrayPtgA(in);
- break;
-
+ retval = new ArrayPtgA(in);
+ break;
+
case FuncPtg.sid : // 0x21
case FuncPtg.sid + 0x20 : // 0x41
case FuncPtg.sid + 0x40 : // 0x61
retval = new FuncPtg(in);
break;
-
+
case FuncVarPtg.sid : // 0x22
case FuncVarPtg.sid + 0x20 : // 0x42
case FuncVarPtg.sid + 0x40 : // 0x62
retval = new FuncVarPtg(in);
- break;
-
- case ReferencePtg.sid : // 0x24
+ break;
+
+ case ReferencePtg.sid : // 0x24
retval = new ReferencePtg(in);
- break;
+ break;
case RefAPtg.sid : // 0x64
retval = new RefAPtg(in);
- break;
+ break;
case RefVPtg.sid : // 0x44
retval = new RefVPtg(in);
- break;
+ break;
case RefNAPtg.sid : // 0x6C
retval = new RefNAPtg(in);
break;
@@ -267,11 +273,11 @@
break;
case RefNVPtg.sid : // 0x4C
retval = new RefNVPtg(in);
- break;
-
- case AreaPtg.sid : // 0x25
+ break;
+
+ case AreaPtg.sid : // 0x25
retval = new AreaPtg(in);
- break;
+ break;
case AreaVPtg.sid: // 0x45
retval = new AreaVPtg(in);
break;
@@ -287,81 +293,81 @@
case AreaNVPtg.sid : // 0x4D
retval = new AreaNVPtg(in);
break;
-
+
case MemAreaPtg.sid : // 0x26
case MemAreaPtg.sid + 0x40 : // 0x46
case MemAreaPtg.sid + 0x20 : // 0x66
retval = new MemAreaPtg(in);
break;
-
+
case MemErrPtg.sid : // 0x27
case MemErrPtg.sid + 0x20 : // 0x47
case MemErrPtg.sid + 0x40 : // 0x67
retval = new MemErrPtg(in);
- break;
-
+ break;
+
case MemFuncPtg.sid : // 0x29
retval = new MemFuncPtg(in);
break;
-
+
case RefErrorPtg.sid : // 0x2a
case RefErrorPtg.sid + 0x20 : // 0x4a
case RefErrorPtg.sid + 0x40 : // 0x6a
retval = new RefErrorPtg(in);
- break;
-
+ break;
+
case AreaErrPtg.sid : // 0x2b
case AreaErrPtg.sid + 0x20 : // 0x4b
case AreaErrPtg.sid + 0x40 : // 0x6b
retval = new AreaErrPtg(in);
- break;
-
+ break;
+
case NamePtg.sid : // 0x23
case NamePtg.sid + 0x20 : // 0x43
case NamePtg.sid + 0x40 : // 0x63
retval = new NamePtg(in);
break;
-
+
case NameXPtg.sid : // 0x39
case NameXPtg.sid + 0x20 : // 0x45
case NameXPtg.sid + 0x40 : // 0x79
retval = new NameXPtg(in);
- break;
-
+ break;
+
case Area3DPtg.sid : // 0x3b
case Area3DPtg.sid + 0x20 : // 0x5b
case Area3DPtg.sid + 0x40 : // 0x7b
retval = new Area3DPtg(in);
- break;
-
+ break;
+
case Ref3DPtg.sid : // 0x3a
case Ref3DPtg.sid + 0x20: // 0x5a
case Ref3DPtg.sid + 0x40: // 0x7a
retval = new Ref3DPtg(in);
- break;
-
+ break;
+
case DeletedRef3DPtg.sid: // 0x3c
case DeletedRef3DPtg.sid + 0x20: // 0x5c
case DeletedRef3DPtg.sid + 0x40: // 0x7c
retval = new DeletedRef3DPtg(in);
- break;
-
+ break;
+
case DeletedArea3DPtg.sid : // 0x3d
case DeletedArea3DPtg.sid + 0x20 : // 0x5d
case DeletedArea3DPtg.sid + 0x40 : // 0x7d
retval = new DeletedArea3DPtg(in);
break;
-
+
case 0x00:
- retval = new UnknownPtg();
- break;
-
+ retval = new UnknownPtg();
+ break;
+
default :
//retval = new UnknownPtg();
throw new java.lang.UnsupportedOperationException(" Unknown Ptg in Formula: 0x"+
Integer.toHexString(( int ) id) + " (" + ( int ) id + ")");
}
-
+
if (id > 0x60) {
retval.setClass(CLASS_ARRAY);
} else if (id > 0x40) {
@@ -371,35 +377,35 @@
}
return retval;
-
+
}
-
+
public static int serializePtgStack(Stack expression, byte[] array, int offset) {
- int pos = 0;
- int size = 0;
- if (expression != null)
- size = expression.size();
-
- List arrayPtgs = null;
-
- for (int k = 0; k < size; k++) {
- Ptg ptg = ( Ptg ) expression.get(k);
-
- ptg.writeBytes(array, pos + offset);
- if (ptg instanceof ArrayPtg) {
- if (arrayPtgs == null)
- arrayPtgs = new ArrayList(5);
- arrayPtgs.add(ptg);
- pos += 8;
- } else pos += ptg.getSize();
- }
- if (arrayPtgs != null) {
- for (int i=0;i<arrayPtgs.size();i++) {
- ArrayPtg p = (ArrayPtg)arrayPtgs.get(i);
- pos += p.writeTokenValueBytes(array, pos + offset);
- }
- }
- return pos;
+ int pos = 0;
+ int size = 0;
+ if (expression != null)
+ size = expression.size();
+
+ List arrayPtgs = null;
+
+ for (int k = 0; k < size; k++) {
+ Ptg ptg = ( Ptg ) expression.get(k);
+
+ ptg.writeBytes(array, pos + offset);
+ if (ptg instanceof ArrayPtg) {
+ if (arrayPtgs == null)
+ arrayPtgs = new ArrayList(5);
+ arrayPtgs.add(ptg);
+ pos += 8;
+ } else pos += ptg.getSize();
+ }
+ if (arrayPtgs != null) {
+ for (int i=0;i<arrayPtgs.size();i++) {
+ ArrayPtg p = (ArrayPtg)arrayPtgs.get(i);
+ pos += p.writeTokenValueBytes(array, pos + offset);
+ }
+ }
+ return pos;
}
public abstract int getSize();
@@ -414,7 +420,7 @@
}
/** write this Ptg to a byte array*/
public abstract void writeBytes(byte [] array, int offset);
-
+
/**
* return a string representation of this token alone
*/
@@ -425,7 +431,7 @@
public String toDebugString() {
byte[] ba = new byte[getSize()];
String retval=null;
- writeBytes(ba,0);
+ writeBytes(ba,0);
try {
retval = org.apache.poi.util.HexDump.dump(ba,0,0);
} catch (Exception e) {
@@ -433,7 +439,7 @@
}
return retval;
}
-
+
/** Overridden toString method to ensure object hash is not printed.
* This helps get rid of gratuitous diffs when comparing two dumps
* Subclasses may output more relevant information by overriding this method
@@ -441,26 +447,26 @@
public String toString(){
return this.getClass().toString();
}
-
+
public static final byte CLASS_REF = 0x00;
public static final byte CLASS_VALUE = 0x20;
public static final byte CLASS_ARRAY = 0x40;
-
+
protected byte ptgClass = CLASS_REF; //base ptg
-
+
public void setClass(byte thePtgClass) {
ptgClass = thePtgClass;
}
-
+
/** returns the class (REF/VALUE/ARRAY) for this Ptg */
public byte getPtgClass() {
return ptgClass;
}
-
+
public abstract byte getDefaultOperandClass();
public abstract Object clone();
-
-
+
+
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNAPtg.java Mon May 5 07:20:39 2008
@@ -1,4 +1,3 @@
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -16,26 +15,16 @@
limitations under the License.
==================================================================== */
-/*
- * ValueReferencePtg.java
- *
- * Created on November 21, 2001, 5:27 PM
- */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;
-
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* RefNAPtg
* @author Jason Height (jheight at chariot dot net dot au)
*/
-
-public class RefNAPtg extends ReferencePtg
+public final class RefNAPtg extends ReferencePtg
{
public final static byte sid = 0x6C;
@@ -48,21 +37,16 @@
super(in);
}
- public void writeBytes(byte [] array, int offset)
- {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
- }
-
public String getRefPtgName() {
return "RefNAPtg";
}
public String toFormulaString(HSSFWorkbook book)
{
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
public Object clone() {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
}
Modified: poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java?rev=653490&r1=653489&r2=653490&view=diff
==============================================================================
--- poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java (original)
+++ poi/tags/REL_3_1_BETA2/src/java/org/apache/poi/hssf/record/formula/RefNPtg.java Mon May 5 07:20:39 2008
@@ -1,4 +1,3 @@
-
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -16,25 +15,16 @@
limitations under the License.
==================================================================== */
-/*
- * RefNPtg.java
- *
- */
package org.apache.poi.hssf.record.formula;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.BitField;
-
import org.apache.poi.hssf.record.RecordInputStream;
-import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* RefNPtg
* @author Jason Height (jheight at apache dot com)
*/
-
-public class RefNPtg extends ReferencePtg
+public final class RefNPtg extends ReferencePtg
{
public final static byte sid = 0x2C;
@@ -49,21 +39,16 @@
super(in);
}
- public void writeBytes(byte [] array, int offset)
- {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
- }
-
public String getRefPtgName() {
return "RefNPtg";
}
public String toFormulaString(HSSFWorkbook book)
{
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
public Object clone() {
- throw new RuntimeException("Coding Error: This method should never be called. This ptg should be converted");
+ throw notImplemented();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org