From 30f7413789472ffa406d2a12601979943408c66d Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Thu, 1 May 2008 03:25:37 +0000 Subject: [PATCH] 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 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../org/apache/poi/hssf/model/Workbook.java | 6 +++--- .../poi/hssf/usermodel/HSSFWorkbook.java | 8 +++++--- .../poi/hssf/usermodel/TestHSSFWorkbook.java | 20 ++++++++++++++++++- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 2ee93cdefa..55308a758b 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,6 +37,7 @@ + 44892 - made HSSFWorkbook.getSheet(String) case insensitive 44886] - Correctly process PICT metafile in EscherMetafileBlip 44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 7a2bbf5ce7..58a560996d 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 44892 - made HSSFWorkbook.getSheet(String) case insensitive 44886] - Correctly process PICT metafile in EscherMetafileBlip 44893 - Correctly handle merged regions in HSSFSheet.autoSizeColumn diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index 8fa3010a4b..08f2263182 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -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; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 30776608ba..a76cfd159b 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -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 null 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); } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 3696bb940e..4c156e7b6f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -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"); -- 2.39.5