fixed bug 44892 - made HSSFWorkbook.getSheet(String) case insensitive

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@652426 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-05-01 03:25:37 +00:00
parent d0ca2bfeb7
commit 993bf57633
5 changed files with 29 additions and 7 deletions

View File

@ -37,6 +37,7 @@
<!-- Don't forget to update status.xml too! --> <!-- Don't forget to update status.xml too! -->
<release version="3.1-beta2" date="2008-05-??"> <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">44886] - Correctly process PICT metafile in EscherMetafileBlip</action>
<action dev="POI-DEVELOPERS" type="fix">44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action> <action dev="POI-DEVELOPERS" type="fix">44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action>
</release> </release>

View File

@ -34,6 +34,7 @@
<!-- Don't forget to update changes.xml too! --> <!-- Don't forget to update changes.xml too! -->
<changes> <changes>
<release version="3.1-beta2" date="2008-05-??"> <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">44886] - Correctly process PICT metafile in EscherMetafileBlip</action>
<action dev="POI-DEVELOPERS" type="fix">44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action> <action dev="POI-DEVELOPERS" type="fix">44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn</action>
</release> </release>

View 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. * @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. * @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++ ) for ( int i = 0; i < boundsheets.size(); i++ )
{ {
BoundSheetRecord boundSheetRecord = (BoundSheetRecord) boundsheets.get( i ); BoundSheetRecord boundSheetRecord = (BoundSheetRecord) boundsheets.get( i );
if (excludeSheetIdx != i && name.equals(boundSheetRecord.getSheetname())) if (excludeSheetIdx != i && name.equalsIgnoreCase(boundSheetRecord.getSheetname()))
return true; return true;
} }
return false; return false;

View File

@ -600,6 +600,8 @@ public class HSSFWorkbook extends POIDocument
* *
* @param sheetname sheetname to set for the sheet. * @param sheetname sheetname to set for the sheet.
* @return HSSFSheet representing the new 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) 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 * @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) public HSSFSheet getSheet(String name)
@ -652,7 +654,7 @@ public class HSSFWorkbook extends POIDocument
{ {
String sheetname = workbook.getSheetName(k); String sheetname = workbook.getSheetName(k);
if (sheetname.equals(name)) if (sheetname.equalsIgnoreCase(name))
{ {
retval = (HSSFSheet) sheets.get(k); retval = (HSSFSheet) sheets.get(k);
} }

View File

@ -17,6 +17,7 @@
package org.apache.poi.hssf.usermodel; package org.apache.poi.hssf.usermodel;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
@ -40,6 +41,23 @@ public final class TestHSSFWorkbook extends TestCase {
assertEquals( 3, nameRecord.getIndexToSheet() ); 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() { public void testDuplicateNames() {
HSSFWorkbook b = new HSSFWorkbook( ); HSSFWorkbook b = new HSSFWorkbook( );
b.createSheet("Sheet1"); b.createSheet("Sheet1");