avik 2002/07/01 10:29:31
Modified: src/java/org/apache/poi/hssf/record NameRecord.java
src/java/org/apache/poi/hssf/record/formula Area3DPtg.java
Ref3DPtg.java
src/java/org/apache/poi/hssf/usermodel HSSFName.java
src/testcases/org/apache/poi/hssf/usermodel
TestNamedRange.java
Log:
Refactoring for names, and tests. More to follow. Only publicly viewable change is
setSheetName in HSSFName is now private, since it was dangerous.
Revision Changes Path
1.3 +2 -2 jakarta-poi/src/java/org/apache/poi/hssf/record/NameRecord.java
Index: NameRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/NameRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NameRecord.java 17 Jun 2002 17:20:16 -0000 1.2
+++ NameRecord.java 1 Jul 2002 17:29:31 -0000 1.3
@@ -507,10 +507,10 @@
String result = "";
if (ptg.getClass() == Area3DPtg.class){
- result = ((Area3DPtg) ptg).getArea();
+ result = ((Area3DPtg) ptg).toFormulaString();
} else if (ptg.getClass() == Ref3DPtg.class){
- result = ((Ref3DPtg) ptg).getArea();
+ result = ((Ref3DPtg) ptg).toFormulaString();
}
return result;
1.7 +2 -2
jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
Index: Area3DPtg.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Area3DPtg.java 26 Jun 2002 18:05:39 -0000 1.6
+++ Area3DPtg.java 1 Jul 2002 17:29:31 -0000 1.7
@@ -266,12 +266,12 @@
}
- public String getArea(){
+ /*public String getArea(){
RangeAddress ra = new RangeAddress( getFirstColumn(),getFirstRow() + 1,
getLastColumn(), getLastRow() + 1);
String result = ra.getAddress();
return result;
- }
+ }*/
public void setArea(String ref){
RangeAddress ra = new RangeAddress(ref);
1.6 +2 -2
jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
Index: Ref3DPtg.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Ref3DPtg.java 26 Jun 2002 18:05:39 -0000 1.5
+++ Ref3DPtg.java 1 Jul 2002 17:29:31 -0000 1.6
@@ -172,13 +172,13 @@
field_3_column = column;
}
- public String getArea(){
+ /* public String getArea(){
RangeAddress ra = new RangeAddress("");
String result = (ra.numTo26Sys(getColumn()) + (getRow() + 1));
return result;
- }
+ }*/
public void setArea(String ref){
RangeAddress ra = new RangeAddress(ref);
1.2 +340 -170 jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java
Index: HSSFName.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFName.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- HSSFName.java 23 Apr 2002 22:24:41 -0000 1.1
+++ HSSFName.java 1 Jul 2002 17:29:31 -0000 1.2
@@ -1,170 +1,340 @@
-
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2002 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Apache POI" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact [EMAIL PROTECTED]
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Apache POI", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.poi.hssf.usermodel;
-
-import org.apache.poi.util.POILogFactory;
-import org.apache.poi.hssf.model.Sheet;
-import org.apache.poi.hssf.model.Workbook;
-import org.apache.poi.hssf.record.*;
-import org.apache.poi.hssf.util.Region;
-import org.apache.poi.util.POILogger;
-
-import java.util.Iterator;
-import java.util.TreeMap;
-import org.apache.poi.hssf.util.RangeAddress;
-
-/**
- * Title: High Level Represantion of Named Range <P>
- * REFERENCE: <P>
- * @author Libin Roman (Vista Portal LDT. Developer)
- * @version 1.0-pre
- */
-
-public class HSSFName {
- private Workbook book;
- private NameRecord name;
-
- /** Creates new HSSFName - called by HSSFWorkbook to create a sheet from
- * scratch.
- *
- * @see #org.apache.poi.hssf.usermodel.HSSFWorkbook.createName()
- * @param name the Name Record
- * @param book - lowlevel Workbook object associated with the sheet.
- * @param book the Workbook */
-
- protected HSSFName(Workbook book, NameRecord name) {
- this.book = book;
- this.name = name;
- }
-
- /** private default constructor prevents bogus initializationless construction
*/
-
- private HSSFName() {
- }
-
- /** Get the sheets name which this named range is referenced to
- * @return sheet name, which this named range refered to
- */
- public String getSheetName() {
- String result ;
- short indexToExternSheet = name.getExternSheetNumber();
-
- result = book.findSheetNameFromExternSheet(indexToExternSheet);
-
- return result;
- }
-
- /** gets the name of the named range
- * @return named range name
- */
- public String getNameName(){
- String result = name.getNameText();
-
- return result;
- }
-
- /** sets the name of the named range
- * @param nameName named range name to set
- */
- public void setNameName(String nameName){
- name.setNameText(nameName);
- name.setNameTextLength((byte)nameName.length());
- }
-
- /** gets the reference of the named range
- * @return reference of the named range
- */
- public String getReference() {
- String result;
-
- result = getSheetName() + "." + name.getAreaReference();
-
- return result;
- }
-
- /** sets the sheet name which this named range referenced to
- * @param sheetName the sheet name of the reference
- */
- public void setSheetName(String sheetName){
- int sheetNumber = book.getSheetIndex(sheetName);
-
- short externSheetNumber = book.checkExternSheet(sheetNumber);
- name.setExternSheetNumber(externSheetNumber);
-// name.setIndexToSheet(externSheetNumber);
- }
-
- /** sets the reference of this named range
- * @param ref the reference to set
- */
- public void setReference(String ref){
- RangeAddress ra = new RangeAddress(ref);
-
- String sheetName = ra.getSheetName();
-
- if (ra.hasSheetName()) {
- setSheetName(sheetName);
- }
-
- if (ra.getFromCell().equals(ra.getToCell()) == false) {
- name.setAreaReference(ra.getFromCell() + ":" + ra.getToCell());
- } else {
- name.setAreaReference(ra.getFromCell());
- }
-
- }
-
-
-}
+
+
+/* ====================================================================
+
+ * The Apache Software License, Version 1.1
+
+ *
+
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+
+ * reserved.
+
+ *
+
+ * Redistribution and use in source and binary forms, with or without
+
+ * modification, are permitted provided that the following conditions
+
+ * are met:
+
+ *
+
+ * 1. Redistributions of source code must retain the above copyright
+
+ * notice, this list of conditions and the following disclaimer.
+
+ *
+
+ * 2. Redistributions in binary form must reproduce the above copyright
+
+ * notice, this list of conditions and the following disclaimer in
+
+ * the documentation and/or other materials provided with the
+
+ * distribution.
+
+ *
+
+ * 3. The end-user documentation included with the redistribution,
+
+ * if any, must include the following acknowledgment:
+
+ * "This product includes software developed by the
+
+ * Apache Software Foundation (http://www.apache.org/)."
+
+ * Alternately, this acknowledgment may appear in the software itself,
+
+ * if and wherever such third-party acknowledgments normally appear.
+
+ *
+
+ * 4. The names "Apache" and "Apache Software Foundation" and
+
+ * "Apache POI" must not be used to endorse or promote products
+
+ * derived from this software without prior written permission. For
+
+ * written permission, please contact [EMAIL PROTECTED]
+
+ *
+
+ * 5. Products derived from this software may not be called "Apache",
+
+ * "Apache POI", nor may "Apache" appear in their name, without
+
+ * prior written permission of the Apache Software Foundation.
+
+ *
+
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+
+ * SUCH DAMAGE.
+
+ * ====================================================================
+
+ *
+
+ * This software consists of voluntary contributions made by many
+
+ * individuals on behalf of the Apache Software Foundation. For more
+
+ * information on the Apache Software Foundation, please see
+
+ * <http://www.apache.org/>.
+
+ */
+
+
+
+package org.apache.poi.hssf.usermodel;
+
+
+
+import org.apache.poi.util.POILogFactory;
+
+import org.apache.poi.hssf.model.Sheet;
+
+import org.apache.poi.hssf.model.Workbook;
+
+import org.apache.poi.hssf.record.*;
+
+import org.apache.poi.hssf.util.Region;
+
+import org.apache.poi.util.POILogger;
+
+
+
+import java.util.Iterator;
+
+import java.util.TreeMap;
+
+import org.apache.poi.hssf.util.RangeAddress;
+
+
+
+/**
+
+ * Title: High Level Represantion of Named Range <P>
+
+ * REFERENCE: <P>
+
+ * @author Libin Roman (Vista Portal LDT. Developer)
+
+ * @version 1.0-pre
+
+ */
+
+
+
+public class HSSFName {
+
+ private Workbook book;
+
+ private NameRecord name;
+
+
+
+ /** Creates new HSSFName - called by HSSFWorkbook to create a sheet from
+
+ * scratch.
+
+ *
+
+ * @see #org.apache.poi.hssf.usermodel.HSSFWorkbook.createName()
+
+ * @param name the Name Record
+
+ * @param book - lowlevel Workbook object associated with the sheet.
+
+ * @param book the Workbook */
+
+
+
+ protected HSSFName(Workbook book, NameRecord name) {
+
+ this.book = book;
+
+ this.name = name;
+
+ }
+
+
+
+ /** private default constructor prevents bogus initializationless construction
*/
+
+
+
+ private HSSFName() {
+
+ }
+
+
+
+ /** Get the sheets name which this named range is referenced to
+
+ * @return sheet name, which this named range refered to
+
+ */
+
+ public String getSheetName() {
+
+ String result ;
+
+ short indexToExternSheet = name.getExternSheetNumber();
+
+
+
+ result = book.findSheetNameFromExternSheet(indexToExternSheet);
+
+
+
+ return result;
+
+ }
+
+
+
+ /** gets the name of the named range
+
+ * @return named range name
+
+ */
+
+ public String getNameName(){
+
+ String result = name.getNameText();
+
+
+
+ return result;
+
+ }
+
+
+
+ /** sets the name of the named range
+
+ * @param nameName named range name to set
+
+ */
+
+ public void setNameName(String nameName){
+
+ name.setNameText(nameName);
+
+ name.setNameTextLength((byte)nameName.length());
+
+ }
+
+
+
+ /** gets the reference of the named range
+
+ * @return reference of the named range
+
+ */
+
+ public String getReference() {
+ Workbook.currentBook.set(book);
+ String result;
+
+
+
+ result = name.getAreaReference();
+
+ Workbook.currentBook.set(null);
+
+ return result;
+
+ }
+
+
+
+ /** sets the sheet name which this named range referenced to
+
+ * @param sheetName the sheet name of the reference
+
+ */
+
+ private void setSheetName(String sheetName){
+
+ int sheetNumber = book.getSheetIndex(sheetName);
+
+
+
+ short externSheetNumber = book.checkExternSheet(sheetNumber);
+
+ name.setExternSheetNumber(externSheetNumber);
+
+// name.setIndexToSheet(externSheetNumber);
+
+ }
+
+
+
+ /** sets the reference of this named range
+
+ * @param ref the reference to set
+
+ */
+
+ public void setReference(String ref){
+
+ RangeAddress ra = new RangeAddress(ref);
+
+
+
+ String sheetName = ra.getSheetName();
+
+
+
+ if (ra.hasSheetName()) {
+
+ setSheetName(sheetName);
+
+ }
+
+
+
+ if (ra.getFromCell().equals(ra.getToCell()) == false) {
+
+ name.setAreaReference(ra.getFromCell() + ":" + ra.getToCell());
+
+ } else {
+
+ name.setAreaReference(ra.getFromCell());
+
+ }
+
+
+
+ }
+
+
+
+
+
+}
+
1.2 +10 -0
jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java
Index: TestNamedRange.java
===================================================================
RCS file:
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestNamedRange.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestNamedRange.java 27 Apr 2002 13:18:57 -0000 1.1
+++ TestNamedRange.java 1 Jul 2002 17:29:31 -0000 1.2
@@ -99,6 +99,16 @@
wb.write(fileOut);
fis.close();
fileOut.close();
+
+ assertTrue("file exists",file.exists());
+
+ FileInputStream in = new FileInputStream(file);
+ wb = new HSSFWorkbook(in);
+ HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest"));
+ assertTrue("Name is
"+nm.getNameName(),"RangeTest".equals(nm.getNameName()));
+ assertTrue("Reference is
"+nm.getReference(),(wb.getSheetName(0)+"!$D$4:$E$8").equals(nm.getReference()));
+
+
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>