Example usage for org.apache.poi.hpsf DocumentSummaryInformation setCategory

List of usage examples for org.apache.poi.hpsf DocumentSummaryInformation setCategory

Introduction

In this page you can find the example usage for org.apache.poi.hpsf DocumentSummaryInformation setCategory.

Prototype

public void setCategory(final String category) 

Source Link

Document

Sets the category.

Usage

From source file:org.alanwilliamson.openbd.plugin.spreadsheet.functions.SpreadsheetAddInfo.java

License:Open Source License

public cfData execute(cfSession _session, List<cfData> parameters) throws cfmRunTimeException {
    if (parameters.get(0).getDataType() != cfData.CFSTRUCTDATA)
        throwException(_session, "parameter must be of type structure");

    cfSpreadSheetData spreadsheet = (cfSpreadSheetData) parameters.get(1);
    cfStructData s = (cfStructData) parameters.get(0);

    Workbook workbook = spreadsheet.getWorkBook();

    /*//from w ww . jav  a2 s . c  o m
     * XSSFWorkbook
     */
    if (workbook instanceof XSSFWorkbook) {
        XSSFWorkbook xSSFWorkbook = (XSSFWorkbook) workbook;

        CoreProperties cP = xSSFWorkbook.getProperties().getCoreProperties();

        if (s.containsKey("author"))
            cP.setCreator(s.getData("author").getString());
        if (s.containsKey("category"))
            cP.setCategory(s.getData("category").getString());
        if (s.containsKey("subject"))
            cP.setSubjectProperty(s.getData("subject").getString());
        if (s.containsKey("title"))
            cP.setTitle(s.getData("title").getString());
        if (s.containsKey("revision"))
            cP.setRevision(s.getData("revision").getString());
        if (s.containsKey("description"))
            cP.setDescription(s.getData("description").getString());

    } else {
        HSSFWorkbook hSSFWorkbook = (HSSFWorkbook) workbook;
        DocumentSummaryInformation dSummary = hSSFWorkbook.getDocumentSummaryInformation();

        if (dSummary == null) {
            hSSFWorkbook.createInformationProperties();
            dSummary = hSSFWorkbook.getDocumentSummaryInformation();
        }

        if (s.containsKey("category"))
            dSummary.setCategory(s.getData("category").getString());
        if (s.containsKey("manager"))
            dSummary.setManager(s.getData("manager").getString());
        if (s.containsKey("company"))
            dSummary.setCompany(s.getData("company").getString());

        SummaryInformation sInformation = hSSFWorkbook.getSummaryInformation();

        if (s.containsKey("title"))
            sInformation.setTitle(s.getData("title").getString());
        if (s.containsKey("subject"))
            sInformation.setSubject(s.getData("subject").getString());
        if (s.containsKey("author"))
            sInformation.setAuthor(s.getData("author").getString());
        if (s.containsKey("comments"))
            sInformation.setComments(s.getData("comments").getString());
        if (s.containsKey("keywords"))
            sInformation.setKeywords(s.getData("keywords").getString());
        if (s.containsKey("lastauthor"))
            sInformation.setLastAuthor(s.getData("lastauthor").getString());
    }

    return cfBooleanData.TRUE;
}

From source file:poi.hpsf.examples.ModifyDocumentSummaryInformation.java

License:Apache License

/**
 * <p>Main method - see class description.</p>
 *
 * @param args The command-line parameters.
 * @throws java.io.IOException//from ww  w . j av a  2  s.  co  m
 * @throws MarkUnsupportedException
 * @throws NoPropertySetStreamException
 * @throws UnexpectedPropertySetTypeException
 * @throws WritingNotSupportedException
 */
public static void main(final String[] args) throws IOException, NoPropertySetStreamException,
        MarkUnsupportedException, UnexpectedPropertySetTypeException, WritingNotSupportedException {
    /* Read the name of the POI filesystem to modify from the command line.
     * For brevity to boundary check is performed on the command-line
     * arguments. */
    File poiFilesystem = new File(args[0]);

    /* Open the POI filesystem. */
    InputStream is = new FileInputStream(poiFilesystem);
    POIFSFileSystem poifs = new POIFSFileSystem(is);
    is.close();

    /* Read the summary information. */
    DirectoryEntry dir = poifs.getRoot();
    SummaryInformation si;
    try {
        DocumentEntry siEntry = (DocumentEntry) dir.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
        DocumentInputStream dis = new DocumentInputStream(siEntry);
        PropertySet ps = new PropertySet(dis);
        dis.close();
        si = new SummaryInformation(ps);
    } catch (FileNotFoundException ex) {
        /* There is no summary information yet. We have to create a new
         * one. */
        si = PropertySetFactory.newSummaryInformation();
    }

    /* Change the author to "Rainer Klute". Any former author value will
     * be lost. If there has been no author yet, it will be created. */
    si.setAuthor("Rainer Klute");
    System.out.println("Author changed to " + si.getAuthor() + ".");

    /* Handling the document summary information is analogous to handling
     * the summary information. An additional feature, however, are the
     * custom properties. */

    /* Read the document summary information. */
    DocumentSummaryInformation dsi;
    try {
        DocumentEntry dsiEntry = (DocumentEntry) dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
        DocumentInputStream dis = new DocumentInputStream(dsiEntry);
        PropertySet ps = new PropertySet(dis);
        dis.close();
        dsi = new DocumentSummaryInformation(ps);
    } catch (FileNotFoundException ex) {
        /* There is no document summary information yet. We have to create a
         * new one. */
        dsi = PropertySetFactory.newDocumentSummaryInformation();
    }

    /* Change the category to "POI example". Any former category value will
     * be lost. If there has been no category yet, it will be created. */
    dsi.setCategory("POI example");
    System.out.println("Category changed to " + dsi.getCategory() + ".");

    /* Read the custom properties. If there are no custom properties yet,
     * the application has to create a new CustomProperties object. It will
     * serve as a container for custom properties. */
    CustomProperties customProperties = dsi.getCustomProperties();
    if (customProperties == null)
        customProperties = new CustomProperties();

    /* Insert some custom properties into the container. */
    customProperties.put("Key 1", "Value 1");
    customProperties.put("Schl\u00fcssel 2", "Wert 2");
    customProperties.put("Sample Number", new Integer(12345));
    customProperties.put("Sample Boolean", Boolean.TRUE);
    customProperties.put("Sample Date", new Date());

    /* Read a custom property. */
    Object value = customProperties.get("Sample Number");

    /* Write the custom properties back to the document summary
     * information. */
    dsi.setCustomProperties(customProperties);

    /* Write the summary information and the document summary information
     * to the POI filesystem. */
    si.write(dir, SummaryInformation.DEFAULT_STREAM_NAME);
    dsi.write(dir, DocumentSummaryInformation.DEFAULT_STREAM_NAME);

    /* Write the POI filesystem back to the original file. Please note that
     * in production code you should never write directly to the origin
     * file! In case of a writing error everything would be lost. */
    OutputStream out = new FileOutputStream(poiFilesystem);
    poifs.writeFilesystem(out);
    out.close();
}