dmui        2004/02/09 14:41:27

  Modified:    src/testcases/org/apache/poi/hssf/usermodel Tag:
                        REL_2_BRANCH TestCloneSheet.java
                        TestSheetShiftRows.java TestHSSFSheet.java
               src/java/org/apache/poi/hssf/record Tag: REL_2_BRANCH
                        RecordFactory.java
               src/java/org/apache/poi/hssf/model Tag: REL_2_BRANCH
                        Sheet.java
               src/java/org/apache/poi/hssf/dev Tag: REL_2_BRANCH
                        BiffViewer.java
               src/java/org/apache/poi/hssf/usermodel Tag: REL_2_BRANCH
                        HSSFSheet.java
               src/testcases/org/apache/poi/hssf/model Tag: REL_2_BRANCH
                        SheetTest.java
  Added:       src/java/org/apache/poi/hssf/record Tag: REL_2_BRANCH
                        VerticalPageBreakRecord.java
                        HorizontalPageBreakRecord.java PageBreakRecord.java
               src/testcases/org/apache/poi/hssf/data Tag: REL_2_BRANCH
                        SimpleWithPageBreaks.xls
  Log:
  Patch to support Horizontal and Vertical Page breaks, included testcases
  and files.
  PR:
  Obtained from:
  Submitted by: 
  Reviewed by:  
  CVS: ----------------------------------------------------------------------
  CVS: PR:
  CVS:   If this change addresses a PR in the problem report tracking
  CVS:   database, then enter the PR number(s) here.
  CVS: Obtained from:
  CVS:   If this change has been taken from another system, such as NCSA,
  CVS:   then name the system in this line, otherwise delete it.
  CVS: Submitted by:
  CVS:   If this code has been contributed to Apache by someone else; i.e.,
  CVS:   they sent us a patch or a new module, then include their name/email
  CVS:   address here. If this is your work then delete this line.
  CVS: Reviewed by:
  CVS:   If we are doing pre-commit code reviews and someone else has
  CVS:   reviewed your changes, include their name(s) here.
  CVS:   If you have not had it reviewed then delete this line.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.2.2.2   +19 -0     
jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java
  
  Index: TestCloneSheet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- TestCloneSheet.java       13 Oct 2003 16:45:01 -0000      1.2.2.1
  +++ TestCloneSheet.java       9 Feb 2004 22:41:26 -0000       1.2.2.2
  @@ -82,4 +82,23 @@
                catch(Exception e){e.printStackTrace();fail(e.getMessage());}
        }
   
  +   /**
  +    * Ensures that pagebreak cloning works properly
  +    *
  +    */
  +   public void testPageBreakClones() {
  +      HSSFWorkbook b = new HSSFWorkbook();
  +      HSSFSheet s = b.createSheet("Test");
  +      s.setRowBreak(3);
  +      s.setColumnBreak((short)6);
  +      
  +      HSSFSheet clone = b.cloneSheet(0);
  +      assertTrue("Row 3 not broken", clone.isRowBroken(3));
  +      assertTrue("Column 6 not broken", clone.isColumnBroken((short)6));
  +      
  +      s.removeRowBreak(3);
  +      
  +      assertTrue("Row 3 still should be broken", clone.isRowBroken(3));
  +   }
  +   
   }
  
  
  
  1.2.2.2   +26 -10    
jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestSheetShiftRows.java
  
  Index: TestSheetShiftRows.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestSheetShiftRows.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- TestSheetShiftRows.java   23 Oct 2003 17:16:03 -0000      1.2.2.1
  +++ TestSheetShiftRows.java   9 Feb 2004 22:41:26 -0000       1.2.2.2
  @@ -169,11 +169,11 @@
        * @author Toshiaki Kamoshida (kamoshida.toshiaki at future dot co dot jp)
        */
       public void testShiftRow(){
  -     HSSFWorkbook b = new HSSFWorkbook();
  -     HSSFSheet s    = b.createSheet();
  -     s.createRow(0).createCell((short)0).setCellValue("TEST1");
  -     s.createRow(3).createCell((short)0).setCellValue("TEST2");
  -     s.shiftRows(0,4,1);
  +     HSSFWorkbook b = new HSSFWorkbook();
  +     HSSFSheet s    = b.createSheet();
  +     s.createRow(0).createCell((short)0).setCellValue("TEST1");
  +     s.createRow(3).createCell((short)0).setCellValue("TEST2");
  +     s.shiftRows(0,4,1);
       }
   
       /**
  @@ -182,11 +182,27 @@
        * @author Toshiaki Kamoshida (kamoshida.toshiaki at future dot co dot jp)
        */
       public void testShiftRow0(){
  -     HSSFWorkbook b = new HSSFWorkbook();
  -     HSSFSheet s    = b.createSheet();
  -     s.createRow(0).createCell((short)0).setCellValue("TEST1");
  -     s.createRow(3).createCell((short)0).setCellValue("TEST2");
  -     s.shiftRows(0,4,1);
  +     HSSFWorkbook b = new HSSFWorkbook();
  +     HSSFSheet s    = b.createSheet();
  +     s.createRow(0).createCell((short)0).setCellValue("TEST1");
  +     s.createRow(3).createCell((short)0).setCellValue("TEST2");
  +     s.shiftRows(0,4,1);
  +    }
  +    
  +    /**
  +     * When shifting rows, the page breaks should go with it
  +     *
  +     */
  +    public void testShiftRowBreaks(){
  +      HSSFWorkbook b = new HSSFWorkbook();
  +      HSSFSheet s    = b.createSheet();
  +      HSSFRow row = s.createRow(4);
  +      row.createCell((short)0).setCellValue("test");
  +      s.setRowBreak(4);
  +      
  +      s.shiftRows(4, 4, 2);
  +      assertTrue("Row number 6 should have a pagebreak", s.isRowBroken(6));
  +      
       }
   }
   
  
  
  
  1.12.2.6  +66 -17    
jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
  
  Index: TestHSSFSheet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java,v
  retrieving revision 1.12.2.5
  retrieving revision 1.12.2.6
  diff -u -r1.12.2.5 -r1.12.2.6
  --- TestHSSFSheet.java        23 Aug 2003 18:54:28 -0000      1.12.2.5
  +++ TestHSSFSheet.java        9 Feb 2004 22:41:26 -0000       1.12.2.6
  @@ -1,7 +1,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -345,8 +345,8 @@
        * @author Shawn Laubach (slaubach at apache dot org)
        */
       public void testDisplayOptions() throws Exception {
  -     HSSFWorkbook wb = new HSSFWorkbook();
  -     HSSFSheet sheet = wb.createSheet();
  +     HSSFWorkbook wb = new HSSFWorkbook();
  +     HSSFSheet sheet = wb.createSheet();
        
           File tempFile = File.createTempFile("display", "test.xls");
           FileOutputStream stream = new FileOutputStream(tempFile);
  @@ -356,15 +356,15 @@
           FileInputStream readStream = new FileInputStream(tempFile);
           wb = new HSSFWorkbook(readStream);
           sheet = wb.getSheetAt(0);
  -     readStream.close();
  -
  -     assertEquals(sheet.isDisplayGridlines(), true);
  -     assertEquals(sheet.isDisplayRowColHeadings(), true);
  -     assertEquals(sheet.isDisplayFormulas(), false);
  -
  -     sheet.setDisplayGridlines(false);
  -     sheet.setDisplayRowColHeadings(false);
  -     sheet.setDisplayFormulas(true);
  +     readStream.close();
  +    
  +     assertEquals(sheet.isDisplayGridlines(), true);
  +     assertEquals(sheet.isDisplayRowColHeadings(), true);
  +     assertEquals(sheet.isDisplayFormulas(), false);
  +    
  +     sheet.setDisplayGridlines(false);
  +     sheet.setDisplayRowColHeadings(false);
  +     sheet.setDisplayFormulas(true);
   
           tempFile = File.createTempFile("display", "test.xls");
           stream = new FileOutputStream(tempFile);
  @@ -374,14 +374,63 @@
           readStream = new FileInputStream(tempFile);
           wb = new HSSFWorkbook(readStream);
           sheet = wb.getSheetAt(0);
  -     readStream.close();
  +     readStream.close();
  +    
  +    
  +     assertEquals(sheet.isDisplayGridlines(), false);
  +     assertEquals(sheet.isDisplayRowColHeadings(), false);
  +     assertEquals(sheet.isDisplayFormulas(), true);
  +    }
  +
  +    
  +    /**
  +     * Make sure the excel file loads work
  +     *
  +     */
  +    public void testPageBreakFiles() throws Exception{
  +        FileInputStream fis = null;
  +        HSSFWorkbook wb     = null;
  +        
  +        String filename = System.getProperty("HSSF.testdata.path");
   
  +        filename = filename + "/SimpleWithPageBreaks.xls";
  +        fis = new FileInputStream(filename);
  +        wb = new HSSFWorkbook(fis);
  +        fis.close();
  +        
  +        HSSFSheet sheet = wb.getSheetAt(0);
  +        assertNotNull(sheet);
  +        
  +        assertEquals("1 row page break", 1, sheet.getRowBreaks().length);
  +        assertEquals("1 column page break", 1, sheet.getColumnBreaks().length);
   
  -     assertEquals(sheet.isDisplayGridlines(), false);
  -     assertEquals(sheet.isDisplayRowColHeadings(), false);
  -     assertEquals(sheet.isDisplayFormulas(), true);
  -    }
  +        assertTrue("No row page break", sheet.isRowBroken(22));
  +        assertTrue("No column page break", sheet.isColumnBroken((short)4));
  +        
  +        sheet.setRowBreak(10);        
  +        sheet.setColumnBreak((short)13);
  +
  +        assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
  +        assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
  +        
  +        File tempFile = File.createTempFile("display", "testPagebreaks.xls");
  +        FileOutputStream stream = new FileOutputStream(tempFile);
  +        wb.write(stream);
  +        stream.close();
  +        
  +        wb = new HSSFWorkbook(new FileInputStream(tempFile));
  +        sheet = wb.getSheetAt(0);
  +
  +        assertTrue("No row page break", sheet.isRowBroken(22));
  +        assertTrue("No column page break", sheet.isColumnBroken((short)4));
   
  +        
  +        assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
  +        assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
  +        
  +        
  +    }
  +    
        public static void main(java.lang.String[] args) {
                 junit.textui.TestRunner.run(TestHSSFSheet.class);
        }    
  
  
  
  No                   revision
  No                   revision
  1.16.2.1  +5 -3      
jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java
  
  Index: RecordFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- RecordFactory.java        8 May 2003 00:02:03 -0000       1.16
  +++ RecordFactory.java        9 Feb 2004 22:41:26 -0000       1.16.2.1
  @@ -2,7 +2,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -112,7 +112,8 @@
                   FormulaRecord.class, BoolErrRecord.class, ExternSheetRecord.class,
                   NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
           } else {
               records = new Class[]
  @@ -143,7 +144,8 @@
                   BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class,
                   LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
   
           }
  
  
  
  No                   revision
  
  Index: RecordFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- RecordFactory.java        8 May 2003 00:02:03 -0000       1.16
  +++ RecordFactory.java        9 Feb 2004 22:41:26 -0000       1.16.2.1
  @@ -2,7 +2,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -112,7 +112,8 @@
                   FormulaRecord.class, BoolErrRecord.class, ExternSheetRecord.class,
                   NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
           } else {
               records = new Class[]
  @@ -143,7 +144,8 @@
                   BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class,
                   LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
   
           }
  
  
  
  No                   revision
  
  Index: RecordFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java,v
  retrieving revision 1.16
  retrieving revision 1.16.2.1
  diff -u -r1.16 -r1.16.2.1
  --- RecordFactory.java        8 May 2003 00:02:03 -0000       1.16
  +++ RecordFactory.java        9 Feb 2004 22:41:26 -0000       1.16.2.1
  @@ -2,7 +2,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -112,7 +112,8 @@
                   FormulaRecord.class, BoolErrRecord.class, ExternSheetRecord.class,
                   NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
           } else {
               records = new Class[]
  @@ -143,7 +144,8 @@
                   BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class,
                   LeftMarginRecord.class, RightMarginRecord.class,
                   TopMarginRecord.class, BottomMarginRecord.class,
  -                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class
  +                PaletteRecord.class, StringRecord.class, RecalcIdRecord.class, 
SharedFormulaRecord.class,
  +                HorizontalPageBreakRecord.class, VerticalPageBreakRecord.class
               };
   
           }
  
  
  
  1.1.2.1   +107 -0    
