You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by gl...@apache.org on 2004/09/19 04:06:54 UTC
cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel TestHSSFWorkbook.java
glens 2004/09/18 19:06:54
Modified: 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
Log:
Bugzilla Bug 30951
Revision Changes Path
1.41 +19 -1 jakarta-poi/src/java/org/apache/poi/hssf/model/Workbook.java
Index: Workbook.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Workbook.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- Workbook.java 19 Sep 2004 01:37:33 -0000 1.40
+++ Workbook.java 19 Sep 2004 02:06:53 -0000 1.41
@@ -451,6 +451,24 @@
setSheetName( sheetnum, sheetname, (byte)0 );
}
+ /**
+ * Determines whether a workbook contains the privided sheet name.
+ *
+ * @param name the name to test
+ * @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.
+ */
+ public boolean doesContainsSheetName( String name, int excludeSheetIdx )
+ {
+ for ( int i = 0; i < boundsheets.size(); i++ )
+ {
+ BoundSheetRecord boundSheetRecord = (BoundSheetRecord) boundsheets.get( i );
+ if (excludeSheetIdx != i && name.equals(boundSheetRecord.getSheetname()))
+ return true;
+ }
+ return false;
+ }
+
public void setSheetName(int sheetnum, String sheetname, short encoding ) {
checkSheets(sheetnum);
BoundSheetRecord sheet = (BoundSheetRecord)boundsheets.get( sheetnum );
@@ -459,7 +477,7 @@
sheet.setCompressedUnicodeFlag( (byte)encoding );
}
- /**
+ /**
* sets the order of appearance for a given sheet.
*
* @param sheetname the name of the sheet to reorder
1.37 +8 -3 jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
Index: HSSFWorkbook.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- HSSFWorkbook.java 24 Aug 2004 12:54:01 -0000 1.36
+++ HSSFWorkbook.java 19 Sep 2004 02:06:54 -0000 1.37
@@ -244,14 +244,19 @@
* @param sheet number (0 based)
* @param sheet name
*/
-
public void setSheetName(int sheet, String name)
{
+ if (workbook.doesContainsSheetName( name, sheet ))
+ throw new IllegalArgumentException( "The workbook already contains a sheet with this name" );
+
workbook.setSheetName( sheet, name, ENCODING_COMPRESSED_UNICODE );
}
public void setSheetName( int sheet, String name, short encoding )
{
+ if (workbook.doesContainsSheetName( name, sheet ))
+ throw new IllegalArgumentException( "The workbook already contains a sheet with this name" );
+
if (sheet > (sheets.size() - 1))
{
throw new RuntimeException("Sheet out of bounds");
@@ -361,9 +366,9 @@
public HSSFSheet createSheet(String sheetname)
{
+ if (workbook.doesContainsSheetName( sheetname, -1 ))
+ throw new IllegalArgumentException( "The workbook already contains a sheet of this name" );
-// if (getNumberOfSheets() == 3)
-// throw new RuntimeException("You cannot have more than three sheets in HSSF 1.0");
HSSFSheet sheet = new HSSFSheet(workbook);
sheets.add(sheet);
1.3 +40 -0 jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Index: TestHSSFWorkbook.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestHSSFWorkbook.java 23 Aug 2004 08:52:52 -0000 1.2
+++ TestHSSFWorkbook.java 19 Sep 2004 02:06:54 -0000 1.3
@@ -18,4 +18,44 @@
NameRecord nameRecord = b.getWorkbook().getNameRecord( 0 );
assertEquals( 3, nameRecord.getIndexToSheet() );
}
+
+ public void testDuplicateNames()
+ throws Exception
+ {
+ HSSFWorkbook b = new HSSFWorkbook( );
+ b.createSheet();
+ b.createSheet();
+ b.createSheet("name1");
+ try
+ {
+ b.createSheet("name1");
+ fail();
+ }
+ catch ( IllegalArgumentException pass )
+ {
+ }
+ b.createSheet();
+ try
+ {
+ b.setSheetName( 3, "name1" );
+ fail();
+ }
+ catch ( IllegalArgumentException pass )
+ {
+ }
+
+ try
+ {
+ b.setSheetName( 3, "name1", HSSFWorkbook.ENCODING_UTF_16 );
+ fail();
+ }
+ catch ( IllegalArgumentException pass )
+ {
+ }
+
+ b.setSheetName( 3, "name2", HSSFWorkbook.ENCODING_UTF_16 );
+ b.setSheetName( 3, "name2", HSSFWorkbook.ENCODING_UTF_16 );
+ b.setSheetName( 3, "name2" );
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org