]> source.dussan.org Git - poi.git/commitdiff
Converted rows map within HSSFSheet to use Integer keys
authorJosh Micich <josh@apache.org>
Sat, 9 Aug 2008 19:29:23 +0000 (19:29 +0000)
committerJosh Micich <josh@apache.org>
Sat, 9 Aug 2008 19:29:23 +0000 (19:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@684318 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/usermodel/HSSFRow.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java

index a893bdd6936e8b46fab1d251de6af46637ae7fff..51d18bdb59b3d9c0c6325fa362bbc8ee1e5620ec 100644 (file)
@@ -43,26 +43,18 @@ public final class HSSFRow implements Comparable {
     /**
      * reference to low level representation
      */
-
     private RowRecord row;
 
     /**
      * reference to containing low level Workbook
      */
-
     private HSSFWorkbook book;
 
     /**
      * reference to containing Sheet
      */
-
     private Sheet sheet;
 
-    // TODO - ditch this constructor
-    HSSFRow()
-    {
-    }
-
     /**
      * Creates new HSSFRow from scratch. Only HSSFSheet should do this.
      *
index 486fa963010712003f566f48677ec3cc6498df3e..84a71a89aa999a3cf90f831c100ed393da0bc6f9 100644 (file)
@@ -81,7 +81,8 @@ public final class HSSFSheet {
      */
 
     private Sheet sheet;
-    private TreeMap rows; // TODO - use simple key into this map
+    /** stores <tt>HSSFRow</tt>s by <tt>Integer</tt> (zero-based row number) key */
+    private TreeMap rows;
     protected Workbook book;
     protected HSSFWorkbook workbook;
     private int firstrow;
@@ -99,7 +100,7 @@ public final class HSSFSheet {
     protected HSSFSheet(HSSFWorkbook workbook)
     {
         sheet = Sheet.createSheet();
-        rows = new TreeMap();   // new ArrayList(INITIAL_CAPACITY);
+        rows = new TreeMap();
         this.workbook = workbook;
         this.book = workbook.getWorkbook();
     }
@@ -224,7 +225,14 @@ public final class HSSFSheet {
     public void removeRow(HSSFRow row) {
         if (rows.size() > 0)
         {
-            rows.remove(row);
+            Integer key = new Integer(row.getRowNum());
+            HSSFRow removedRow = (HSSFRow) rows.remove(key);
+            if (removedRow != row) {
+                if (removedRow != null) {
+                    rows.put(key, removedRow);
+                }
+                throw new RuntimeException("Specified row does not belong to this sheet");
+            }
             if (row.getRowNum() == getLastRowNum())
             {
                 lastrow = findLastRow(lastrow);
@@ -284,7 +292,7 @@ public final class HSSFSheet {
 
     private void addRow(HSSFRow row, boolean addLow)
     {
-        rows.put(row, row);
+        rows.put(new Integer(row.getRowNum()), row);
         if (addLow)
         {
             sheet.addRow(row.getRowRecord());
@@ -302,17 +310,11 @@ public final class HSSFSheet {
     /**
      * Returns the logical row (not physical) 0-based.  If you ask for a row that is not
      * defined you get a null.  This is to say row 4 represents the fifth row on a sheet.
-     * @param rownum  row to get
+     * @param rowIndex  row to get
      * @return HSSFRow representing the rownumber or null if its not defined on the sheet
      */
-
-    public HSSFRow getRow(int rownum)
-    {
-        HSSFRow row = new HSSFRow();
-
-        //row.setRowNum((short) rownum);
-        row.setRowNum( rownum);
-        return (HSSFRow) rows.get(row);
+    public HSSFRow getRow(int rowIndex) {
+        return (HSSFRow) rows.get(new Integer(rowIndex));
     }
 
     /**
@@ -573,7 +575,7 @@ public final class HSSFSheet {
 
     public void setHorizontallyCenter(boolean value)
     {
-       sheet.getPageSettings().getHCenter().setHCenter(value);
+        sheet.getPageSettings().getHCenter().setHCenter(value);
     }
 
     /**