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