aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2021-11-11 23:24:08 +0000
committerPJ Fanning <fanningpj@apache.org>2021-11-11 23:24:08 +0000
commit20c0ac1637acb8069b656452ff39eb0dbf9baef1 (patch)
treed89aa8c29ab33f6cd905089713407dd1c72343c0
parent530af684b3ae51b464c2e8a2a4633c72eaeade66 (diff)
downloadpoi-20c0ac1637acb8069b656452ff39eb0dbf9baef1.tar.gz
poi-20c0ac1637acb8069b656452ff39eb0dbf9baef1.zip
[bug-65678] add XSLFGraphicFrame hasDiagram
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1894962 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java15
-rw-r--r--poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFGraphicFrame.java36
-rw-r--r--src/resources/devtools/forbidden-signatures-prod.txt6
-rw-r--r--test-data/slideshow/SmartArt.pptxbin0 -> 41382 bytes
4 files changed, 51 insertions, 6 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
index e85e9608ec..d853d0bb2c 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
@@ -51,6 +51,7 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
@Beta
public class XSLFGraphicFrame extends XSLFShape implements GraphicalFrame<XSLFShape, XSLFTextParagraph> {
private static final String DRAWINGML_CHART_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
+ private static final String DRAWINGML_DIAGRAM_URI = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
private static final Logger LOG = LogManager.getLogger(XSLFGraphicFrame.class);
/*package*/ XSLFGraphicFrame(CTGraphicalObjectFrame shape, XSLFSheet sheet){
@@ -169,6 +170,14 @@ public class XSLFGraphicFrame extends XSLFShape implements GraphicalFrame<XSLFSh
return uri.equals(DRAWINGML_CHART_URI);
}
+ /**
+ * @since POI 5.2.0
+ */
+ public boolean hasDiagram() {
+ String uri = getGraphicalData().getUri();
+ return uri.equals(DRAWINGML_DIAGRAM_URI);
+ }
+
private CTGraphicalObjectData getGraphicalData() {
return ((CTGraphicalObjectFrame)getXmlObject()).getGraphic().getGraphicData();
}
@@ -200,7 +209,7 @@ public class XSLFGraphicFrame extends XSLFShape implements GraphicalFrame<XSLFSh
CTGraphicalObjectData data = getGraphicalData();
String uri = data.getUri();
- if(uri.equals("http://schemas.openxmlformats.org/drawingml/2006/diagram")){
+ if(uri.equals(DRAWINGML_DIAGRAM_URI)){
copyDiagram(data, (XSLFGraphicFrame)sh);
} if(uri.equals(DRAWINGML_CHART_URI)){
copyChart(data, (XSLFGraphicFrame)sh);
@@ -235,9 +244,9 @@ public class XSLFGraphicFrame extends XSLFShape implements GraphicalFrame<XSLFSh
// TODO should be moved to a sub-class
private void copyDiagram(CTGraphicalObjectData objData, XSLFGraphicFrame srcShape){
- String xpath = "declare namespace dgm='http://schemas.openxmlformats.org/drawingml/2006/diagram' $this//dgm:relIds";
+ String xpath = "declare namespace dgm='" + DRAWINGML_DIAGRAM_URI + "' $this//dgm:relIds";
XmlObject[] obj = objData.selectPath(xpath);
- if(obj != null && obj.length == 1){
+ if(obj != null && obj.length == 1) {
XmlCursor c = obj[0].newCursor();
XSLFSheet sheet = srcShape.getSheet();
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFGraphicFrame.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFGraphicFrame.java
new file mode 100644
index 0000000000..e58b528b13
--- /dev/null
+++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFGraphicFrame.java
@@ -0,0 +1,36 @@
+/* ====================================================================
+ 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.junit.jupiter.api.Test;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.apache.poi.xslf.XSLFTestDataSamples.openSampleDocument;
+
+class TestXSLFGraphicFrame {
+
+ @Test
+ void testHasDiagram() throws IOException {
+ try (XMLSlideShow ppt = openSampleDocument("SmartArt.pptx")) {
+ XSLFSlide slide = ppt.getSlides().get(0);
+ XSLFGraphicFrame gf = (XSLFGraphicFrame) slide.getShapes().get(0);
+
+ assertTrue(gf.hasDiagram());
+ }
+ }
+} \ No newline at end of file
diff --git a/src/resources/devtools/forbidden-signatures-prod.txt b/src/resources/devtools/forbidden-signatures-prod.txt
index fa1a846088..c2b02a219c 100644
--- a/src/resources/devtools/forbidden-signatures-prod.txt
+++ b/src/resources/devtools/forbidden-signatures-prod.txt
@@ -27,6 +27,6 @@
java.lang.System#gc() @ Please do not try to stop the world
-java.lang.Throwable#printStackTrace() @ Please use POILogger for exceptions
-java.lang.Throwable#printStackTrace(java.io.PrintStream) @ Please use POILogger for exceptions
-java.lang.Throwable#printStackTrace(java.io.PrintWriter) @ Please use POILogger for exceptions \ No newline at end of file
+java.lang.Throwable#printStackTrace() @ Please use Log4J 2.x for exceptions
+java.lang.Throwable#printStackTrace(java.io.PrintStream) @ Please use Log4J 2.x for exceptions
+java.lang.Throwable#printStackTrace(java.io.PrintWriter) @ Please use Log4J 2.x for exceptions \ No newline at end of file
diff --git a/test-data/slideshow/SmartArt.pptx b/test-data/slideshow/SmartArt.pptx
new file mode 100644
index 0000000000..7b7731d78f
--- /dev/null
+++ b/test-data/slideshow/SmartArt.pptx
Binary files differ