jakarta-poi/src/java/org/apache/poi/hssf/record/Attic/VerticalPageBreakRecord.java
  
  
  
  
  1.1.2.1   +107 -0    
jakarta-poi/src/java/org/apache/poi/hssf/record/Attic/HorizontalPageBreakRecord.java
  
  
  
  
  1.1.2.1   +304 -0    
jakarta-poi/src/java/org/apache/poi/hssf/record/Attic/PageBreakRecord.java
  
  
  
  
  No                   revision
  No                   revision
  1.31.2.9  +200 -49   jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java
  
  Index: Sheet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v
  retrieving revision 1.31.2.8
  retrieving revision 1.31.2.9
  diff -u -r1.31.2.8 -r1.31.2.9
  --- Sheet.java        21 Sep 2003 09:58:24 -0000      1.31.2.8
  +++ Sheet.java        9 Feb 2004 22:41:26 -0000       1.31.2.9
  @@ -2,7 +2,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -111,7 +111,7 @@
       protected WindowTwoRecord           windowTwo        = null;
       protected MergeCellsRecord          merged           = null;
       protected Margin                    margins[]        = null;
  -    protected List                           mergedRecords    = new ArrayList();
  +    protected List                            mergedRecords    = new ArrayList();
       protected int                       numMergedRegions = 0;
       protected SelectionRecord           selection        = null;
       private static POILogger            log              = 
POILogFactory.getLogger(Sheet.class);
  @@ -121,8 +121,11 @@
       private Iterator                    valueRecIterator = null;
       private Iterator                    rowRecIterator   = null;
       protected int                       eofLoc           = 0;
  -     protected ProtectRecord             protect          = null;
  -
  +      protected ProtectRecord             protect          = null;
  +      protected PageBreakRecord                       rowBreaks                 = 
null;
  +      protected PageBreakRecord                       colBreaks                 = 
