Add support for creating SummaryInformation and DocumentSummaryInformation properties on POIDocuments that don't have them, via POIDocument.createInformationProperties()
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@884072 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4bcde19ada
commit
6602faf140
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.6-beta1" date="2009-??-??">
|
<release version="3.6-beta1" date="2009-??-??">
|
||||||
|
<action dev="POI-DEVELOPERS" type="add">Add support for creating SummaryInformation and DocumentSummaryInformation properties on POIDocuments that don't have them, via POIDocument.createInformationProperties()</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">48180 - be more forgiving of short chart records, which skip some unused fields</action>
|
<action dev="POI-DEVELOPERS" type="fix">48180 - be more forgiving of short chart records, which skip some unused fields</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">48274 - fix erronious wrapping of byte colours in HSSFPalette.findSimilarColor</action>
|
<action dev="POI-DEVELOPERS" type="fix">48274 - fix erronious wrapping of byte colours in HSSFPalette.findSimilarColor</action>
|
||||||
<action dev="POI-DEVELOPERS" type="fix">48269 - fix fetching of error codes from XSSF formula cells</action>
|
<action dev="POI-DEVELOPERS" type="fix">48269 - fix fetching of error codes from XSSF formula cells</action>
|
||||||
|
@ -86,6 +86,25 @@ public abstract class POIDocument {
|
|||||||
return sInf;
|
return sInf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will create whichever of SummaryInformation
|
||||||
|
* and DocumentSummaryInformation (HPSF) properties
|
||||||
|
* are not already part of your document.
|
||||||
|
* This is normally useful when creating a new
|
||||||
|
* document from scratch.
|
||||||
|
* If the information properties are already there,
|
||||||
|
* then nothing will happen.
|
||||||
|
*/
|
||||||
|
public void createInformationProperties() {
|
||||||
|
if(!initialized) readProperties();
|
||||||
|
if(sInf == null) {
|
||||||
|
sInf = PropertySetFactory.newSummaryInformation();
|
||||||
|
}
|
||||||
|
if(dsInf == null) {
|
||||||
|
dsInf = PropertySetFactory.newDocumentSummaryInformation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find, and create objects for, the standard
|
* Find, and create objects for, the standard
|
||||||
* Documment Information Properties (HPSF).
|
* Documment Information Properties (HPSF).
|
||||||
|
@ -20,10 +20,12 @@ package org.apache.poi;
|
|||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,4 +106,68 @@ public final class TestPOIDocumentMain extends TestCase {
|
|||||||
// Delegate test
|
// Delegate test
|
||||||
testReadProperties();
|
testReadProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testCreateNewProperties() throws IOException {
|
||||||
|
POIDocument doc = new HSSFWorkbook();
|
||||||
|
|
||||||
|
// New document won't have them
|
||||||
|
assertNull(doc.getSummaryInformation());
|
||||||
|
assertNull(doc.getDocumentSummaryInformation());
|
||||||
|
|
||||||
|
// Add them in
|
||||||
|
doc.createInformationProperties();
|
||||||
|
assertNotNull(doc.getSummaryInformation());
|
||||||
|
assertNotNull(doc.getDocumentSummaryInformation());
|
||||||
|
|
||||||
|
// Write out and back in again, no change
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
doc.write(baos);
|
||||||
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
||||||
|
|
||||||
|
doc = new HSSFWorkbook(bais);
|
||||||
|
|
||||||
|
assertNotNull(doc.getSummaryInformation());
|
||||||
|
assertNotNull(doc.getDocumentSummaryInformation());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateNewPropertiesOnExistingFile() throws IOException {
|
||||||
|
POIDocument doc = new HSSFWorkbook();
|
||||||
|
|
||||||
|
// New document won't have them
|
||||||
|
assertNull(doc.getSummaryInformation());
|
||||||
|
assertNull(doc.getDocumentSummaryInformation());
|
||||||
|
|
||||||
|
// Write out and back in again, no change
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
doc.write(baos);
|
||||||
|
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
|
||||||
|
doc = new HSSFWorkbook(bais);
|
||||||
|
|
||||||
|
assertNull(doc.getSummaryInformation());
|
||||||
|
assertNull(doc.getDocumentSummaryInformation());
|
||||||
|
|
||||||
|
// Create, and change
|
||||||
|
doc.createInformationProperties();
|
||||||
|
doc.getSummaryInformation().setAuthor("POI Testing");
|
||||||
|
doc.getDocumentSummaryInformation().setCompany("ASF");
|
||||||
|
|
||||||
|
// Save and re-load
|
||||||
|
baos = new ByteArrayOutputStream();
|
||||||
|
doc.write(baos);
|
||||||
|
bais = new ByteArrayInputStream(baos.toByteArray());
|
||||||
|
doc = new HSSFWorkbook(bais);
|
||||||
|
|
||||||
|
// Check
|
||||||
|
assertNotNull(doc.getSummaryInformation());
|
||||||
|
assertNotNull(doc.getDocumentSummaryInformation());
|
||||||
|
assertEquals("POI Testing", doc.getSummaryInformation().getAuthor());
|
||||||
|
assertEquals("ASF", doc.getDocumentSummaryInformation().getCompany());
|
||||||
|
|
||||||
|
// Asking to re-create will make no difference now
|
||||||
|
doc.createInformationProperties();
|
||||||
|
assertNotNull(doc.getSummaryInformation());
|
||||||
|
assertNotNull(doc.getDocumentSummaryInformation());
|
||||||
|
assertEquals("POI Testing", doc.getSummaryInformation().getAuthor());
|
||||||
|
assertEquals("ASF", doc.getDocumentSummaryInformation().getCompany());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user