From 7dad2164cdfd6b7702440aad71ad094ac4720675 Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Fri, 16 Jan 2009 17:31:29 +0000 Subject: [PATCH] Fixing bug 46551 - spelling mistakes in xSSFCell.checkBounds(). Also fixed 0/1-based index error for cell range checks in XSSF. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@735061 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/usermodel/HSSFCell.java | 21 ++++++++++++------- .../apache/poi/xssf/usermodel/XSSFCell.java | 17 ++++++++------- .../apache/poi/xssf/usermodel/XSSFRow.java | 17 ++++++++------- .../poi/xssf/usermodel/TestXSSFCell.java | 20 +++++++++--------- 4 files changed, 41 insertions(+), 34 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index 1d2cac679..03c514b47 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -88,6 +88,13 @@ public class HSSFCell implements Cell { /** Error Cell type (5) @see #setCellType(int) @see #getCellType() */ public final static int CELL_TYPE_ERROR = 5; + private static final String FILE_FORMAT_NAME = "BIFF8"; + /** + * The maximum number of columns in BIFF8 + */ + private static final int LAST_COLUMN_NUMBER = 255; // 2^8 - 1 + private static final String LAST_COLUMN_NAME = "IV"; + public final static short ENCODING_UNCHANGED = -1; public final static short ENCODING_COMPRESSED_UNICODE = 0; public final static short ENCODING_UTF_16 = 1; @@ -915,14 +922,12 @@ public class HSSFCell implements Cell { /** * @throws RuntimeException if the bounds are exceeded. */ - private void checkBounds(int cellNum) { - if (cellNum > 255) { - throw new IllegalArgumentException("You cannot have more than 255 columns "+ - "in a given row (IV). Because Excel can't handle it"); - } - else if (cellNum < 0) { - throw new IllegalArgumentException("You cannot reference columns with an index of less then 0."); - } + private static void checkBounds(int cellIndex) { + if (cellIndex < 0 || cellIndex > LAST_COLUMN_NUMBER) { + throw new IllegalArgumentException("Invalid column index (" + cellIndex + + "). Allowable column range for " + FILE_FORMAT_NAME + " is (0.." + + LAST_COLUMN_NUMBER + ") or ('A'..'" + LAST_COLUMN_NAME + "')"); + } } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index 0d89bfee2..0fdfa2c69 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -32,7 +32,6 @@ import org.apache.poi.ss.formula.FormulaType; import org.apache.poi.ss.formula.FormulaRenderer; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.model.SharedStringsTable; -import org.apache.poi.POIXMLException; import org.apache.poi.util.POILogger; import org.apache.poi.util.POILogFactory; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; @@ -57,10 +56,13 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellFormulaType; public final class XSSFCell implements Cell { private static POILogger logger = POILogFactory.getLogger(XSSFCell.class); + private static final String FILE_FORMAT_NAME = "BIFF12"; /** * The maximum number of columns in SpreadsheetML */ - public static final int MAX_COLUMN_NUMBER = 16384; //2^14 + public static final int MAX_COLUMN_NUMBER = 16384; // 2^14 + private static final int LAST_COLUMN_NUMBER = MAX_COLUMN_NUMBER-1; + private static final String LAST_COLUMN_NAME = "XFD"; private static final String FALSE_AS_STRING = "0"; private static final String TRUE_AS_STRING = "1"; @@ -762,12 +764,11 @@ public final class XSSFCell implements Cell { /** * @throws RuntimeException if the bounds are exceeded. */ - private static void checkBounds(int cellNum) { - if (cellNum > MAX_COLUMN_NUMBER) { - throw new IllegalArgumentException("You cannot have more than "+MAX_COLUMN_NUMBER+" columns " + - "in a given row because Excel can't handle it"); - } else if (cellNum < 0) { - throw new IllegalArgumentException("You cannot reference columns with an index of less then 0."); + private static void checkBounds(int cellIndex) { + if (cellIndex < 0 || cellIndex > LAST_COLUMN_NUMBER) { + throw new IllegalArgumentException("Invalid column index (" + cellIndex + + "). Allowable column range for " + FILE_FORMAT_NAME + " is (0.." + + LAST_COLUMN_NUMBER + ") or ('A'..'" + LAST_COLUMN_NAME + "')"); } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java index 9de3ea46c..1011ecaf3 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java @@ -21,7 +21,6 @@ import java.util.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.POIXMLException; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; @@ -30,6 +29,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; */ public class XSSFRow implements Row, Comparable { + private static final String FILE_FORMAT_NAME = "BIFF12"; /** * The maximum number of rows in SpreadsheetML */ @@ -317,15 +317,16 @@ public class XSSFRow implements Row, Comparable { /** * Set the row number of this row. * - * @param rowNum the row number (0-based) + * @param rowIndex the row number (0-based) * @throws IllegalArgumentException if rowNum < 0 or greater than {@link #MAX_ROW_NUMBER} */ - public void setRowNum(int rowNum) { - if(rowNum < 0) throw new IllegalArgumentException("Row number must be >= 0"); - if (rowNum > MAX_ROW_NUMBER) - throw new IllegalArgumentException("You cannot have more than "+MAX_ROW_NUMBER+" rows "); - - this.row.setR(rowNum + 1); + public void setRowNum(int rowIndex) { + if (rowIndex < 0 || rowIndex >= MAX_ROW_NUMBER) { + throw new IllegalArgumentException("Invalid row index (" + rowIndex + + "). Allowable row range for " + FILE_FORMAT_NAME + + " is (0.." + (MAX_ROW_NUMBER-1) + ")"); + } + row.setR(rowIndex + 1); } /** diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java index a5114b5bf..54f23f8d4 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java @@ -316,25 +316,25 @@ public final class TestXSSFCell extends TestCase { cell = row.createCell(100); assertEquals("CW101", cell.getCTCell().getR()); - row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER); + row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER-1); cell = row.createCell(100); - assertEquals("CW1048577", cell.getCTCell().getR()); + assertEquals("CW1048576", cell.getCTCell().getR()); - row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER); - cell = row.createCell(XSSFCell.MAX_COLUMN_NUMBER); - assertEquals("XFE1048577", cell.getCTCell().getR()); + row = sheet.createRow(XSSFRow.MAX_ROW_NUMBER-1); + cell = row.createCell(XSSFCell.MAX_COLUMN_NUMBER-1); + assertEquals("XFD1048576", cell.getCTCell().getR()); try { - sheet.createRow(XSSFRow.MAX_ROW_NUMBER + 1); - fail("expecting exception when rownum > XSSFRow.MAX_ROW_NUMBER"); + sheet.createRow(XSSFRow.MAX_ROW_NUMBER); + fail("expecting exception when rownum >= XSSFRow.MAX_ROW_NUMBER"); } catch(IllegalArgumentException e){ ; } + row = sheet.createRow(100); try { - row = sheet.createRow(100); - row.createCell(XSSFCell.MAX_COLUMN_NUMBER + 1); - fail("expecting exception when columnIndex > XSSFCell.MAX_COLUMN_NUMBER"); + row.createCell(XSSFCell.MAX_COLUMN_NUMBER); + fail("expecting exception when columnIndex >= XSSFCell.MAX_COLUMN_NUMBER"); } catch(IllegalArgumentException e){ ; }