]> source.dussan.org Git - poi.git/commitdiff
Use the existing CTExternalData element
authorSayi <sayi@apache.org>
Sun, 9 Aug 2020 08:05:37 +0000 (08:05 +0000)
committerSayi <sayi@apache.org>
Sun, 9 Aug 2020 08:05:37 +0000 (08:05 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880707 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFChart.java

index dd959dddee8d3dfa9a1cfaa221114d7a7b947353..f5cc461cc35ba8bc948167c3776dc0db3221c342 100644 (file)
@@ -67,6 +67,7 @@ import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTDateAx;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTDoughnutChart;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTExternalData;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLine3DChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTPie3DChart;
@@ -1057,6 +1058,11 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
      */
     public void setExternalId(String id) {
         getCTChartSpace().addNewExternalData().setId(id);
+        CTChartSpace ctChartSpace = getCTChartSpace();
+        CTExternalData externalData = ctChartSpace.isSetExternalData()
+                ? ctChartSpace.getExternalData()
+                : ctChartSpace.addNewExternalData();
+        externalData.setId(id);
     }
 
     /**
index 6d345991f4009f3d2f9b1c7df854deee44f3774b..fe838bbe772bb7af73e4d1d776c2d0e5bf305dd5 100644 (file)
@@ -21,13 +21,34 @@ package org.apache.poi.xddf.usermodel.chart;
 import org.apache.poi.ooxml.POIXMLFactory;
 import org.apache.poi.ooxml.POIXMLRelation;
 import org.junit.Test;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 public class TestXDDFChart {
     @Test
     public void testConstruct() {
         // minimal test to cause ooxml-lite to include all the classes in poi-ooxml-schemas
+        XDDFChart xddfChart = newXDDFChart();
+
+        assertNotNull(xddfChart.getCTChartSpace());
+        assertNotNull(xddfChart.getCTPlotArea());
+    }
+
+    @Test
+    public void testSetExternalId() {
+        XDDFChart xddfChart = newXDDFChart();
+        CTChartSpace ctChartSpace = xddfChart.getCTChartSpace();
+
+        xddfChart.setExternalId("rid1");
+        assertEquals("rid1", ctChartSpace.getExternalData().getId());
+        
+        xddfChart.setExternalId("rid2");
+        assertEquals("rid2", ctChartSpace.getExternalData().getId());
+    }
+
+    private XDDFChart newXDDFChart() {
         XDDFChart xddfChart = new XDDFChart() {
             @Override
             protected POIXMLRelation getChartRelation() {
@@ -44,7 +65,6 @@ public class TestXDDFChart {
                 return null;
             }
         };
-
-        assertNotNull(xddfChart.getCTPlotArea());
+        return xddfChart;
     }
 }
\ No newline at end of file