Use the existing CTExternalData element

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880707 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Sayi 2020-08-09 08:05:37 +00:00
parent edf41ca4d5
commit eb850f02de
2 changed files with 28 additions and 2 deletions

View 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.CTChartSpace;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTDateAx; import org.openxmlformats.schemas.drawingml.x2006.chart.CTDateAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTDoughnutChart; 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.CTLine3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPie3DChart; 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) { public void setExternalId(String id) {
getCTChartSpace().addNewExternalData().setId(id); getCTChartSpace().addNewExternalData().setId(id);
CTChartSpace ctChartSpace = getCTChartSpace();
CTExternalData externalData = ctChartSpace.isSetExternalData()
? ctChartSpace.getExternalData()
: ctChartSpace.addNewExternalData();
externalData.setId(id);
} }
/** /**

View File

@ -21,13 +21,34 @@ package org.apache.poi.xddf.usermodel.chart;
import org.apache.poi.ooxml.POIXMLFactory; import org.apache.poi.ooxml.POIXMLFactory;
import org.apache.poi.ooxml.POIXMLRelation; import org.apache.poi.ooxml.POIXMLRelation;
import org.junit.Test; import org.junit.Test;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
public class TestXDDFChart { public class TestXDDFChart {
@Test @Test
public void testConstruct() { public void testConstruct() {
// minimal test to cause ooxml-lite to include all the classes in poi-ooxml-schemas // 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() { XDDFChart xddfChart = new XDDFChart() {
@Override @Override
protected POIXMLRelation getChartRelation() { protected POIXMLRelation getChartRelation() {
@ -44,7 +65,6 @@ public class TestXDDFChart {
return null; return null;
} }
}; };
return xddfChart;
assertNotNull(xddfChart.getCTPlotArea());
} }
} }