null;
  +     
  +     
       public static final byte PANE_LOWER_RIGHT = (byte)0;
       public static final byte PANE_UPPER_RIGHT = (byte)1;
       public static final byte PANE_LOWER_LEFT = (byte)2;
  @@ -155,7 +158,7 @@
        */
       public static Sheet createSheet(List recs, int sheetnum, int offset)
       {
  -        log.logFormatted(log.DEBUG,
  +        log.logFormatted(POILogger.DEBUG,
                            "Sheet createSheet (existing file) with %",
                            new Integer(recs.size()));
           Sheet     retval             = new Sheet();
  @@ -170,18 +173,18 @@
   
               if (rec.getSid() == LabelRecord.sid)
               {
  -                log.log(log.DEBUG, "Hit label record.");
  +                log.log(POILogger.DEBUG, "Hit label record.");
                   retval.containsLabels = true;
               }
               else if (rec.getSid() == BOFRecord.sid)
               {
                   bofEofNestingLevel++;
  -                log.log(log.DEBUG, "Hit BOF record. Nesting increased to " + 
bofEofNestingLevel);
  +                log.log(POILogger.DEBUG, "Hit BOF record. Nesting increased to " + 
bofEofNestingLevel);
               }
               else if (rec.getSid() == EOFRecord.sid)
               {
                   --bofEofNestingLevel;
  -                log.log(log.DEBUG, "Hit EOF record. Nesting decreased to " + 
bofEofNestingLevel);
  +                log.log(POILogger.DEBUG, "Hit EOF record. Nesting decreased to " + 
bofEofNestingLevel);
                   if (bofEofNestingLevel == 0) {
                       records.add(rec);
                       retval.eofLoc = k;
  @@ -289,8 +292,16 @@
                        else if ( rec.getSid() == ProtectRecord.sid )
                        {
                                retval.protect = (ProtectRecord) rec;
  +                     } 
  +                     else if (rec.getSid() == PageBreakRecord.HORIZONTAL_SID) 
  +                     {       
  +                             retval.rowBreaks = (PageBreakRecord)rec;               
                 
                        }
  -
  +                     else if (rec.getSid() == PageBreakRecord.VERTICAL_SID) 
  +                     {       
  +                             retval.colBreaks = (PageBreakRecord)rec;               
                 
  +                     }
  +            
               if (rec != null)
               {
                   records.add(rec);
  @@ -307,7 +318,7 @@
   //        {
   //            retval.cells = new ValueRecordsAggregate();
   //        }
  -        log.log(log.DEBUG, "sheet createSheet (existing file) exited");
  +        log.log(POILogger.DEBUG, "sheet createSheet (existing file) exited");
           return retval;
       }
   
  @@ -366,7 +377,7 @@
   
       public static Sheet createSheet(List records, int sheetnum)
       {
  -        log.log(log.DEBUG,
  +        log.log(POILogger.DEBUG,
                   "Sheet createSheet (exisiting file) assumed offset 0");
           return createSheet(records, sheetnum, 0);
       }
  @@ -381,7 +392,7 @@
   
       public static Sheet createSheet()
       {
  -        log.log(log.DEBUG, "Sheet createsheet from scratch called");
  +        log.log(POILogger.DEBUG, "Sheet createsheet from scratch called");
           Sheet     retval  = new Sheet();
           ArrayList records = new ArrayList(30);
   
  @@ -404,8 +415,14 @@
                   (DefaultRowHeightRecord) retval.createDefaultRowHeight();
           records.add( retval.defaultrowheight );
           records.add( retval.createWSBool() );
  +
  +        retval.rowBreaks = new PageBreakRecord(PageBreakRecord.HORIZONTAL_SID);
  +        records.add(retval.rowBreaks);
  +        retval.colBreaks = new PageBreakRecord(PageBreakRecord.VERTICAL_SID);
  +        records.add(retval.colBreaks);
  +        
           retval.header = (HeaderRecord) retval.createHeader();
  -        records.add( retval.header );
  +        records.add( retval.header );        
           retval.footer = (FooterRecord) retval.createFooter();
           records.add( retval.footer );
           records.add( retval.createHCenter() );
  @@ -415,9 +432,9 @@
           retval.defaultcolwidth =
                   (DefaultColWidthRecord) retval.createDefaultColWidth();
           records.add( retval.defaultcolwidth);
  -        retval.dims    = ( DimensionsRecord ) retval.createDimensions();
  -        retval.dimsloc = 19;
  +        retval.dims    = ( DimensionsRecord ) retval.createDimensions();        
           records.add(retval.dims);
  +        retval.dimsloc = records.size()-1;
           records.add(retval.windowTwo = retval.createWindowTwo());
           retval.setLoc(records.size() - 1);
           retval.selection = 
  @@ -426,8 +443,9 @@
                retval.protect = (ProtectRecord) retval.createProtect();
                records.add(retval.protect);
           records.add(retval.createEOF());
  +        
           retval.records = records;
  -        log.log(log.DEBUG, "Sheet createsheet from scratch exit");
  +        log.log(POILogger.DEBUG, "Sheet createsheet from scratch exit");
           return retval;
       }
   
  @@ -566,7 +584,7 @@
   
       public void convertLabelRecords(Workbook wb)
       {
  -        log.log(log.DEBUG, "convertLabelRecords called");
  +        log.log(POILogger.DEBUG, "convertLabelRecords called");
           if (containsLabels)
           {
               for (int k = 0; k < records.size(); k++)
  @@ -590,7 +608,7 @@
                   }
               }
           }
  -        log.log(log.DEBUG, "convertLabelRecords exit");
  +        log.log(POILogger.DEBUG, "convertLabelRecords exit");
       }
   
       /**
  @@ -604,8 +622,8 @@
       {
           checkCells();
           checkRows();
  -        log.log(log.DEBUG, "Sheet.getNumRecords");
  -        log.logFormatted(log.DEBUG, "returning % + % + % - 2 = %", new int[]
  +        log.log(POILogger.DEBUG, "Sheet.getNumRecords");
  +        log.logFormatted(POILogger.DEBUG, "returning % + % + % - 2 = %", new int[]
           {
               records.size(), cells.getPhysicalNumberOfCells(),
               rows.getPhysicalNumberOfRows(),
  @@ -628,8 +646,8 @@
       public void setDimensions(int firstrow, short firstcol, int lastrow,
                                 short lastcol)
       {
  -        log.log(log.DEBUG, "Sheet.setDimensions");
  -        log.log(log.DEBUG,
  +        log.log(POILogger.DEBUG, "Sheet.setDimensions");
  +        log.log(POILogger.DEBUG,
                   (new StringBuffer("firstrow")).append(firstrow)
                       .append("firstcol").append(firstcol).append("lastrow")
                       .append(lastrow).append("lastcol").append(lastcol)
  @@ -638,7 +656,7 @@
           dims.setFirstRow(firstrow);
           dims.setLastCol(lastcol);
           dims.setLastRow(lastrow);
  -        log.log(log.DEBUG, "Sheet.setDimensions exiting");
  +        log.log(POILogger.DEBUG, "Sheet.setDimensions exiting");
       }
   
       /**
  @@ -660,7 +678,7 @@
       public void setLoc(int loc)
       {
           valueRecIterator = null;
  -        log.log(log.DEBUG, "sheet.setLoc(): " + loc);
  +        log.log(POILogger.DEBUG, "sheet.setLoc(): " + loc);
           this.loc = loc;
       }
   
  @@ -671,7 +689,7 @@
   
       public int getLoc()
       {
  -        log.log(log.DEBUG, "sheet.getLoc():" + loc);
  +        log.log(POILogger.DEBUG, "sheet.getLoc():" + loc);
           return loc;
       }
   
  @@ -709,7 +727,7 @@
   
       public byte [] serialize()
       {
  -        log.log(log.DEBUG, "Sheet.serialize");
  +        log.log(POILogger.DEBUG, "Sheet.serialize");
   
           // addDBCellRecords();
           byte[] retval    = null;
  @@ -726,7 +744,7 @@
           // for (int k = 0; k < bytes.size(); k++)
           // {
           // arraysize += (( byte [] ) bytes.get(k)).length;
  -        // log.debug((new StringBuffer("arraysize=")).append(arraysize)
  +        // POILogger.DEBUG((new StringBuffer("arraysize=")).append(arraysize)
           // .toString());
           // }
           retval = new byte[ arraysize ];
  @@ -738,7 +756,7 @@
               pos += (( Record ) records.get(k)).serialize(pos,
                       retval);   // rec.length;
           }
  -        log.log(log.DEBUG, "Sheet.serialize returning " + retval);
  +        log.log(POILogger.DEBUG, "Sheet.serialize returning " + retval);
           return retval;
       }
   
  @@ -753,7 +771,7 @@
   
       public int serialize(int offset, byte [] data)
       {
  -        log.log(log.DEBUG, "Sheet.serialize using offsets");
  +        log.log(POILogger.DEBUG, "Sheet.serialize using offsets");
   
           // addDBCellRecords();
           // ArrayList bytes     = new ArrayList(4096);
  @@ -768,7 +786,7 @@
           // for (int k = 0; k < bytes.size(); k++)
           // {
           // arraysize += (( byte [] ) bytes.get(k)).length;
  -        // log.debug((new StringBuffer("arraysize=")).append(arraysize)
  +        // POILogger.DEBUG((new StringBuffer("arraysize=")).append(arraysize)
           // .toString());
           // }
           for (int k = 0; k < records.size(); k++)
  @@ -787,7 +805,7 @@
               pos += record.serialize(pos + offset, data );   // rec.length;
   
           }
  -        log.log(log.DEBUG, "Sheet.serialize returning ");
  +        log.log(POILogger.DEBUG, "Sheet.serialize returning ");
           return pos;
       }
   
  @@ -801,7 +819,7 @@
   
       public RowRecord createRow(int row)
       {
  -        log.log(log.DEBUG, "create row number " + row);
  +        log.log(POILogger.DEBUG, "create row number " + row);
           RowRecord rowrec = new RowRecord();
   
           //rowrec.setRowNumber(( short ) row);
  @@ -826,7 +844,7 @@
       //public LabelSSTRecord createLabelSST(short row, short col, int index)
       public LabelSSTRecord createLabelSST(int row, short col, int index)
       {
  -        log.logFormatted(log.DEBUG, "create labelsst row,col,index %,%,%",
  +        log.logFormatted(POILogger.DEBUG, "create labelsst row,col,index %,%,%",
                            new int[]
           {
               row, col, index
  @@ -853,7 +871,7 @@
       //public NumberRecord createNumber(short row, short col, double value)
       public NumberRecord createNumber(int row, short col, double value)
       {
  -        log.logFormatted(log.DEBUG, "create number row,col,value %,%,%",
  +        log.logFormatted(POILogger.DEBUG, "create number row,col,value %,%,%",
                            new double[]
           {
               row, col, value
  @@ -878,8 +896,8 @@
       //public BlankRecord createBlank(short row, short col)
       public BlankRecord createBlank(int row, short col)
       {
  -        //log.logFormatted(log.DEBUG, "create blank row,col %,%", new short[]
  -        log.logFormatted(log.DEBUG, "create blank row,col %,%", new int[]
  +        //log.logFormatted(POILogger.DEBUG, "create blank row,col %,%", new short[]
  +        log.logFormatted(POILogger.DEBUG, "create blank row,col %,%", new int[]
           {
               row, col
           });
  @@ -905,7 +923,7 @@
       //public FormulaRecord createFormula(short row, short col, String formula)
       public FormulaRecord createFormula(int row, short col, String formula)
       {
  -        log.logFormatted(log.DEBUG, "create formula row,col,formula %,%,%",
  +        log.logFormatted(POILogger.DEBUG, "create formula row,col,formula %,%,%",
                            //new short[]
                            new int[]
           {
  @@ -949,7 +967,7 @@
       public void addValueRecord(int row, CellValueRecordInterface col)
       {
           checkCells();
  -        log.logFormatted(log.DEBUG, "add value record  row,loc %,%", new int[]
  +        log.logFormatted(POILogger.DEBUG, "add value record  row,loc %,%", new int[]
           {
               row, loc
           });
  @@ -1003,7 +1021,7 @@
       public void removeValueRecord(int row, CellValueRecordInterface col)
       {
           checkCells();
  -        log.logFormatted(log.DEBUG, "remove value record row,dimsloc %,%",
  +        log.logFormatted(POILogger.DEBUG, "remove value record row,dimsloc %,%",
                            new int[]{row, dimsloc} );
           loc = dimsloc;
           cells.removeCell(col);
  @@ -1044,7 +1062,7 @@
       {
           checkCells();
           setLoc(dimsloc);
  -        log.log(log.DEBUG, "replaceValueRecord ");
  +        log.log(POILogger.DEBUG, "replaceValueRecord ");
           cells.insertCell(newval);
   
           /*
  @@ -1080,7 +1098,7 @@
       public void addRow(RowRecord row)
       {
           checkRows();
  -        log.log(log.DEBUG, "addRow ");
  +        log.log(POILogger.DEBUG, "addRow ");
           DimensionsRecord d = ( DimensionsRecord ) records.get(getDimsLoc());
   
           if (row.getRowNumber() > d.getLastRow())
  @@ -1134,7 +1152,7 @@
            *   }
            * }
            */
  -        log.log(log.DEBUG, "exit addRow");
  +        log.log(POILogger.DEBUG, "exit addRow");
       }
   
       /**
  @@ -1194,7 +1212,7 @@
   
       public CellValueRecordInterface getNextValueRecord()
       {
  -        log.log(log.DEBUG, "getNextValue loc= " + loc);
  +        log.log(POILogger.DEBUG, "getNextValue loc= " + loc);
           if (valueRecIterator == null)
           {
               valueRecIterator = cells.getIterator();
  @@ -1241,7 +1259,7 @@
   
   /*    public Record getNextRowOrValue()
       {
  -        log.debug((new StringBuffer("getNextRow loc= ")).append(loc)
  +        POILogger.DEBUG((new StringBuffer("getNextRow loc= ")).append(loc)
               .toString());
           if (this.getLoc() < records.size())
           {
  @@ -1281,7 +1299,7 @@
   
       public RowRecord getNextRow()
       {
  -        log.log(log.DEBUG, "getNextRow loc= " + loc);
  +        log.log(POILogger.DEBUG, "getNextRow loc= " + loc);
           if (rowRecIterator == null)
           {
               rowRecIterator = rows.getIterator();
  @@ -1327,7 +1345,7 @@
       //public RowRecord getRow(short rownum)
       public RowRecord getRow(int rownum)
       {
  -        log.log(log.DEBUG, "getNextRow loc= " + loc);
  +        log.log(POILogger.DEBUG, "getNextRow loc= " + loc);
           return rows.getRow(rownum);
   
           /*
  @@ -1543,7 +1561,7 @@
       {
           RefModeRecord retval = new RefModeRecord();
   
  -        retval.setMode(retval.USE_A1_MODE);
  +        retval.setMode(RefModeRecord.USE_A1_MODE);
           return retval;
       }
   
  @@ -2161,7 +2179,7 @@
   
       public int getDimsLoc()
       {
  -        log.log(log.DEBUG, "getDimsLoc dimsloc= " + dimsloc);
  +        log.log(POILogger.DEBUG, "getDimsLoc dimsloc= " + dimsloc);
           return dimsloc;
       }
   
  @@ -2533,7 +2551,7 @@
   
          protected Record createProtect()
          {
  -               log.log(log.DEBUG, "create protect record with protection disabled");
  +               log.log(POILogger.DEBUG, "create protect record with protection 
disabled");
                  ProtectRecord retval = new ProtectRecord();
   
                  retval.setProtect(false);
  @@ -2603,5 +2621,138 @@
           if (margins == null)
               margins = new Margin[4];
        return margins;
  +    }
  +    
  +    /**
  +     * Shifts all the page breaks in the range "count" number of rows/columns
  +     * @param breaks The page record to be shifted
  +     * @param start Starting "main" value to shift breaks
  +     * @param stop Ending "main" value to shift breaks
  +     * @param count number of units (rows/columns) to shift by 
  +     */
  +    public void shiftBreaks(PageBreakRecord breaks, short start, short stop, int 
count) {
  +     
  +     if(rowBreaks == null)
  +             return;
  +     Iterator iterator = breaks.getBreaksIterator();
  +     List shiftedBreak = new ArrayList();
  +     while(iterator.hasNext()) 
  +     {
  +             PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +             short breakLocation = breakItem.main;
  +             boolean inStart = (breakLocation >= start);
  +             boolean inEnd = (breakLocation <= stop);
  +             if(inStart && inEnd)
  +                     shiftedBreak.add(breakItem);
  +     }
  +     
  +     iterator = shiftedBreak.iterator();
  +     while (iterator.hasNext()) {                    
  +                     PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +             breaks.removeBreak(breakItem.main);
  +             breaks.addBreak((short)(breakItem.main+count), breakItem.subFrom, 
breakItem.subTo);
  +     }
  +    }
  +    
  +    /**
  +     * Sets a page break at the indicated row
  +     * @param row
  +     */
  +    public void setRowBreak(int row, short fromCol, short toCol) {           
  +     rowBreaks.addBreak((short)row, fromCol, toCol);
  +    }
  +
  +    /**
  +     * Removes a page break at the indicated row
  +     * @param row
  +     */
  +    public void removeRowBreak(int row) {
  +     rowBreaks.removeBreak((short)row);
  +    }
  +
  +    /**
  +     * Queries if the specified row has a page break
  +     * @param row
  +     * @return true if the specified row has a page break
  +     */
  +    public boolean isRowBroken(int row) {
  +     return rowBreaks.getBreak((short)row) != null;
  +    }
  +
  +    /**
  +     * Sets a page break at the indicated column
  +     * @param row
  +     */
  +    public void setColumnBreak(short column, short fromRow, short toRow) {          
 
  +     colBreaks.addBreak(column, fromRow, toRow);
  +    }
  +
  +    /**
  +     * Removes a page break at the indicated column
  +     * @param row
  +     */
  +    public void removeColumnBreak(short column) {
  +     colBreaks.removeBreak(column);
  +    }
  +
  +    /**
  +     * Queries if the specified column has a page break
  +     * @param row
  +     * @return true if the specified column has a page break
  +     */
  +    public boolean isColumnBroken(short column) {
  +     return colBreaks.getBreak(column) != null;
  +    }
  +    
  +    /**
  +     * Shifts the horizontal page breaks for the indicated count
  +     * @param startingRow
  +     * @param endingRow
  +     * @param count
  +     */
  +    public void shiftRowBreaks(int startingRow, int endingRow, int count) {
  +     shiftBreaks(rowBreaks, (short)startingRow, (short)endingRow, (short)count);
  +    }
  +
  +    /**
  +     * Shifts the vertical page breaks for the indicated count
  +     * @param startingCol
  +     * @param endingCol
  +     * @param count
  +     */
  +    public void shiftColumnBreaks(short startingCol, short endingCol, short count) {
  +     shiftBreaks(colBreaks, startingCol, endingCol, count);
  +    }
  +    
  +    /**
  +     * Returns all the row page breaks
  +     * @return
  +     */
  +    public Iterator getRowBreaks() {
  +     return rowBreaks.getBreaksIterator();
  +    }
  +    
  +    /**
  +     * Returns the number of row page breaks
  +     * @return
  +     */
  +    public int getNumRowBreaks(){
  +     return (int)rowBreaks.getNumBreaks();
  +    }
  +    
  +    /**
  +     * Returns all the column page breaks
  +     * @return
  +     */
  +    public Iterator getColumnBreaks(){
  +     return colBreaks.getBreaksIterator();
  +    }
  +    
  +    /**
  +     * Returns the number of column page breaks
  +     * @return
  +     */
  +    public int getNumColumnBreaks(){
  +     return (int)colBreaks.getNumBreaks();
       }
   }
  
  
  
  No                   revision
  No                   revision
  1.31.2.1  +9 -1      jakarta-poi/src/java/org/apache/poi/hssf/dev/BiffViewer.java
  
  Index: BiffViewer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/dev/BiffViewer.java,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- BiffViewer.java   8 May 2003 00:02:03 -0000       1.31
  +++ BiffViewer.java   9 Feb 2004 22:41:27 -0000       1.31.2.1
  @@ -2,7 +2,7 @@
    *  ====================================================================
    *  The Apache Software License, Version 1.1
    *
  - *  Copyright (c) 2003 The Apache Software Foundation.  All rights
  + *  Copyright (c) 2004 The Apache Software Foundation.  All rights
    *  reserved.
    *
    *  Redistribution and use in source and binary forms, with or without
  @@ -633,6 +633,14 @@
               case SharedFormulaRecord.sid:
                 retval = new SharedFormulaRecord( rectype, size, data);
                 break;
  +            case HorizontalPageBreakRecord.sid:
  +                retval = new HorizontalPageBreakRecord( rectype, size, data);
  +                break;
  +            case VerticalPageBreakRecord.sid:
  +                retval = new VerticalPageBreakRecord( rectype, size, data);
  +                break;
  +                
  +                 
               default:
                   retval = new UnknownRecord( rectype, size, data );
           }
  
  
  
  No                   revision
  No                   revision
  1.1.2.1   +23 -0     
