57 lines
1.7 KiB
Java
57 lines
1.7 KiB
Java
package org.gcube.data.access.storagehub.handlers.content;
|
|
|
|
import java.io.InputStream;
|
|
import java.util.Calendar;
|
|
|
|
import org.apache.tika.metadata.Metadata;
|
|
import org.apache.tika.parser.ParseContext;
|
|
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
|
|
import org.apache.tika.sax.BodyContentHandler;
|
|
import org.gcube.common.storagehub.model.annotations.MimeTypeHandler;
|
|
import org.gcube.common.storagehub.model.items.GenericFileItem;
|
|
import org.gcube.common.storagehub.model.items.nodes.Content;
|
|
import org.gcube.common.storagehub.model.types.ItemAction;
|
|
|
|
|
|
public class OfficeAppHandler implements ContentHandler{
|
|
|
|
Content content = new Content();
|
|
|
|
@Override
|
|
public void initiliseSpecificContent(InputStream is, String filename, String mimeType) throws Exception {
|
|
//detecting the file type
|
|
BodyContentHandler handler = new BodyContentHandler();
|
|
Metadata metadata = new Metadata();
|
|
ParseContext pcontext = new ParseContext();
|
|
|
|
//OOXml parser
|
|
OOXMLParser msofficeparser = new OOXMLParser ();
|
|
msofficeparser.parse(is, handler, metadata,pcontext);
|
|
String appname = metadata.get("Application-Name");
|
|
content.setMimeType("application/"+appname);
|
|
}
|
|
|
|
@Override
|
|
public Content getContent() {
|
|
return content;
|
|
}
|
|
|
|
@Override
|
|
public GenericFileItem buildItem(String name, String description, String login) {
|
|
GenericFileItem item = new GenericFileItem();
|
|
Calendar now = Calendar.getInstance();
|
|
item.setName(name);
|
|
item.setTitle(name);
|
|
item.setDescription(description);
|
|
//item.setCreationTime(now);
|
|
item.setHidden(false);
|
|
item.setLastAction(ItemAction.CREATED);
|
|
item.setLastModificationTime(now);
|
|
|
|
item.setLastModifiedBy(login);
|
|
item.setOwner(login);
|
|
item.setContent(this.content);
|
|
return item;
|
|
}
|
|
|
|
} |