You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by sl...@apache.org on 2003/07/24 21:22:34 UTC
cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel TestWorkbook.java
slaubach 2003/07/24 12:22:34
Modified: src/java/org/apache/poi/hssf/model Tag: REL_2_BRANCH
Sheet.java
src/java/org/apache/poi/hssf/usermodel Tag: REL_2_BRANCH
HSSFWorkbook.java
src/testcases/org/apache/poi/hssf/usermodel Tag:
REL_2_BRANCH TestWorkbook.java
Log:
Fixed the problem in bug# 16756 by making sure the same HSSFDataFormat object is returned for a given book. Also included the new margin code that Mr. Oliver wanted (just because in was in the particular directory).
Revision Changes Path
No revision
No revision
1.31.2.4 +76 -71 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.3
retrieving revision 1.31.2.4
diff -u -r1.31.2.3 -r1.31.2.4
--- Sheet.java 24 Jul 2003 18:42:45 -0000 1.31.2.3
+++ Sheet.java 24 Jul 2003 19:22:33 -0000 1.31.2.4
@@ -109,6 +109,7 @@
protected FooterRecord footer = null;
protected PrintGridlinesRecord printGridlines = null;
protected MergeCellsRecord merged = null;
+ protected Margin margins[] = null;
protected ArrayList mergedRecords = new ArrayList();
protected ArrayList mergedLocs = new ArrayList();
protected int numMergedRegions = 0;
@@ -257,10 +258,26 @@
{
retval.footer = (FooterRecord) rec;
}
- else if ( rec.getSid() == PrintSetupRecord.sid )
+ else if ( rec.getSid() == PrintSetupRecord.sid && bofEofNestingLevel == 1)
{
retval.printSetup = (PrintSetupRecord) rec;
}
+ else if ( rec.getSid() == LeftMarginRecord.sid)
+ {
+ retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec;
+ }
+ else if ( rec.getSid() == RightMarginRecord.sid)
+ {
+ retval.getMargins()[RightMargin] = (RightMarginRecord) rec;
+ }
+ else if ( rec.getSid() == TopMarginRecord.sid)
+ {
+ retval.getMargins()[TopMargin] = (TopMarginRecord) rec;
+ }
+ else if ( rec.getSid() == BottomMarginRecord.sid)
+ {
+ retval.getMargins()[BottomMargin] = (BottomMarginRecord) rec;
+ }
else if ( rec.getSid() == SelectionRecord.sid )
{
retval.selection = (SelectionRecord) rec;
@@ -2330,82 +2347,59 @@
* @param margin which margin to get
* @return the size of the margin
*/
- public double getMargin(short margin) {
- Margin m;
- switch ( margin )
- {
- case LeftMargin:
- m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
- if ( m == null )
- return .75;
- break;
- case RightMargin:
- m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
- if ( m == null )
- return .75;
- break;
- case TopMargin:
- m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
- if ( m == null )
- return 1.0;
- break;
- case BottomMargin:
- m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
- if ( m == null )
- return 1.0;
- break;
- default :
- throw new RuntimeException( "Unknown margin constant: " + margin );
- }
- return m.getMargin();
- }
+ public double getMargin(short margin) {
+ if (getMargins()[margin] != null)
+ return margins[margin].getMargin();
+ else {
+ switch ( margin )
+ {
+ case LeftMargin:
+ return .75;
+ case RightMargin:
+ return .75;
+ case TopMargin:
+ return 1.0;
+ case BottomMargin:
+ return 1.0;
+ default :
+ throw new RuntimeException( "Unknown margin constant: " + margin );
+ }
+ }
+ }
/**
* Sets the size of the margin in inches.
* @param margin which margin to get
* @param size the size of the margin
*/
- public void setMargin(short margin, double size) {
- Margin m;
- switch ( margin )
- {
- case LeftMargin:
- m = (Margin) findFirstRecordBySid( LeftMarginRecord.sid );
- if ( m == null )
- {
- m = new LeftMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case RightMargin:
- m = (Margin) findFirstRecordBySid( RightMarginRecord.sid );
- if ( m == null )
- {
- m = new RightMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case TopMargin:
- m = (Margin) findFirstRecordBySid( TopMarginRecord.sid );
- if ( m == null )
- {
- m = new TopMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- case BottomMargin:
- m = (Margin) findFirstRecordBySid( BottomMarginRecord.sid );
- if ( m == null )
- {
- m = new BottomMarginRecord();
- records.add( getDimsLoc() + 1, m );
- }
- break;
- default :
- throw new RuntimeException( "Unknown margin constant: " + margin );
- }
- m.setMargin( size );
- }
+ public void setMargin(short margin, double size) {
+ Margin m = getMargins()[margin];
+ if (m == null) {
+ switch ( margin )
+ {
+ case LeftMargin:
+ m = new LeftMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case RightMargin:
+ m = new RightMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case TopMargin:
+ m = new TopMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ case BottomMargin:
+ m = new BottomMarginRecord();
+ records.add( getDimsLoc() + 1, m );
+ break;
+ default :
+ throw new RuntimeException( "Unknown margin constant: " + margin );
+ }
+ margins[margin] = m;
+ }
+ m.setMargin( size );
+ }
public int getEofLoc()
{
@@ -2527,6 +2521,17 @@
public void setSelection( SelectionRecord selection )
{
this.selection = selection;
+ }
+
+ /**
+ * Returns the array of margins. If not created, will create.
+ *
+ * @return the array of marings.
+ */
+ protected Margin[] getMargins() {
+ if (margins == null)
+ margins = new Margin[4];
+ return margins;
}
}
No revision
No revision
1.24.2.1 +12 -2 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.24
retrieving revision 1.24.2.1
diff -u -r1.24 -r1.24.2.1
--- HSSFWorkbook.java 30 Apr 2003 04:39:00 -0000 1.24
+++ HSSFWorkbook.java 24 Jul 2003 19:22:34 -0000 1.24.2.1
@@ -147,6 +147,14 @@
* memory.
*/
private POIFSFileSystem poifs;
+
+ /**
+ * Used to keep track of the data formatter so that all
+ * createDataFormatter calls return the same one for a given
+ * book. This ensures that updates from one places is visible
+ * someplace else.
+ */
+ private HSSFDataFormat formatter;
private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class);
@@ -945,13 +953,15 @@
}
/**
- * Creates an instance of HSSFDataFormat.
+ * Returns the instance of HSSFDataFormat for this workbook.
* @return the HSSFDataFormat object
* @see org.apache.poi.hssf.record.FormatRecord
* @see org.apache.poi.hssf.record.Record
*/
public HSSFDataFormat createDataFormat() {
- return new HSSFDataFormat(workbook);
+ if (formatter == null)
+ formatter = new HSSFDataFormat(workbook);
+ return formatter;
}
/** remove the named range by his name
No revision
No revision
1.10.2.1 +2 -0 jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java
Index: TestWorkbook.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -r1.10 -r1.10.2.1
--- TestWorkbook.java 30 Apr 2003 04:38:58 -0000 1.10
+++ TestWorkbook.java 24 Jul 2003 19:22:34 -0000 1.10.2.1
@@ -304,6 +304,8 @@
assertEquals(1.25,cell.getNumericCellValue(), 1e-10);
assertEquals(format.getFormat(df), "0.0");
+
+ assertEquals(format, workbook.createDataFormat());
stream.close();
}