aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java/org/apache/poi/xslf
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2012-09-14 11:53:39 +0000
committerYegor Kozlov <yegor@apache.org>2012-09-14 11:53:39 +0000
commit43dcefc312064cc5813887e10b586c768117e0b4 (patch)
tree55b81b846dbd0d0504fe5cf59c61719e38d633c0 /src/ooxml/java/org/apache/poi/xslf
parent861bccdf3c31ad9fae6e235ba96910823d3c28e8 (diff)
downloadpoi-43dcefc312064cc5813887e10b586c768117e0b4.tar.gz
poi-43dcefc312064cc5813887e10b586c768117e0b4.zip
added relation for XSLF charts
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1384730 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java/org/apache/poi/xslf')
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFChart.java110
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java9
2 files changed, 118 insertions, 1 deletions
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFChart.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFChart.java
new file mode 100644
index 0000000000..702d54427d
--- /dev/null
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFChart.java
@@ -0,0 +1,110 @@
+/*
+ * ====================================================================
+ * 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.xslf.usermodel;
+
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.util.Beta;
+import org.apache.poi.util.Internal;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlOptions;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
+import org.openxmlformats.schemas.drawingml.x2006.chart.ChartSpaceDocument;
+
+import javax.xml.namespace.QName;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Represents a Chart in a .pptx presentation
+ *
+ *
+ */
+@Beta
+public final class XSLFChart extends POIXMLDocumentPart {
+
+ /**
+ * Root element of the Chart part
+ */
+ private CTChartSpace chartSpace;
+
+ /**
+ * The Chart within that
+ */
+ private CTChart chart;
+
+ /**
+ * Construct a chart from a package part.
+ *
+ * @param part the package part holding the chart data,
+ * the content type must be <code>application/vnd.openxmlformats-officedocument.drawingml.chart+xml</code>
+ * @param rel the package relationship holding this chart,
+ * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart
+ */
+ protected XSLFChart(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
+ super(part, rel);
+
+ chartSpace = ChartSpaceDocument.Factory.parse(part.getInputStream()).getChartSpace();
+ chart = chartSpace.getChart();
+ }
+
+ /**
+ * Return the underlying CTChartSpace bean, the root element of the Chart part.
+ *
+ * @return the underlying CTChartSpace bean
+ */
+ @Internal
+ public CTChartSpace getCTChartSpace(){
+ return chartSpace;
+ }
+
+ /**
+ * Return the underlying CTChart bean, within the Chart Space
+ *
+ * @return the underlying CTChart bean
+ */
+ @Internal
+ public CTChart getCTChart(){
+ return chart;
+ }
+
+ @Override
+ protected void commit() throws IOException {
+ XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
+
+ xmlOptions.setSaveSyntheticDocumentElement(new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("http://schemas.openxmlformats.org/drawingml/2006/main", "a");
+ map.put("http://schemas.openxmlformats.org/drawingml/2006/chart", "c");
+ map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r");
+ xmlOptions.setSaveSuggestedPrefixes(map);
+
+ PackagePart part = getPackagePart();
+ OutputStream out = part.getOutputStream();
+ chartSpace.save(out, xmlOptions);
+ out.close();
+ }
+
+
+}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
index e23b5a3361..1ec3ac2d8a 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
@@ -139,7 +139,14 @@ public class XSLFRelation extends POIXMLRelation {
"/ppt/drawings/vmlDrawing#.vml",
null
);
-
+
+ public static final XSLFRelation CHART = new XSLFRelation(
+ "application/vnd.openxmlformats-officedocument.drawingml.chart+xml",
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",
+ "/ppt/charts/chart#.xml",
+ XSLFChart.class
+ );
+
public static final XSLFRelation IMAGE_EMF = new XSLFRelation(
"image/x-emf",
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",