aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/poi/hssf
diff options
context:
space:
mode:
authorJosh Micich <josh@apache.org>2008-06-20 07:10:03 +0000
committerJosh Micich <josh@apache.org>2008-06-20 07:10:03 +0000
commit0e47966f8657d3aebbb8423c8ac9fb809ccc6735 (patch)
treeb5a3769e8bdb00ca41d2a3615a7f294175a4f8cb /src/java/org/apache/poi/hssf
parent410c307d263a0c464fd26132d224e295a1eeb6d9 (diff)
downloadpoi-0e47966f8657d3aebbb8423c8ac9fb809ccc6735.tar.gz
poi-0e47966f8657d3aebbb8423c8ac9fb809ccc6735.zip
Fix for bug 30978 - small re-arrangement of class Ptg hierarchy for DeletedRef3DPtg and DeletedArea3DPtg. Similar to c664220
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@669809 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/hssf')
-rw-r--r--src/java/org/apache/poi/hssf/record/NameRecord.java54
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java2
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java42
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java41
-rw-r--r--src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java2
5 files changed, 63 insertions, 78 deletions
diff --git a/src/java/org/apache/poi/hssf/record/NameRecord.java b/src/java/org/apache/poi/hssf/record/NameRecord.java
index 786c0b3d6b..dbd796991c 100644
--- a/src/java/org/apache/poi/hssf/record/NameRecord.java
+++ b/src/java/org/apache/poi/hssf/record/NameRecord.java
@@ -14,7 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.record;
@@ -22,9 +21,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Stack;
+import org.apache.poi.hssf.model.FormulaParser;
import org.apache.poi.hssf.record.formula.Area3DPtg;
-import org.apache.poi.hssf.record.formula.DeletedArea3DPtg;
-import org.apache.poi.hssf.record.formula.DeletedRef3DPtg;
import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.hssf.record.formula.Ref3DPtg;
import org.apache.poi.hssf.record.formula.UnionPtg;
@@ -44,8 +42,7 @@ import org.apache.poi.util.StringUtil;
* @author Glen Stampoultzis (glens at apache.org)
* @version 1.0-pre
*/
-
-public class NameRecord extends Record {
+public final class NameRecord extends Record {
/**
*/
public final static short sid = 0x18; //Docs says that it is 0x218
@@ -650,50 +647,9 @@ public class NameRecord extends Record {
/** gets the reference , the area only (range)
* @return area reference
*/
- public String getAreaReference(HSSFWorkbook book){
- if (field_13_name_definition == null || field_13_name_definition.isEmpty()) return "Error";
- Ptg ptg = (Ptg) field_13_name_definition.peek();
- String result = "";
-
- // If it's a union, descend in and process
- if (ptg.getClass() == UnionPtg.class) {
- Iterator it =field_13_name_definition.iterator();
- while( it.hasNext() ) {
- Ptg p = (Ptg)it.next();
-
- String thisRes = getAreaRefString(p, book);
- if(thisRes.length() > 0) {
- // Add a comma to the end if needed
- if(result.length() > 0 && !result.endsWith(",")) {
- result += ",";
- }
- // And add the string it corresponds to
- result += thisRes;
- }
- }
- } else {
- // Otherwise just get the string
- result = getAreaRefString(ptg, book);
- }
-
- return result;
- }
-
- /**
- * Turn the given ptg into a string, or
- * return an empty string if nothing is possible
- * for it.
- */
- private String getAreaRefString(Ptg ptg,HSSFWorkbook book) {
- if (ptg.getClass() == Area3DPtg.class){
- return ptg.toFormulaString(book);
- } else if (ptg.getClass() == Ref3DPtg.class){
- return ptg.toFormulaString(book);
- } else if (ptg.getClass() == DeletedArea3DPtg.class || ptg.getClass() == DeletedRef3DPtg.class) {
- return "#REF!";
- }
- return "";
- }
+ public String getAreaReference(HSSFWorkbook book){
+ return FormulaParser.toFormulaString(book, field_13_name_definition);
+ }
/** sets the reference , the area only (range)
* @param ref area reference
diff --git a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
index 5dcada24a3..dded3cd393 100644
--- a/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
+++ b/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
@@ -35,7 +35,7 @@ import org.apache.poi.util.LittleEndian;
* @author Jason Height (jheight at chariot dot net dot au)
* @version 1.0-pre
*/
-public class Area3DPtg extends OperandPtg implements AreaI {
+public final class Area3DPtg extends OperandPtg implements AreaI {
public final static byte sid = 0x3b;
private final static int SIZE = 11; // 10 + 1 for Ptg
private short field_1_index_extern_sheet;
diff --git a/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java
index 36d7e16860..74ccc8b368 100644
--- a/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java
+++ b/src/java/org/apache/poi/hssf/record/formula/DeletedArea3DPtg.java
@@ -18,6 +18,9 @@
package org.apache.poi.hssf.record.formula;
import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.util.LittleEndian;
/**
* Title: Deleted Area 3D Ptg - 3D referecnce (Sheet + Area)<P>
@@ -26,19 +29,30 @@ import org.apache.poi.hssf.record.RecordInputStream;
* @author Patrick Luby
* @version 1.0-pre
*/
-
-public class DeletedArea3DPtg extends Area3DPtg
-{
+public final class DeletedArea3DPtg extends OperandPtg {
public final static byte sid = 0x3d;
-
- /** Creates new DeletedArea3DPtg */
- public DeletedArea3DPtg( String arearef, short externIdx )
- {
- super(arearef, externIdx);
- }
-
- public DeletedArea3DPtg( RecordInputStream in)
- {
- super(in);
- }
+ private final int field_1_index_extern_sheet;
+ private final int unused1;
+ private final int unused2;
+
+ public DeletedArea3DPtg( RecordInputStream in) {
+ field_1_index_extern_sheet = in.readUShort();
+ unused1 = in.readInt();
+ unused2 = in.readInt();
+ }
+ public String toFormulaString(HSSFWorkbook book) {
+ return HSSFErrorConstants.getText(HSSFErrorConstants.ERROR_REF);
+ }
+ public byte getDefaultOperandClass() {
+ return Ptg.CLASS_REF;
+ }
+ public int getSize() {
+ return 11;
+ }
+ public void writeBytes(byte[] data, int offset) {
+ LittleEndian.putByte(data, 0 + offset, sid + getPtgClass());
+ LittleEndian.putUShort(data, 1 + offset, field_1_index_extern_sheet);
+ LittleEndian.putInt(data, 3 + offset, unused1);
+ LittleEndian.putInt(data, 7 + offset, unused2);
+ }
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java
index a3c7809655..b2c2a0e377 100644
--- a/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java
+++ b/src/java/org/apache/poi/hssf/record/formula/DeletedRef3DPtg.java
@@ -15,11 +15,13 @@
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.record.formula;
import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.usermodel.HSSFErrorConstants;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.util.LittleEndian;
/**
* Title: Deleted Reference 3D Ptg <P>
@@ -28,16 +30,29 @@ import org.apache.poi.hssf.record.RecordInputStream;
* @author Patrick Luby
* @version 1.0-pre
*/
-
-public class DeletedRef3DPtg extends Ref3DPtg {
- public final static byte sid = 0x3c;
-
- /** Creates new DeletedRef3DPtg */
- public DeletedRef3DPtg(RecordInputStream in) {
- super(in);
- }
-
- public DeletedRef3DPtg(String cellref, short externIdx ) {
- super(cellref, externIdx);
- }
+public final class DeletedRef3DPtg extends OperandPtg {
+ public final static byte sid = 0x3c;
+ private final int field_1_index_extern_sheet;
+ private final int unused1;
+
+ /** Creates new DeletedRef3DPtg */
+ public DeletedRef3DPtg(RecordInputStream in) {
+ field_1_index_extern_sheet = in.readUShort();
+ unused1 = in.readInt();
+ }
+
+ public String toFormulaString(HSSFWorkbook book) {
+ return HSSFErrorConstants.getText(HSSFErrorConstants.ERROR_REF);
+ }
+ public byte getDefaultOperandClass() {
+ return Ptg.CLASS_REF;
+ }
+ public int getSize() {
+ return 7;
+ }
+ public void writeBytes(byte[] data, int offset) {
+ LittleEndian.putByte(data, 0 + offset, sid + getPtgClass());
+ LittleEndian.putUShort(data, 1 + offset, field_1_index_extern_sheet);
+ LittleEndian.putInt(data, 3 + offset, unused1);
+ }
}
diff --git a/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java b/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
index 9306516596..8e21e1e977 100644
--- a/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
+++ b/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
@@ -34,7 +34,7 @@ import org.apache.poi.util.LittleEndian;
* @author Jason Height (jheight at chariot dot net dot au)
* @version 1.0-pre
*/
-public class Ref3DPtg extends OperandPtg {
+public final class Ref3DPtg extends OperandPtg {
public final static byte sid = 0x3a;
private final static int SIZE = 7; // 6 + 1 for Ptg
private short field_1_index_extern_sheet;