]> source.dussan.org Git - poi.git/commitdiff
fixed bug 44892 - made HSSFWorkbook.getSheet(String) case insensitive
authorJosh Micich <josh@apache.org>
Thu, 1 May 2008 03:25:37 +0000 (03:25 +0000)
committerJosh Micich <josh@apache.org>
Thu, 1 May 2008 03:25:37 +0000 (03:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@652426 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/model/Workbook.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java

index 2ee93cdefa65e0686185b7495063d4319cd3e82a..55308a758b8844e9b53ab2d3f8bf8827b2b545b9 100644 (file)
@@ -37,6 +37,7 @@
 
                <!-- Don't forget to update status.xml too! -->
         <release version="3.1-beta2" date="2008-05-??">
+           <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 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action>
         </release>
index 7a2bbf5ce77e1bcd6170040c338587d2ec695764..58a560996d18abe2a89a73b5ef3b476ac1229858 100644 (file)
@@ -34,6 +34,7 @@
        <!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.1-beta2" date="2008-05-??">
+           <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 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action>
         </release>
index 8fa3010a4b2ec6cbe64276d32d5e0db19ff1909b..08f2263182c873c14ea7a876524d8ad02186b7a9 100644 (file)
@@ -476,9 +476,9 @@ public class Workbook implements Model
     }
 
     /**
-     * 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 @@ public class Workbook implements Model
         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;
index 30776608ba71d5a4ea1418b4d0a77425289c2d83..a76cfd159b286ce3f5785cd6ab8c3c0bf3ea5fbd 100644 (file)
@@ -600,6 +600,8 @@ public class HSSFWorkbook extends POIDocument
      *
      * @param sheetname     sheetname to set for the sheet.
      * @return HSSFSheet representing the new sheet.
+     * @throws IllegalArgumentException if there is already a sheet present with a case-insensitive
+     *  match for the specified name.
      */
 
     public HSSFSheet createSheet(String sheetname)
@@ -639,9 +641,9 @@ public class HSSFWorkbook extends POIDocument
     }
 
     /**
-     * Get sheet with the given name
+     * Get sheet with the given name (case insensitive match)
      * @param name of the sheet
-     * @return HSSFSheet with the name provided or null if it does not exist
+     * @return HSSFSheet with the name provided or <code>null</code> if it does not exist
      */
 
     public HSSFSheet getSheet(String name)
@@ -652,7 +654,7 @@ public class HSSFWorkbook extends POIDocument
         {
             String sheetname = workbook.getSheetName(k);
 
-            if (sheetname.equals(name))
+            if (sheetname.equalsIgnoreCase(name))
             {
                 retval = (HSSFSheet) sheets.get(k);
             }
index 3696bb940ec433fe7d09ce9447e18b24f1d7fffa..4c156e7b6f5e482a90088bd53358bf2fc2c10e64 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 import org.apache.poi.hssf.HSSFTestDataSamples;
@@ -39,7 +40,24 @@ public final class TestHSSFWorkbook extends TestCase {
         NameRecord nameRecord = b.getWorkbook().getNameRecord( 0 );
         assertEquals( 3, nameRecord.getIndexToSheet() );
     }
-    
+
+    public void testCaseInsensitiveNames() {
+        HSSFWorkbook b = new HSSFWorkbook( );
+        HSSFSheet originalSheet = b.createSheet("Sheet1");
+        HSSFSheet fetchedSheet = b.getSheet("sheet1");
+        if(fetchedSheet == null) {
+            throw new AssertionFailedError("Identified bug 44892");
+        }
+        assertEquals(originalSheet, fetchedSheet);
+        try {
+            b.createSheet("sHeeT1");
+            fail("should have thrown exceptiuon due to duplicate sheet name");
+        } catch (IllegalArgumentException e) {
+            // expected during successful test
+            assertEquals("The workbook already contains a sheet of this name", e.getMessage());
+        }
+    }
+
     public void testDuplicateNames() {
         HSSFWorkbook b = new HSSFWorkbook( );
         b.createSheet("Sheet1");