jakarta-poi/src/testcases/org/apache/poi/hssf/data/Attic/SimpleWithPageBreaks.xls
  
        <<Binary file>>
  
  
  No                   revision
  No                   revision
  1.21.2.4  +111 -4    
jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
  
  Index: HSSFSheet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java,v
  retrieving revision 1.21.2.3
  retrieving revision 1.21.2.4
  diff -u -r1.21.2.3 -r1.21.2.4
  --- HSSFSheet.java    23 Aug 2003 18:54:28 -0000      1.21.2.3
  +++ HSSFSheet.java    9 Feb 2004 22:41:27 -0000       1.21.2.4
  @@ -1,7 +1,7 @@
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -68,6 +68,7 @@
   import org.apache.poi.hssf.model.Workbook;
   import org.apache.poi.hssf.record.CellValueRecordInterface;
   import org.apache.poi.hssf.record.HCenterRecord;
  +import org.apache.poi.hssf.record.PageBreakRecord;
   import org.apache.poi.hssf.record.Record;
   import org.apache.poi.hssf.record.RowRecord;
   import org.apache.poi.hssf.record.SCLRecord;
  @@ -981,6 +982,8 @@
        * <p>
        * Additionally shifts merged regions that are completely defined in these
        * rows (ie. merged 2 cells on a row to be shifted).
  +     * <p>
  +     * TODO Might want to add bounds checking here
        * @param startRow the row to start shifting
        * @param endRow the row to end shifting
        * @param n the number of rows to shift
  @@ -1004,7 +1007,8 @@
           }
   
                        shiftMerged(startRow, endRow, n, true);        
  -        
  +                     sheet.shiftRowBreaks(startRow, endRow, n);
  +                     
           for ( int rowNum = s; rowNum >= startRow && rowNum <= endRow && rowNum >= 0 
&& rowNum < 65536; rowNum += inc )
           {
               HSSFRow row = getRow( rowNum );
  @@ -1130,7 +1134,7 @@
        * @return whether formulas are displayed
        */
       public boolean isDisplayFormulas() {
  -     return sheet.isDisplayFormulas();
  +     return sheet.isDisplayFormulas();
       }
   
       /**
  @@ -1146,6 +1150,109 @@
        * @return whether RowColHeadings are displayed
        */
       public boolean isDisplayRowColHeadings() {
  -     return sheet.isDisplayRowColHeadings();
  +     return sheet.isDisplayRowColHeadings();
  +    }
  +    
  +    /**
  +     * Sets a page break at the indicated row
  +     * @param row
  +     */
  +    public void setRowBreak(int row) {
  +     validateRow(row);
  +     sheet.setRowBreak(row, (short)0, (short)255);
  +    }
  +
  +    /**
  +     * Determines if there is a page break at the indicated row
  +     * @param row
  +     * @return
  +     */
  +    public boolean isRowBroken(int row) {
  +     return sheet.isRowBroken(row);
  +    }
  +    
  +    /**
  +     * Removes the page break at the indicated row
  +     * @param row
  +     */
  +    public void removeRowBreak(int row) {
  +     sheet.removeRowBreak(row);
  +    }
  +    
  +    /**
  +     * Retrieves all the horizontal page breaks
  +     * @return
  +     */
  +    public int[] getRowBreaks(){
  +     //we can probably cache this information, but this should be a sparsely used 
function 
  +     int[] returnValue = new int[sheet.getNumRowBreaks()];
  +     Iterator iterator = sheet.getRowBreaks();
  +     int i = 0;
  +     while (iterator.hasNext()) {
  +             PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +             returnValue[i++] = (int)breakItem.main;
  +     }
  +     return returnValue;
  +    }
  +
  +    /**
  +     * Retrieves all the vertical page breaks
  +     * @return
  +     */
  +    public short[] getColumnBreaks(){
  +     //we can probably cache this information, but this should be a sparsely used 
function 
  +     short[] returnValue = new short[sheet.getNumColumnBreaks()];
  +     Iterator iterator = sheet.getColumnBreaks();
  +     int i = 0;
  +     while (iterator.hasNext()) {
  +             PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +             returnValue[i++] = breakItem.main;
  +     }
  +     return returnValue;
  +    }
  +    
  +    
  +    /**
  +     * Sets a page break at the indicated column
  +     * @param column
  +     */
  +    public void setColumnBreak(short column) {
  +     validateColumn(column);
  +     sheet.setColumnBreak(column, (short)0, (short)65535);
  +    }
  +
  +    /**
  +     * Determines if there is a page break at the indicated column
  +     * @param column
  +     * @return
  +     */
  +    public boolean isColumnBroken(short column) {
  +     return sheet.isColumnBroken(column);
  +    }
  +    
  +    /**
  +     * Removes a page break at the indicated column
  +     * @param column
  +     */
  +    public void removeColumnBreak(short column) {
  +     sheet.removeColumnBreak(column);
  +    }
  +    
  +    /**
  +     * Runs a bounds check for row numbers
  +     * @param row
  +     */
  +    protected void validateRow(int row) {
  +     if (row > 65535) throw new IllegalArgumentException("Maximum row number is 
65535");
  +     if (row < 0) throw new IllegalArgumentException("Minumum row number is 0");
  +    }
  +    
  +    /**
  +     * Runs a bounds check for column numbers
  +     * @param column
  +     */
  +    protected void validateColumn(short column) {
  +     if (column > 255) throw new IllegalArgumentException("Maximum column number is 
255");
  +     if (column < 0) throw new IllegalArgumentException("Minimum column number is 
0");
       }
   }
  
  
  
  No                   revision
  No                   revision
  1.3.2.2   +121 -0    
jakarta-poi/src/testcases/org/apache/poi/hssf/model/SheetTest.java
  
  Index: SheetTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/model/SheetTest.java,v
  retrieving revision 1.3.2.1
  retrieving revision 1.3.2.2
  diff -u -r1.3.2.1 -r1.3.2.2
  --- SheetTest.java    6 Sep 2003 18:56:29 -0000       1.3.2.1
  +++ SheetTest.java    9 Feb 2004 22:41:27 -0000       1.3.2.2
  @@ -2,12 +2,14 @@
   
   import java.lang.reflect.Field;
   import java.util.ArrayList;
  +import java.util.Iterator;
   import java.util.List;
   
   import junit.framework.TestCase;
   
   import org.apache.poi.hssf.record.ColumnInfoRecord;
   import org.apache.poi.hssf.record.MergeCellsRecord;
  +import org.apache.poi.hssf.record.PageBreakRecord;
   import org.apache.poi.hssf.record.RowRecord;
   import org.apache.poi.hssf.record.StringRecord;
   
  @@ -171,6 +173,125 @@
                Sheet sheet = Sheet.createSheet(records, 0);
                assertNotNull("Row [2] was skipped", sheet.getRow(2));
                
  +     }
  +     
  +     /**
  +      * Make sure page break functionality works (in memory)
  +      *
  +      */
  +     public void testRowPageBreaks(){
  +             short colFrom = 0;
  +             short colTo = 255;
  +             
  +             Sheet sheet = Sheet.createSheet();
  +             sheet.setRowBreak(0, colFrom, colTo);
  +             
  +             assertTrue("no row break at 0", sheet.isRowBroken(0));
  +             assertEquals("1 row break available", 1, sheet.getNumRowBreaks());
  +             
  +             sheet.setRowBreak(0, colFrom, colTo);           
  +             sheet.setRowBreak(0, colFrom, colTo);           
  +
  +             assertTrue("no row break at 0", sheet.isRowBroken(0));
  +             assertEquals("1 row break available", 1, sheet.getNumRowBreaks());
  +             
  +             sheet.setRowBreak(10, colFrom, colTo);
  +             sheet.setRowBreak(11, colFrom, colTo);
  +
  +             assertTrue("no row break at 10", sheet.isRowBroken(10));
  +             assertTrue("no row break at 11", sheet.isRowBroken(11));
  +             assertEquals("3 row break available", 3, sheet.getNumRowBreaks());
  +             
  +             
  +             boolean is10 = false;
  +             boolean is0 = false;
  +             boolean is11 = false;
  +             
  +             Iterator iterator = sheet.getRowBreaks();
  +             while (iterator.hasNext()) {
  +                     PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +                     int main = (int)breakItem.main;
  +                     if (main != 0 && main != 10 && main != 11) fail("Invalid page 
break");
  +                     if (main == 0)  is0 = true;
  +                     if (main == 10) is10= true;
  +                     if (main == 11) is11 = true;
  +             }
  +             
  +             assertTrue("one of the breaks didnt make it", is0 && is10 && is11); 
  +             
  +             sheet.removeRowBreak(11);
  +             assertFalse("row should be removed", sheet.isRowBroken(11));
  +             
  +             sheet.removeRowBreak(0);
  +             assertFalse("row should be removed", sheet.isRowBroken(0));
  +             
  +             sheet.removeRowBreak(10);
  +             assertFalse("row should be removed", sheet.isRowBroken(10));
  +             
  +             assertEquals("no more breaks", 0, sheet.getNumRowBreaks());
  +             
  +             
  +     }
  +     
  +     /**
  +      * Make sure column pag breaks works properly (in-memory)
  +      *
  +      */
  +     public void testColPageBreaks(){
  +             short rowFrom = 0;
  +             short rowTo = (short)65535;
  +             
  +             Sheet sheet = Sheet.createSheet();
  +             sheet.setColumnBreak((short)0, rowFrom, rowTo); 
  +             
  +             assertTrue("no col break at 0", sheet.isColumnBroken((short)0));
  +             assertEquals("1 col break available", 1, sheet.getNumColumnBreaks());  
         
  +             
  +             sheet.setColumnBreak((short)0, rowFrom, rowTo);
  +             
  +             assertTrue("no col break at 0", sheet.isColumnBroken((short)0));
  +             assertEquals("1 col break available", 1, sheet.getNumColumnBreaks());  
         
  +             
  +             sheet.setColumnBreak((short)1, rowFrom, rowTo);
  +             sheet.setColumnBreak((short)10, rowFrom, rowTo);
  +             sheet.setColumnBreak((short)15, rowFrom, rowTo);
  +             
  +             assertTrue("no col break at 1", sheet.isColumnBroken((short)1));
  +             assertTrue("no col break at 10", sheet.isColumnBroken((short)10));
  +             assertTrue("no col break at 15", sheet.isColumnBroken((short)15));
  +             assertEquals("4 col break available", 4, sheet.getNumColumnBreaks());  
         
  +
  +             boolean is10 = false;
  +             boolean is0 = false;
  +             boolean is1 = false;
  +             boolean is15 = false;
  +             
  +             Iterator iterator = sheet.getColumnBreaks();
  +             while (iterator.hasNext()) {
  +                     PageBreakRecord.Break breakItem = 
(PageBreakRecord.Break)iterator.next();
  +                     int main = (int)breakItem.main;
  +                     if (main != 0 && main != 1 && main != 10 && main != 15) 
fail("Invalid page break");
  +                     if (main == 0)  is0 = true;
  +                     if (main == 1)  is1 = true;
  +                     if (main == 10) is10= true;
  +                     if (main == 15) is15 = true;
  +             }
  +             
  +             assertTrue("one of the breaks didnt make it", is0 && is1 && is10 && 
is15); 
  +             
  +             sheet.removeColumnBreak((short)15);
  +             assertFalse("column break should not be there", 
sheet.isColumnBroken((short)15));
  +
  +             sheet.removeColumnBreak((short)0);
  +             assertFalse("column break should not be there", 
sheet.isColumnBroken((short)0));
  +             
  +             sheet.removeColumnBreak((short)1);
  +             assertFalse("column break should not be there", 
sheet.isColumnBroken((short)1));
  +             
  +             sheet.removeColumnBreak((short)10);
  +             assertFalse("column break should not be there", 
sheet.isColumnBroken((short)10));
  +             
  +             assertEquals("no more breaks", 0, sheet.getNumColumnBreaks());
        }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to