mirror of https://github.com/apache/poi.git
Shuffle a few ooxml bits about, improve the ant tasks for it, and add in a ooxml container lister
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@607024 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c793ae28f5
commit
bd40f5a018
21
build.xml
21
build.xml
|
@ -145,6 +145,7 @@ under the License.
|
|||
<property name="ooxml.xsds.ozip" location="${ooxml.lib}/OfficeOpenXML-Part4.zip"/>
|
||||
<property name="ooxml.xsds.izip" location="${ooxml.lib}/OfficeOpenXML-XMLSchema.zip"/>
|
||||
<property name="ooxml.xsds.url" value="http://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%20Part%204%20(DOCX).zip" />
|
||||
<property name="ooxml.xsds.jar" location="${ooxml.lib}/ooxml-schemas.jar"/>
|
||||
|
||||
<property name="build.site" location="build/tmp/site/build/site"/>
|
||||
<property name="build.site.src" location="build/tmp/site"/>
|
||||
|
@ -262,9 +263,11 @@ under the License.
|
|||
<mkdir dir="${scratchpad.output.dir}"/>
|
||||
<mkdir dir="${contrib.output.dir}"/>
|
||||
<mkdir dir="${examples.output.dir}"/>
|
||||
<mkdir dir="${ooxml.output.dir}"/>
|
||||
<mkdir dir="${main.output.test.dir}"/>
|
||||
<mkdir dir="${contrib.output.test.dir}"/>
|
||||
<mkdir dir="${scratchpad.output.test.dir}"/>
|
||||
<mkdir dir="${ooxml.output.test.dir}"/>
|
||||
<mkdir dir="${main.reports.test}"/>
|
||||
<mkdir dir="${scratchpad.reports.test}"/>
|
||||
<mkdir dir="${contrib.reports.test}"/>
|
||||
|
@ -348,7 +351,18 @@ under the License.
|
|||
</patternset>
|
||||
</unzip>
|
||||
</target>
|
||||
<target name="compile-ooxml-xsds" depends="check-jars,fetch-jars,check-ooxml-xsds,fetch-ooxml-xsds"
|
||||
<target name="check-compiled-ooxml-xsds">
|
||||
<condition property="ooxml-compiled-xsds.present">
|
||||
<or>
|
||||
<and>
|
||||
<available file="${ooxml.xsds.jar}"/>
|
||||
</and>
|
||||
<isset property="disconnected"/>
|
||||
</or>
|
||||
</condition>
|
||||
</target>
|
||||
<target name="compile-ooxml-xsds" unless="ooxml-compiled-xsds.present"
|
||||
depends="check-jars,fetch-jars,check-ooxml-xsds,fetch-ooxml-xsds,check-compiled-ooxml-xsds"
|
||||
description="Unpacks the OOXML xsd files, and compiles them into XmlBeans">
|
||||
<taskdef name="xmlbean"
|
||||
classname="org.apache.xmlbeans.impl.tool.XMLBean"
|
||||
|
@ -361,7 +375,7 @@ under the License.
|
|||
-->
|
||||
<xmlbean
|
||||
schema="build/ooxml-xsds/"
|
||||
destfile="${ooxml.lib}/ooxml-schemas.jar"
|
||||
destfile="${ooxml.xsds.jar}"
|
||||
javasource="1.4"
|
||||
failonerror="false"
|
||||
>
|
||||
|
@ -452,7 +466,8 @@ under the License.
|
|||
</target>
|
||||
|
||||
<target name="compile-ooxml" depends="init, check-ooxml-xsds, fetch-ooxml-xsds, compile-ooxml-xsds, compile-main">
|
||||
<javac target="${jdk.version.class}" source="${jdk.version.source}"
|
||||
<!-- openxml4j requires java 1.5, so so must we, for now -->
|
||||
<javac target="1.5" source="1.5"
|
||||
destdir="${ooxml.output.dir}" debug="on" srcdir="${ooxml.src}">
|
||||
<classpath refid="ooxml.classpath"/>
|
||||
</javac>
|
||||
|
|
|
@ -18,7 +18,7 @@ package org.apache.poi.hssf;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.apache.poi.HXFDocument;
|
||||
import org.apache.poi.hxf.HXFDocument;
|
||||
import org.apache.xmlbeans.XmlException;
|
||||
import org.openxml4j.exceptions.OpenXML4JException;
|
||||
import org.openxml4j.opc.Package;
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
==================================================================== */
|
||||
package org.apache.poi;
|
||||
package org.apache.poi.hxf;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.apache.poi.POIXMLDocument;
|
||||
import org.dom4j.Document;
|
||||
import org.dom4j.DocumentException;
|
||||
import org.dom4j.io.SAXReader;
|
|
@ -0,0 +1,126 @@
|
|||
/* ====================================================================
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You 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.apache.poi.hxf.dev;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.openxml4j.opc.Package;
|
||||
import org.openxml4j.opc.PackageAccess;
|
||||
import org.openxml4j.opc.PackagePart;
|
||||
import org.openxml4j.opc.PackageRelationship;
|
||||
import org.openxml4j.opc.PackageRelationshipCollection;
|
||||
|
||||
/**
|
||||
* Prints out the contents of a HXF (ooxml) container.
|
||||
* Useful for seeing what parts are defined, and how
|
||||
* they're all related to each other.
|
||||
*/
|
||||
public class HXFLister {
|
||||
private Package container;
|
||||
private PrintStream disp;
|
||||
|
||||
public HXFLister(Package container) {
|
||||
this(container, System.out);
|
||||
}
|
||||
public HXFLister(Package container, PrintStream disp) {
|
||||
this.container = container;
|
||||
this.disp = disp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Figures out how big a given PackagePart is.
|
||||
*/
|
||||
public static long getSize(PackagePart part) throws IOException {
|
||||
InputStream in = part.getInputStream();
|
||||
byte[] b = new byte[8192];
|
||||
long size = 0;
|
||||
int read = 0;
|
||||
|
||||
while(read > -1) {
|
||||
read = in.read(b);
|
||||
if(read > 0) {
|
||||
size += read;
|
||||
}
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays information on all the different
|
||||
* parts of the OOXML file container.
|
||||
*/
|
||||
public void displayParts() throws Exception {
|
||||
ArrayList<PackagePart> parts = container.getParts();
|
||||
for (PackagePart part : parts) {
|
||||
disp.println(part.getPartName());
|
||||
disp.println("\t" + part.getContentType());
|
||||
|
||||
if(! part.getPartName().toString().equals("/docProps/core.xml")) {
|
||||
disp.println("\t" + getSize(part) + " bytes");
|
||||
}
|
||||
|
||||
if(! part.isRelationshipPart()) {
|
||||
disp.println("\t" + part.getRelationships().size() + " relations");
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Displays information on all the different
|
||||
* relationships between different parts
|
||||
* of the OOXML file container.
|
||||
*/
|
||||
public void displayRelations() throws Exception {
|
||||
PackageRelationshipCollection rels =
|
||||
container.getRelationships();
|
||||
for (PackageRelationship rel : rels) {
|
||||
disp.println("Relationship:");
|
||||
disp.println("\tFrom: "+ rel.getSourceURI());
|
||||
disp.println("\tTo: " + rel.getTargetURI());
|
||||
disp.println("\tMode: " + rel.getTargetMode());
|
||||
disp.println("\tType: " + rel.getRelationshipType());
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
if(args.length == 0) {
|
||||
System.err.println("Use:");
|
||||
System.err.println("\tjava HXFLister <filename>");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
File f = new File(args[0]);
|
||||
if(! f.exists()) {
|
||||
System.err.println("Error, file not found!");
|
||||
System.err.println("\t" + f.toString());
|
||||
System.exit(2);
|
||||
}
|
||||
|
||||
HXFLister lister = new HXFLister(
|
||||
Package.open(f.toString(), PackageAccess.READ)
|
||||
);
|
||||
|
||||
lister.disp.println(f.toString() + "\n");
|
||||
lister.displayParts();
|
||||
lister.disp.println();
|
||||
lister.displayRelations();
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ package org.apache.poi.hssf;
|
|||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.poi.HXFDocument;
|
||||
import org.apache.poi.hxf.HXFDocument;
|
||||
import org.openxml4j.opc.Package;
|
||||
import org.openxml4j.opc.PackagePart;
|
||||
|
||||
|
|
Loading…
Reference in New Issue