Browse Source

Adding changes recently added to release 2. Includes rewrite of margin code, fixes for duplicate DataFormat, and cleanup of files I noticed that was 1 line.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353242 13f79535-47bb-0310-9956-ffa450edef68
tags/PERF_BEFORE_MERGE
Shawn Laubach 21 years ago
parent
commit
f1e2cacda7

+ 76
- 71
src/java/org/apache/poi/hssf/model/Sheet.java View File

@@ -109,6 +109,7 @@ public class Sheet implements Model
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;
@@ -263,7 +264,23 @@ public class Sheet implements Model
{
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;
}
if (rec != null)
{
records.add(rec);
@@ -2391,82 +2408,59 @@ public class Sheet implements Model
* @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()
{
@@ -2590,4 +2584,15 @@ public class Sheet implements Model
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;
}

}

+ 397
- 1
src/java/org/apache/poi/hssf/usermodel/HSSFPrintSetup.java
File diff suppressed because it is too large
View File


+ 12
- 2
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java View File

@@ -140,6 +140,14 @@ public class HSSFWorkbook
* 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);

@@ -938,13 +946,15 @@ public class HSSFWorkbook
}

/**
* 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

+ 2
- 0
src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java View File

@@ -304,6 +304,8 @@ public class TestWorkbook
assertEquals(1.25,cell.getNumericCellValue(), 1e-10);

assertEquals(format.getFormat(df), "0.0");

assertEquals(format, workbook.createDataFormat());
stream.close();
}

Loading…
Cancel
Save