/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.sequencer.msoffice;
import java.util.Date;
import org.apache.poi.hpsf.PropertySetFactory;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
import org.modeshape.common.logging.Logger;
/**
* Metadata about an Microsoft Office file.
*/
public class MSOfficeMetadata implements POIFSReaderListener {
private static final Logger LOGGER = Logger.getLogger(MSOfficeMetadata.class);
private String title;
private String subject;
private String author;
private String keywords;
private String comment;
private String template;
private Date lastSaved;
private String revision;
private Long totalEditingTime;
private Date lastPrinted;
private Date created;
private int pages;
private int words;
private int characters;
private String creatingApplication;
private byte[] thumbnail;
public void setSummaryInformation( SummaryInformation si ) {
title = si.getTitle();
subject = si.getSubject();
author = si.getAuthor();
keywords = si.getKeywords();
comment = si.getComments();
template = si.getTemplate();
lastSaved = si.getLastSaveDateTime();
revision = si.getRevNumber();
totalEditingTime = si.getEditTime();
lastPrinted = si.getLastPrinted();
created = si.getCreateDateTime();
pages = si.getPageCount();
words = si.getWordCount();
characters = si.getCharCount();
creatingApplication = si.getApplicationName();
thumbnail = si.getThumbnail();
}
@Override
public void processPOIFSReaderEvent( POIFSReaderEvent event ) {
try {
SummaryInformation si = (SummaryInformation)PropertySetFactory.create(event.getStream());
setSummaryInformation(si);
} catch (Exception ex) {
LOGGER.debug("Error processing the metadata for the MS Office document", ex);
}
}
public String getTitle() {
return title;
}
public String getSubject() {
return subject;
}
public String getAuthor() {
return author;
}
public String getKeywords() {
return keywords;
}
public String getComment() {
return comment;
}
public String getTemplate() {
return template;
}
public Date getLastSaved() {
return lastSaved;
}
public String getRevision() {
return revision;
}
public Long getTotalEditingTime() {
return totalEditingTime;
}
public Date getLastPrinted() {
return lastPrinted;
}
public Date getCreated() {
return created;
}
public int getPages() {
return pages;
}
public int getWords() {
return words;
}
public int getCharacters() {
return characters;
}
public String getCreatingApplication() {
return creatingApplication;
}
public byte[] getThumbnail() {
return thumbnail;
}
}