You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by dm...@apache.org on 2003/09/06 20:56:29 UTC

cvs commit: jakarta-poi/src/java/org/apache/poi/hssf/model Sheet.java

dmui        2003/09/06 11:56:29

  Modified:    src/testcases/org/apache/poi/hssf/model Tag: REL_2_BRANCH
                        SheetTest.java
               src/java/org/apache/poi/hssf/model Tag: REL_2_BRANCH
                        Sheet.java
  Log:
  Changed merged region tracking to use object pointers rather than
  index pointers so we don't have to make sure the indices are up to date.
  PR: 22922	
  Submitted by:	xuemin@appresso.com (Xuemin Guan)
  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.3.2.1   +26 -7     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
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- SheetTest.java	9 May 2003 12:39:08 -0000	1.3
  +++ SheetTest.java	6 Sep 2003 18:56:29 -0000	1.3.2.1
  @@ -7,6 +7,7 @@
   import junit.framework.TestCase;
   
   import org.apache.poi.hssf.record.ColumnInfoRecord;
  +import org.apache.poi.hssf.record.MergeCellsRecord;
   import org.apache.poi.hssf.record.RowRecord;
   import org.apache.poi.hssf.record.StringRecord;
   
  @@ -71,6 +72,31 @@
   		assertTrue("Expected " + recordsRemoved + " record to be removed from the starting " + records + ".  Currently there are " + sheet.getRecords().size() + " records", records - sheet.getRecords().size() == recordsRemoved);
   	}
   
  +	/**
  +	 * Bug: 22922 (Reported by Xuemin Guan)
  +	 * <p>
  +	 * Remove mergedregion fails when a sheet loses records after an initial CreateSheet
  +	 * fills up the records.
  +	 *
  +	 */
  +	public void testMovingMergedRegion() {
  +		List records = new ArrayList();
  +		
  +		MergeCellsRecord merged = new MergeCellsRecord();
  +		merged.addArea(0, (short)0, 1, (short)2);
  +		records.add(new RowRecord());
  +		records.add(new RowRecord());
  +		records.add(new RowRecord());
  +		records.add(merged);
  +		
  +		Sheet sheet = Sheet.createSheet(records, 0);
  +		sheet.records.remove(0);
  +		
  +		//stub object to throw off list INDEX operations
  +		sheet.removeMergedRegion(0);
  +		assertEquals("Should be no more merged regions", 0, sheet.getNumMergedRegions());
  +	}
  +
   	public void testGetMergedRegionAt()
   	{
   		//TODO
  @@ -146,13 +172,6 @@
   		assertNotNull("Row [2] was skipped", sheet.getRow(2));
   		
   	}
  -
  -
  -	public static void main(String [] args) {
  -		System.out
  -		.println("Testing : "+SheetTest.class.getName());
  -		junit.textui.TestRunner.run(SheetTest.class);
  -  }
   
   }
   
  
  
  
  No                   revision
  No                   revision
  1.31.2.7  +5 -11     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.6
  retrieving revision 1.31.2.7
  diff -u -r1.31.2.6 -r1.31.2.7
  --- Sheet.java	23 Aug 2003 18:54:28 -0000	1.31.2.6
  +++ Sheet.java	6 Sep 2003 18:56:29 -0000	1.31.2.7
  @@ -111,8 +111,7 @@
       protected WindowTwoRecord           windowTwo        = null;
       protected MergeCellsRecord          merged           = null;
       protected Margin                    margins[]        = null;
  -    protected ArrayList                 mergedRecords    = new ArrayList();
  -    protected ArrayList                 mergedLocs       = new ArrayList();
  +    protected List                 		mergedRecords    = new ArrayList();
       protected int                       numMergedRegions = 0;
       protected SelectionRecord           selection        = null;
       private static POILogger            log              = POILogFactory.getLogger(Sheet.class);
  @@ -198,7 +197,6 @@
               {
                   retval.mergedRecords.add(rec);
                   retval.merged = ( MergeCellsRecord ) rec;
  -                retval.mergedLocs.add(new Integer(k - offset));
                   retval.numMergedRegions += retval.merged.getNumAreas();
               }
               else if (rec.getSid() == ColumnInfoRecord.sid)
  @@ -456,8 +454,7 @@
           if (merged == null || merged.getNumAreas() == 1027)
           {
               merged = ( MergeCellsRecord ) createMergedCells();
  -            mergedRecords.add(merged);
  -            mergedLocs.add(new Integer(records.size() - 1));
  +            mergedRecords.add(merged);            
               records.add(records.size() - 1, merged);
           }
           merged.addArea(rowFrom, colFrom, rowTo, colTo);
  @@ -498,7 +495,9 @@
           numMergedRegions--;
           if (rec.getNumAreas() == 0)
           {
  -				mergedRecords.remove(pos);            
  +			mergedRecords.remove(pos);
  +			//get rid of the record from the sheet
  +			records.remove(merged);            
               if (merged == rec) {
               	//pull up the LAST record for operations when we finally
               	//support continue records for mergedRegions
  @@ -508,11 +507,6 @@
               		merged = null;
               	}
               }
  -            
  -            int removePos = ((Integer) mergedLocs.get(pos)).intValue();
  -            records.remove(removePos);
  -            mergedLocs.remove(pos);
  -            
           }
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: poi-dev-help@jakarta.apache.org