git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1894962 13f79535-47bb-0310-9956-ffa450edef68tags/REL_5_2_0
@@ -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(); |
@@ -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()); | |||
} | |||
} | |||
} |
@@ -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 | |||
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 |