You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ab...@apache.org on 2017/11/26 14:03:03 UTC
svn commit: r1816383 [4/5] - in /poi/trunk: ./
src/examples/src/org/apache/poi/xslf/usermodel/
src/examples/src/org/apache/poi/xssf/usermodel/examples/
src/java/org/apache/poi/hssf/usermodel/
src/java/org/apache/poi/ss/usermodel/ src/java/org/apache/po...
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java Sun Nov 26 14:03:01 2017
@@ -26,15 +26,13 @@ import java.util.List;
import javax.xml.namespace.QName;
-import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.ss.usermodel.Chart;
-import org.apache.poi.ss.usermodel.charts.AxisPosition;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
import org.apache.poi.ss.usermodel.charts.ChartAxisFactory;
import org.apache.poi.ss.usermodel.charts.ChartData;
-import org.apache.poi.util.Internal;
import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChart;
import org.apache.poi.xssf.usermodel.charts.XSSFCategoryAxis;
import org.apache.poi.xssf.usermodel.charts.XSSFChartAxis;
import org.apache.poi.xssf.usermodel.charts.XSSFChartDataFactory;
@@ -46,7 +44,6 @@ import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTCatAx;
-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.CTPageMargins;
@@ -56,7 +53,6 @@ import org.openxmlformats.schemas.drawin
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTValAx;
-import org.openxmlformats.schemas.drawingml.x2006.chart.ChartSpaceDocument;
import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextField;
@@ -68,139 +64,119 @@ import org.w3c.dom.Text;
/**
* Represents a SpreadsheetML Chart
*/
-public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartAxisFactory {
+public final class XSSFChart extends XDDFChart implements Chart, ChartAxisFactory {
- /**
- * Parent graphic frame.
- */
- private XSSFGraphicFrame frame;
+ /**
+ * Parent graphic frame.
+ */
+ private XSSFGraphicFrame frame;
- /**
- * Root element of the SpreadsheetML Chart part
- */
- private CTChartSpace chartSpace;
- /**
- * The Chart within that
- */
- private CTChart chart;
+ @Deprecated
+ @Removal(version="4.2")
+ List<XSSFChartAxis> axis = new ArrayList<>();
- List<XSSFChartAxis> axis = new ArrayList<>();
+ /**
+ * Create a new SpreadsheetML chart
+ */
+ protected XSSFChart() {
+ super();
+ createChart();
+ }
- /**
- * Create a new SpreadsheetML chart
- */
- protected XSSFChart() {
- super();
- createChart();
- }
+ /**
+ * Construct a SpreadsheetML 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>
+ *
+ * @since POI 3.14-Beta1
+ */
+ protected XSSFChart(PackagePart part) throws IOException, XmlException {
+ super(part);
+ }
- /**
- * Construct a SpreadsheetML 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>
- *
- * @since POI 3.14-Beta1
- */
- protected XSSFChart(PackagePart part) throws IOException, XmlException {
- super(part);
+ /**
+ * Construct a new CTChartSpace bean. By default, it's just an empty placeholder for chart objects.
+ */
+ private void createChart() {
+ CTPlotArea plotArea = getCTPlotArea();
- chartSpace = ChartSpaceDocument.Factory.parse(part.getInputStream(), DEFAULT_XML_OPTIONS).getChartSpace();
- chart = chartSpace.getChart();
- }
-
- /**
- * Construct a new CTChartSpace bean.
- * By default, it's just an empty placeholder for chart objects.
- */
- private void createChart() {
- chartSpace = CTChartSpace.Factory.newInstance();
- chart = chartSpace.addNewChart();
- CTPlotArea plotArea = chart.addNewPlotArea();
-
- plotArea.addNewLayout();
- chart.addNewPlotVisOnly().setVal(true);
-
- CTPrintSettings printSettings = chartSpace.addNewPrintSettings();
- printSettings.addNewHeaderFooter();
-
- CTPageMargins pageMargins = printSettings.addNewPageMargins();
- pageMargins.setB(0.75);
- pageMargins.setL(0.70);
- pageMargins.setR(0.70);
- pageMargins.setT(0.75);
- pageMargins.setHeader(0.30);
- pageMargins.setFooter(0.30);
- printSettings.addNewPageSetup();
- }
+ plotArea.addNewLayout();
+ chart.addNewPlotVisOnly().setVal(true);
- /**
- * Return the underlying CTChartSpace bean, the root element of the SpreadsheetML Chart part.
- *
- * @return the underlying CTChartSpace bean
- */
- @Internal
- public CTChartSpace getCTChartSpace(){
- return chartSpace;
- }
+ CTPrintSettings printSettings = chartSpace.addNewPrintSettings();
+ printSettings.addNewHeaderFooter();
- /**
- * 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);
-
- /*
- Saved chart space must have the following namespaces set:
- <c:chartSpace
- xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
- xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
- xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- */
- xmlOptions.setSaveSyntheticDocumentElement(new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
-
- PackagePart part = getPackagePart();
- OutputStream out = part.getOutputStream();
- chartSpace.save(out, xmlOptions);
- out.close();
- }
+ CTPageMargins pageMargins = printSettings.addNewPageMargins();
+ pageMargins.setB(0.75);
+ pageMargins.setL(0.70);
+ pageMargins.setR(0.70);
+ pageMargins.setT(0.75);
+ pageMargins.setHeader(0.30);
+ pageMargins.setFooter(0.30);
+ printSettings.addNewPageSetup();
+ }
- /**
- * Returns the parent graphic frame.
- * @return the graphic frame this chart belongs to
- */
- public XSSFGraphicFrame getGraphicFrame() {
- return frame;
- }
+ @Override
+ protected void commit() throws IOException {
+ XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
+
+ /*
+ * Saved chart space must have the following namespaces set: <c:chartSpace
+ * xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
+ * xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r=
+ * "http://schemas.openxmlformats.org/officeDocument/2006/relationships">
+ */
+ xmlOptions.setSaveSyntheticDocumentElement(new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
+
+ PackagePart part = getPackagePart();
+ try (OutputStream out = part.getOutputStream()) {
+ chartSpace.save(out, xmlOptions);
+ }
+ }
- /**
- * Sets the parent graphic frame.
- */
- protected void setGraphicFrame(XSSFGraphicFrame frame) {
- this.frame = frame;
- }
+ /**
+ * Returns the parent graphic frame.
+ *
+ * @return the graphic frame this chart belongs to
+ */
+ public XSSFGraphicFrame getGraphicFrame() {
+ return frame;
+ }
+
+ /**
+ * Sets the parent graphic frame.
+ */
+ protected void setGraphicFrame(XSSFGraphicFrame frame) {
+ this.frame = frame;
+ }
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public XSSFChartDataFactory getChartDataFactory() {
return XSSFChartDataFactory.getInstance();
}
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public XSSFChart getChartAxisFactory() {
return this;
}
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public void plot(ChartData data, ChartAxis... chartAxis) {
data.fillChart(this, chartAxis);
}
- public XSSFValueAxis createValueAxis(AxisPosition pos) {
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
+ public XSSFValueAxis createValueAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
long id = axis.size() + 1;
XSSFValueAxis valueAxis = new XSSFValueAxis(this, id, pos);
if (axis.size() == 1) {
@@ -212,7 +188,10 @@ public final class XSSFChart extends POI
return valueAxis;
}
- public XSSFCategoryAxis createCategoryAxis(AxisPosition pos) {
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
+ public XSSFCategoryAxis createCategoryAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
long id = axis.size() + 1;
XSSFCategoryAxis categoryAxis = new XSSFCategoryAxis(this, id, pos);
if (axis.size() == 1) {
@@ -224,46 +203,42 @@ public final class XSSFChart extends POI
return categoryAxis;
}
- public XSSFDateAxis createDateAxis(AxisPosition pos) {
- long id = axis.size() + 1;
- XSSFDateAxis dateAxis = new XSSFDateAxis(this, id, pos);
- if (axis.size() == 1) {
- ChartAxis ax = axis.get(0);
- ax.crossAxis(dateAxis);
- dateAxis.crossAxis(ax);
- }
- axis.add(dateAxis);
- return dateAxis;
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
+ public XSSFDateAxis createDateAxis(org.apache.poi.ss.usermodel.charts.AxisPosition pos) {
+ long id = axis.size() + 1;
+ XSSFDateAxis dateAxis = new XSSFDateAxis(this, id, pos);
+ if (axis.size() == 1) {
+ ChartAxis ax = axis.get(0);
+ ax.crossAxis(dateAxis);
+ dateAxis.crossAxis(ax);
+ }
+ axis.add(dateAxis);
+ return dateAxis;
}
-
+
+ /**
+ * @deprecated use {@link getAxes} instead
+ */
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public List<? extends XSSFChartAxis> getAxis() {
if (axis.isEmpty() && hasAxis()) {
parseAxis();
}
return axis;
}
-
+
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public XSSFManualLayout getManualLayout() {
return new XSSFManualLayout(this);
}
/**
- * @return true if only visible cells will be present on the chart,
- * false otherwise
- */
- public boolean isPlotOnlyVisibleCells() {
- return chart.getPlotVisOnly().getVal();
- }
-
- /**
- * @param plotVisOnly a flag specifying if only visible cells should be
- * present on the chart
- */
- public void setPlotOnlyVisibleCells(boolean plotVisOnly) {
- chart.getPlotVisOnly().setVal(plotVisOnly);
- }
-
- /**
* Returns the title static text, or null if none is set.
* Note that a title formula may be set instead.
* @return static title text, if set
@@ -274,14 +249,14 @@ public final class XSSFChart extends POI
public XSSFRichTextString getTitle() {
return getTitleText();
}
-
+
/**
* Returns the title static text, or null if none is set.
* Note that a title formula may be set instead.
* Empty text result is for backward compatibility, and could mean the title text is empty or there is a formula instead.
* Check for a formula first, falling back on text for cleaner logic.
- * @return static title text if set,
- * null if there is no title,
+ * @return static title text if set,
+ * null if there is no title,
* empty string if the title text is empty or the title uses a formula instead
*/
public XSSFRichTextString getTitleText() {
@@ -295,8 +270,8 @@ public final class XSSFChart extends POI
StringBuilder text = new StringBuilder(64);
XmlObject[] t = title
.selectPath("declare namespace a='"+XSSFDrawing.NAMESPACE_A+"' .//a:t");
- for (int m = 0; m < t.length; m++) {
- NodeList kids = t[m].getDomNode().getChildNodes();
+ for (XmlObject element : t) {
+ NodeList kids = element.getDomNode().getChildNodes();
final int count = kids.getLength();
for (int n = 0; n < count; n++) {
Node kid = kids.item(n);
@@ -315,161 +290,169 @@ public final class XSSFChart extends POI
* @deprecated POI 3.16, use {@link #setTitleText(String)} instead.
*/
@Deprecated
- @Removal(version="4.0")
- public void setTitle(String newTitle) {
-
- }
-
+ @Removal(version = "4.0")
+ public void setTitle(String newTitle) {
+
+ }
+
/**
* Sets the title text as a static string.
- * @param newTitle to use
+ *
+ * @param newTitle
+ * to use
*/
- public void setTitleText(String newTitle) {
- CTTitle ctTitle;
- if (chart.isSetTitle()) {
- ctTitle = chart.getTitle();
- } else {
- ctTitle = chart.addNewTitle();
- }
+ public void setTitleText(String newTitle) {
+ CTTitle ctTitle;
+ if (chart.isSetTitle()) {
+ ctTitle = chart.getTitle();
+ } else {
+ ctTitle = chart.addNewTitle();
+ }
- CTTx tx;
- if (ctTitle.isSetTx()) {
- tx = ctTitle.getTx();
- } else {
- tx = ctTitle.addNewTx();
- }
+ CTTx tx;
+ if (ctTitle.isSetTx()) {
+ tx = ctTitle.getTx();
+ } else {
+ tx = ctTitle.addNewTx();
+ }
- if (tx.isSetStrRef()) {
- tx.unsetStrRef();
- }
+ if (tx.isSetStrRef()) {
+ tx.unsetStrRef();
+ }
- CTTextBody rich;
- if (tx.isSetRich()) {
- rich = tx.getRich();
- } else {
- rich = tx.addNewRich();
- rich.addNewBodyPr(); // body properties must exist (but can be empty)
- }
+ CTTextBody rich;
+ if (tx.isSetRich()) {
+ rich = tx.getRich();
+ } else {
+ rich = tx.addNewRich();
+ rich.addNewBodyPr(); // body properties must exist (but can be
+ // empty)
+ }
- CTTextParagraph para;
- if (rich.sizeOfPArray() > 0) {
- para = rich.getPArray(0);
- } else {
- para = rich.addNewP();
- }
+ CTTextParagraph para;
+ if (rich.sizeOfPArray() > 0) {
+ para = rich.getPArray(0);
+ } else {
+ para = rich.addNewP();
+ }
- if (para.sizeOfRArray() > 0) {
- CTRegularTextRun run = para.getRArray(0);
- run.setT(newTitle);
- } else if (para.sizeOfFldArray() > 0) {
- CTTextField fld = para.getFldArray(0);
- fld.setT(newTitle);
- } else {
- CTRegularTextRun run = para.addNewR();
- run.setT(newTitle);
- }
- }
-
- /**
- * Get the chart title formula expression if there is one
- * @return formula expression or null
- */
- public String getTitleFormula() {
- if(! chart.isSetTitle()) {
- return null;
- }
-
- CTTitle title = chart.getTitle();
-
- if (! title.isSetTx()) {
- return null;
- }
-
- CTTx tx = title.getTx();
-
- if (! tx.isSetStrRef()) {
- return null;
- }
-
- return tx.getStrRef().getF();
- }
-
- /**
- * Set the formula expression to use for the chart title
- * @param formula
- */
- public void setTitleFormula(String formula) {
- CTTitle ctTitle;
- if (chart.isSetTitle()) {
- ctTitle = chart.getTitle();
- } else {
- ctTitle = chart.addNewTitle();
- }
-
- CTTx tx;
- if (ctTitle.isSetTx()) {
- tx = ctTitle.getTx();
- } else {
- tx = ctTitle.addNewTx();
- }
-
- if (tx.isSetRich()) {
- tx.unsetRich();
- }
-
- CTStrRef strRef;
- if (tx.isSetStrRef()) {
- strRef = tx.getStrRef();
- } else {
- strRef = tx.addNewStrRef();
- }
-
- strRef.setF(formula);
- }
+ if (para.sizeOfRArray() > 0) {
+ CTRegularTextRun run = para.getRArray(0);
+ run.setT(newTitle);
+ } else if (para.sizeOfFldArray() > 0) {
+ CTTextField fld = para.getFldArray(0);
+ fld.setT(newTitle);
+ } else {
+ CTRegularTextRun run = para.addNewR();
+ run.setT(newTitle);
+ }
+ }
+
+ /**
+ * Get the chart title formula expression if there is one
+ *
+ * @return formula expression or null
+ */
+ public String getTitleFormula() {
+ if (!chart.isSetTitle()) {
+ return null;
+ }
+
+ CTTitle title = chart.getTitle();
+
+ if (!title.isSetTx()) {
+ return null;
+ }
+
+ CTTx tx = title.getTx();
+
+ if (!tx.isSetStrRef()) {
+ return null;
+ }
+ return tx.getStrRef().getF();
+ }
+
+ /**
+ * Set the formula expression to use for the chart title
+ *
+ * @param formula
+ */
+ public void setTitleFormula(String formula) {
+ CTTitle ctTitle;
+ if (chart.isSetTitle()) {
+ ctTitle = chart.getTitle();
+ } else {
+ ctTitle = chart.addNewTitle();
+ }
+
+ CTTx tx;
+ if (ctTitle.isSetTx()) {
+ tx = ctTitle.getTx();
+ } else {
+ tx = ctTitle.addNewTx();
+ }
+
+ if (tx.isSetRich()) {
+ tx.unsetRich();
+ }
+
+ CTStrRef strRef;
+ if (tx.isSetStrRef()) {
+ strRef = tx.getStrRef();
+ } else {
+ strRef = tx.addNewStrRef();
+ }
+
+ strRef.setF(formula);
+ }
+
+ @Override
+ @Deprecated
+ @Removal(version="4.2")
public XSSFChartLegend getOrCreateLegend() {
return new XSSFChartLegend(this);
}
- public void deleteLegend() {
- if (chart.isSetLegend()) {
- chart.unsetLegend();
- }
- }
-
+ @Deprecated
+ @Removal(version="4.2")
private boolean hasAxis() {
- CTPlotArea ctPlotArea = chart.getPlotArea();
- int totalAxisCount =
- ctPlotArea.sizeOfValAxArray() +
- ctPlotArea.sizeOfCatAxArray() +
- ctPlotArea.sizeOfDateAxArray() +
- ctPlotArea.sizeOfSerAxArray();
- return totalAxisCount > 0;
- }
-
- private void parseAxis() {
- // TODO: add other axis types
- parseCategoryAxis();
- parseDateAxis();
- parseValueAxis();
- }
-
- private void parseCategoryAxis() {
- for (CTCatAx catAx : chart.getPlotArea().getCatAxArray()) {
- axis.add(new XSSFCategoryAxis(this, catAx));
- }
+ CTPlotArea ctPlotArea = chart.getPlotArea();
+ int totalAxisCount = ctPlotArea.sizeOfValAxArray() + ctPlotArea.sizeOfCatAxArray() + ctPlotArea.sizeOfDateAxArray() + ctPlotArea.sizeOfSerAxArray();
+ return totalAxisCount > 0;
}
- private void parseDateAxis() {
- for (CTDateAx dateAx : chart.getPlotArea().getDateAxArray()) {
- axis.add(new XSSFDateAxis(this, dateAx));
- }
- }
-
- private void parseValueAxis() {
- for (CTValAx valAx : chart.getPlotArea().getValAxArray()) {
- axis.add(new XSSFValueAxis(this, valAx));
- }
- }
+ @Deprecated
+ @Removal(version="4.2")
+ private void parseAxis() {
+ // TODO: add other axis types
+ parseCategoryAxis();
+ parseDateAxis();
+ parseValueAxis();
+ }
+
+ @Deprecated
+ @Removal(version="4.2")
+ private void parseCategoryAxis() {
+ for (CTCatAx catAx : chart.getPlotArea().getCatAxArray()) {
+ axis.add(new XSSFCategoryAxis(this, catAx));
+ }
+ }
+
+ @Deprecated
+ @Removal(version="4.2")
+ private void parseDateAxis() {
+ for (CTDateAx dateAx : chart.getPlotArea().getDateAxArray()) {
+ axis.add(new XSSFDateAxis(this, dateAx));
+ }
+ }
+
+ @Deprecated
+ @Removal(version="4.2")
+ private void parseValueAxis() {
+ for (CTValAx valAx : chart.getPlotArea().getValAxArray()) {
+ axis.add(new XSSFValueAxis(this, valAx));
+ }
+ }
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java Sun Nov 26 14:03:01 2017
@@ -239,7 +239,12 @@ public final class XSSFDrawing extends P
return chart;
}
- @Override
+ /**
+ * Creates a chart.
+ * @param anchor the client anchor describes how this chart is attached to
+ * the sheet.
+ * @return the newly created chart
+ */
public XSSFChart createChart(ClientAnchor anchor) {
return createChart((XSSFClientAnchor)anchor);
}
@@ -389,7 +394,7 @@ public final class XSSFDrawing extends P
/*
* The shape id of the ole object seems to be a legacy shape id.
- *
+ *
* see 5.3.2.1 legacyDrawing (Legacy Drawing Object):
* Legacy Shape ID that is unique throughout the entire document.
* Legacy shape IDs should be assigned based on which portion of the document the
@@ -439,7 +444,7 @@ public final class XSSFDrawing extends P
cur1.insertAttributeWithValue("moveWithCells", "1");
CTTwoCellAnchor ctAnchor = createTwoCellAnchor((XSSFClientAnchor)anchor);
-
+
XmlCursor cur2 = ctAnchor.newCursor();
cur2.copyXmlContents(cur1);
cur2.dispose();
@@ -456,12 +461,12 @@ public final class XSSFDrawing extends P
CTShape ctShape = ctAnchor.addNewSp();
ctShape.set(XSSFObjectData.prototype());
ctShape.getSpPr().setXfrm(createXfrm((XSSFClientAnchor)anchor));
-
+
// workaround for not having the vmlDrawing filled
CTBlipFillProperties blipFill = ctShape.getSpPr().addNewBlipFill();
blipFill.addNewBlip().setEmbed(imgDrawPR.getId());
blipFill.addNewStretch().addNewFillRect();
-
+
CTNonVisualDrawingProps cNvPr = ctShape.getNvSpPr().getCNvPr();
cNvPr.setId(shapeId);
cNvPr.setName("Object "+shapeId);
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/AbstractXSSFChartSeries.java Sun Nov 26 14:03:01 2017
@@ -20,27 +20,36 @@ package org.apache.poi.xssf.usermodel.ch
import org.apache.poi.ss.usermodel.charts.ChartSeries;
import org.apache.poi.ss.usermodel.charts.TitleType;
import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
/**
* Base of all XSSF Chart Series
+ *
+ * @deprecated use {@link XDDFChartData.Series} instead
*/
+@Deprecated
+@Removal(version="4.2")
public abstract class AbstractXSSFChartSeries implements ChartSeries {
private String titleValue;
private CellReference titleRef;
private TitleType titleType;
+ @Override
public void setTitle(CellReference titleReference) {
titleType = TitleType.CELL_REFERENCE;
titleRef = titleReference;
}
+ @Override
public void setTitle(String title) {
titleType = TitleType.STRING;
titleValue = title;
}
+ @Override
public CellReference getTitleCellReference() {
if (TitleType.CELL_REFERENCE.equals(titleType)) {
return titleRef;
@@ -48,6 +57,7 @@ public abstract class AbstractXSSFChartS
throw new IllegalStateException("Title type is not CellReference.");
}
+ @Override
public String getTitleString() {
if (TitleType.STRING.equals(titleType)) {
return titleValue;
@@ -55,6 +65,7 @@ public abstract class AbstractXSSFChartS
throw new IllegalStateException("Title type is not String.");
}
+ @Override
public TitleType getTitleType() {
return titleType;
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFCategoryAxis.java Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.AxisPosition;
import org.apache.poi.ss.usermodel.charts.AxisTickMark;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -39,9 +40,10 @@ import org.openxmlformats.schemas.drawin
/**
* Category axis type.
*
- * @author Martin Andersson
+ * @deprecated use {@link XDDFCategoryAxis} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFCategoryAxis extends XSSFChartAxis {
private CTCatAx ctCatAx;
@@ -66,7 +68,7 @@ public class XSSFCategoryAxis extends XS
public CTShapeProperties getLine() {
return ctCatAx.getSpPr();
}
-
+
@Override
protected CTAxPos getCTAxPos() {
return ctCatAx.getAxPos();
@@ -110,7 +112,7 @@ public class XSSFCategoryAxis extends XS
public CTChartLines getMajorGridLines() {
return ctCatAx.getMajorGridlines();
}
-
+
@Override
public void crossAxis(ChartAxis axis) {
ctCatAx.getCrossAx().setVal(axis.getId());
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartAxis.java Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.AxisPosition;
import org.apache.poi.ss.usermodel.charts.AxisTickMark;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartAxis;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -43,9 +44,10 @@ import org.openxmlformats.schemas.drawin
/**
* Base class for all axis types.
*
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFChartAxis} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public abstract class XSSFChartAxis implements ChartAxis {
protected XSSFChart chart;
@@ -221,7 +223,7 @@ public abstract class XSSFChartAxis impl
protected abstract CTTickMark getMinorCTTickMark();
@Internal public abstract CTChartLines getMajorGridLines();
@Internal public abstract CTShapeProperties getLine();
-
+
private static STOrientation.Enum fromAxisOrientation(AxisOrientation orientation) {
switch (orientation) {
case MIN_MAX: return STOrientation.MIN_MAX;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartDataFactory.java Sun Nov 26 14:03:01 2017
@@ -17,13 +17,14 @@
package org.apache.poi.xssf.usermodel.charts;
-import org.apache.poi.ss.usermodel.charts.*;
-import org.apache.poi.util.Beta;
+import org.apache.poi.ss.usermodel.charts.ChartDataFactory;
+import org.apache.poi.util.Removal;
/**
- * @author Roman Kashitsyn
+ * @deprecated
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFChartDataFactory implements ChartDataFactory {
private static XSSFChartDataFactory instance;
@@ -35,14 +36,16 @@ public class XSSFChartDataFactory implem
/**
* @return new scatter charts data instance
*/
- public XSSFScatterChartData createScatterChartData() {
+ @Override
+ public XSSFScatterChartData createScatterChartData() {
return new XSSFScatterChartData();
}
/**
* @return new line charts data instance
*/
- public XSSFLineChartData createLineChartData() {
+ @Override
+ public XSSFLineChartData createLineChartData() {
return new XSSFLineChartData();
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartLegend.java Sun Nov 26 14:03:01 2017
@@ -17,10 +17,11 @@
package org.apache.poi.xssf.usermodel.charts;
-import org.apache.poi.util.Beta;
-import org.apache.poi.util.Internal;
import org.apache.poi.ss.usermodel.charts.ChartLegend;
import org.apache.poi.ss.usermodel.charts.LegendPosition;
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLegend;
@@ -29,10 +30,10 @@ import org.openxmlformats.schemas.drawin
/**
* Represents a SpreadsheetML chart legend
- * @author Roman Kashitsyn
- * @author Martin Andersson
+ * @deprecated use {@link XDDFChartLegend} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public final class XSSFChartLegend implements ChartLegend {
/**
@@ -72,7 +73,8 @@ public final class XSSFChartLegend imple
return legend;
}
- public void setPosition(LegendPosition position) {
+ @Override
+ public void setPosition(LegendPosition position) {
if (!legend.isSetLegendPos()) {
legend.addNewLegendPos();
}
@@ -82,7 +84,8 @@ public final class XSSFChartLegend imple
/*
* According to ECMA-376 default position is RIGHT.
*/
- public LegendPosition getPosition() {
+ @Override
+ public LegendPosition getPosition() {
if (legend.isSetLegendPos()) {
return toLegendPosition(legend.getLegendPos());
} else {
@@ -90,18 +93,21 @@ public final class XSSFChartLegend imple
}
}
- public XSSFManualLayout getManualLayout() {
+ @Override
+ public XSSFManualLayout getManualLayout() {
if (!legend.isSetLayout()) {
legend.addNewLayout();
}
return new XSSFManualLayout(legend.getLayout());
}
- public boolean isOverlay() {
+ @Override
+ public boolean isOverlay() {
return legend.getOverlay().getVal();
}
- public void setOverlay(boolean value) {
+ @Override
+ public void setOverlay(boolean value) {
legend.getOverlay().setVal(value);
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFChartUtil.java Sun Nov 26 14:03:01 2017
@@ -20,13 +20,23 @@
package org.apache.poi.xssf.usermodel.charts;
import org.apache.poi.ss.usermodel.charts.ChartDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.*;
+import org.apache.poi.util.Removal;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumRef;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrRef;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
/**
* Package private class with utility methods.
*
- * @author Roman Kashitsyn
+ * @deprecated
*/
+@Deprecated
+@Removal(version="4.2")
class XSSFChartUtil {
private XSSFChartUtil() {}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFDateAxis.java Sun Nov 26 14:03:01 2017
@@ -22,8 +22,9 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.AxisPosition;
import org.apache.poi.ss.usermodel.charts.AxisTickMark;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
-import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFDateAxis;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -38,8 +39,11 @@ import org.openxmlformats.schemas.drawin
/**
* Date axis type. Currently only implements the same values as {@link XSSFCategoryAxis}, since the two are nearly identical.
+ *
+ * @deprecated use {@link XDDFDateAxis} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFDateAxis extends XSSFChartAxis {
private CTDateAx ctDateAx;
@@ -108,7 +112,7 @@ public class XSSFDateAxis extends XSSFCh
public CTChartLines getMajorGridLines() {
return ctDateAx.getMajorGridlines();
}
-
+
@Override
public void crossAxis(ChartAxis axis) {
ctDateAx.getCrossAx().setVal(axis.getId());
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFLineChartData.java Sun Nov 26 14:03:01 2017
@@ -25,7 +25,8 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.ChartDataSource;
import org.apache.poi.ss.usermodel.charts.LineChartData;
import org.apache.poi.ss.usermodel.charts.LineChartSeries;
-import org.apache.poi.util.Beta;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
@@ -36,8 +37,11 @@ import org.openxmlformats.schemas.drawin
/**
* Holds data for a XSSF Line Chart
+ *
+ * @deprecated use {@link XDDFLineChartData} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFLineChartData implements LineChartData {
/**
@@ -46,7 +50,7 @@ public class XSSFLineChartData implement
private List<Series> series;
public XSSFLineChartData() {
- series = new ArrayList<>();
+ series = new ArrayList<Series>();
}
static class Series extends AbstractXSSFChartSeries implements LineChartSeries {
@@ -64,10 +68,12 @@ public class XSSFLineChartData implement
this.values = values;
}
+ @Override
public ChartDataSource<?> getCategoryAxisData() {
return categories;
}
+ @Override
public ChartDataSource<? extends Number> getValues() {
return values;
}
@@ -91,6 +97,7 @@ public class XSSFLineChartData implement
}
}
+ @Override
public LineChartSeries addSeries(ChartDataSource<?> categoryAxisData, ChartDataSource<? extends Number> values) {
if (!values.isNumeric()) {
throw new IllegalArgumentException("Value data source must be numeric.");
@@ -101,10 +108,12 @@ public class XSSFLineChartData implement
return newSeries;
}
+ @Override
public List<? extends LineChartSeries> getSeries() {
return series;
}
+ @Override
public void fillChart(Chart chart, ChartAxis... axis) {
if (!(chart instanceof XSSFChart)) {
throw new IllegalArgumentException("Chart must be instance of XSSFChart");
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFManualLayout.java Sun Nov 26 14:03:01 2017
@@ -17,25 +17,27 @@
package org.apache.poi.xssf.usermodel.charts;
-import org.apache.poi.util.Beta;
-import org.apache.poi.util.Internal;
-import org.apache.poi.ss.usermodel.charts.ManualLayout;
import org.apache.poi.ss.usermodel.charts.LayoutMode;
import org.apache.poi.ss.usermodel.charts.LayoutTarget;
+import org.apache.poi.ss.usermodel.charts.ManualLayout;
+import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFManualLayout;
import org.apache.poi.xssf.usermodel.XSSFChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutTarget;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayout;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTManualLayout;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayoutMode;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLayoutTarget;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTManualLayout;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutMode;
+import org.openxmlformats.schemas.drawingml.x2006.chart.STLayoutTarget;
/**
* Represents a SpreadsheetML manual layout.
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFManualLayout instead}
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public final class XSSFManualLayout implements ManualLayout {
/**
@@ -75,126 +77,144 @@ public final class XSSFManualLayout impl
return layout;
}
- public void setWidthRatio(double ratio) {
+ @Override
+ public void setWidthRatio(double ratio) {
if (!layout.isSetW()) {
layout.addNewW();
}
layout.getW().setVal(ratio);
}
- public double getWidthRatio() {
+ @Override
+ public double getWidthRatio() {
if (!layout.isSetW()) {
return 0.0;
}
return layout.getW().getVal();
}
- public void setHeightRatio(double ratio) {
+ @Override
+ public void setHeightRatio(double ratio) {
if (!layout.isSetH()) {
layout.addNewH();
}
layout.getH().setVal(ratio);
}
- public double getHeightRatio() {
+ @Override
+ public double getHeightRatio() {
if (!layout.isSetH()) {
return 0.0;
}
return layout.getH().getVal();
}
- public LayoutTarget getTarget() {
+ @Override
+ public LayoutTarget getTarget() {
if (!layout.isSetLayoutTarget()) {
return defaultLayoutTarget;
}
return toLayoutTarget(layout.getLayoutTarget());
}
- public void setTarget(LayoutTarget target) {
+ @Override
+ public void setTarget(LayoutTarget target) {
if (!layout.isSetLayoutTarget()) {
layout.addNewLayoutTarget();
}
layout.getLayoutTarget().setVal(fromLayoutTarget(target));
}
- public LayoutMode getXMode() {
+ @Override
+ public LayoutMode getXMode() {
if (!layout.isSetXMode()) {
return defaultLayoutMode;
}
return toLayoutMode(layout.getXMode());
}
- public void setXMode(LayoutMode mode) {
+ @Override
+ public void setXMode(LayoutMode mode) {
if (!layout.isSetXMode()) {
layout.addNewXMode();
}
layout.getXMode().setVal(fromLayoutMode(mode));
}
- public LayoutMode getYMode() {
+ @Override
+ public LayoutMode getYMode() {
if (!layout.isSetYMode()) {
return defaultLayoutMode;
}
return toLayoutMode(layout.getYMode());
}
- public void setYMode(LayoutMode mode) {
+ @Override
+ public void setYMode(LayoutMode mode) {
if (!layout.isSetYMode()) {
layout.addNewYMode();
}
layout.getYMode().setVal(fromLayoutMode(mode));
}
- public double getX() {
+ @Override
+ public double getX() {
if (!layout.isSetX()) {
return 0.0;
}
return layout.getX().getVal();
}
- public void setX(double x) {
+ @Override
+ public void setX(double x) {
if (!layout.isSetX()) {
layout.addNewX();
}
layout.getX().setVal(x);
}
- public double getY() {
+ @Override
+ public double getY() {
if (!layout.isSetY()) {
return 0.0;
}
return layout.getY().getVal();
}
- public void setY(double y) {
+ @Override
+ public void setY(double y) {
if (!layout.isSetY()) {
layout.addNewY();
}
layout.getY().setVal(y);
}
- public LayoutMode getWidthMode() {
+ @Override
+ public LayoutMode getWidthMode() {
if (!layout.isSetWMode()) {
return defaultLayoutMode;
}
return toLayoutMode(layout.getWMode());
}
- public void setWidthMode(LayoutMode mode) {
+ @Override
+ public void setWidthMode(LayoutMode mode) {
if (!layout.isSetWMode()) {
layout.addNewWMode();
}
layout.getWMode().setVal(fromLayoutMode(mode));
}
- public LayoutMode getHeightMode() {
+ @Override
+ public LayoutMode getHeightMode() {
if (!layout.isSetHMode()) {
return defaultLayoutMode;
}
return toLayoutMode(layout.getHMode());
}
- public void setHeightMode(LayoutMode mode) {
+ @Override
+ public void setHeightMode(LayoutMode mode) {
if (!layout.isSetHMode()) {
layout.addNewHMode();
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFScatterChartData.java Sun Nov 26 14:03:01 2017
@@ -25,7 +25,8 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.ChartDataSource;
import org.apache.poi.ss.usermodel.charts.ScatterChartData;
import org.apache.poi.ss.usermodel.charts.ScatterChartSeries;
-import org.apache.poi.util.Beta;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFScatterChartData;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
@@ -38,8 +39,11 @@ import org.openxmlformats.schemas.drawin
/**
* Represents DrawingML scatter charts.
+ *
+ * @deprecated use {@link XDDFScatterChartData} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFScatterChartData implements ScatterChartData {
/**
@@ -48,7 +52,7 @@ public class XSSFScatterChartData implem
private List<Series> series;
public XSSFScatterChartData() {
- series = new ArrayList<>();
+ series = new ArrayList<Series>();
}
/**
@@ -74,6 +78,7 @@ public class XSSFScatterChartData implem
* Returns data source used for X axis values.
* @return data source used for X axis values
*/
+ @Override
public ChartDataSource<?> getXValues() {
return xs;
}
@@ -82,6 +87,7 @@ public class XSSFScatterChartData implem
* Returns data source used for Y axis values.
* @return data source used for Y axis values
*/
+ @Override
public ChartDataSource<? extends Number> getYValues() {
return ys;
}
@@ -103,6 +109,7 @@ public class XSSFScatterChartData implem
}
}
+ @Override
public ScatterChartSeries addSerie(ChartDataSource<?> xs,
ChartDataSource<? extends Number> ys) {
if (!ys.isNumeric()) {
@@ -114,6 +121,7 @@ public class XSSFScatterChartData implem
return newSerie;
}
+ @Override
public void fillChart(Chart chart, ChartAxis... axis) {
if (!(chart instanceof XSSFChart)) {
throw new IllegalArgumentException("Chart must be instance of XSSFChart");
@@ -133,6 +141,7 @@ public class XSSFScatterChartData implem
}
}
+ @Override
public List<? extends Series> getSeries() {
return series;
}
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/charts/XSSFValueAxis.java Sun Nov 26 14:03:01 2017
@@ -24,8 +24,9 @@ import org.apache.poi.ss.usermodel.chart
import org.apache.poi.ss.usermodel.charts.AxisTickMark;
import org.apache.poi.ss.usermodel.charts.ChartAxis;
import org.apache.poi.ss.usermodel.charts.ValueAxis;
-import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
+import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
@@ -42,9 +43,10 @@ import org.openxmlformats.schemas.drawin
/**
* Value axis type.
*
- * @author Roman Kashitsyn
+ * @deprecated use {@link XDDFValueAxis} instead
*/
-@Beta
+@Deprecated
+@Removal(version="4.2")
public class XSSFValueAxis extends XSSFChartAxis implements ValueAxis {
private CTValAx ctValAx;
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFChart.java Sun Nov 26 14:03:01 2017
@@ -22,39 +22,23 @@ import static org.apache.poi.POIXMLTypeL
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.Arrays;
import javax.xml.namespace.QName;
-import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.POIXMLException;
-import org.apache.poi.openxml4j.opc.OPCPackage;
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.IOUtils;
-import org.apache.poi.util.Internal;
+import org.apache.poi.xddf.usermodel.chart.XDDFChart;
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;
/**
* Represents a Chart in a .docx file
*/
@Beta
-public class XWPFChart extends POIXMLDocumentPart {
-
- /**
- * Root element of the Chart part
- */
- private final CTChartSpace chartSpace;
-
- /**
- * The Chart within that
- */
- private final CTChart chart;
+public class XWPFChart extends XDDFChart {
// lazy initialization
private Long checksum;
@@ -64,39 +48,11 @@ public class XWPFChart extends POIXMLDoc
*
* @param part the package part holding the chart data,
* the content type must be <code>application/vnd.openxmlformats-officedocument.drawingml.chart+xml</code>
- *
+ *
* @since POI 4.0.0
*/
protected XWPFChart(PackagePart part) throws IOException, XmlException {
super(part);
-
- chartSpace = ChartSpaceDocument.Factory.parse(part.getInputStream(), DEFAULT_XML_OPTIONS).getChartSpace();
- chart = chartSpace.getChart();
- }
-
- @Override
- protected void onDocumentRead() throws IOException {
- super.onDocumentRead();
- }
-
- /**
- * 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
@@ -108,7 +64,7 @@ public class XWPFChart extends POIXMLDoc
chartSpace.save(out, xmlOptions);
}
}
-
+
public Long getChecksum() {
if (this.checksum == null) {
InputStream is = null;
@@ -120,7 +76,9 @@ public class XWPFChart extends POIXMLDoc
throw new POIXMLException(e);
} finally {
try {
- if (is != null) is.close();
+ if (is != null) {
+ is.close();
+ }
} catch (IOException e) {
throw new POIXMLException(e);
}
@@ -157,7 +115,7 @@ public class XWPFChart extends POIXMLDoc
}
return false;
}
-
+
@Override
public int hashCode() {
return getChecksum().hashCode();
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java Sun Nov 26 14:03:01 2017
@@ -63,7 +63,27 @@ import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTComment;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CommentsDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.EndnotesDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.FootnotesDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.NumberingDocument;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
/**
* <p>High(ish) level class for working with .docx files.</p>
@@ -79,7 +99,7 @@ import org.openxmlformats.schemas.wordpr
*/
public class XWPFDocument extends POIXMLDocument implements Document, IBody {
private static final POILogger LOG = POILogFactory.getLogger(XWPFDocument.class);
-
+
protected List<XWPFFooter> footers = new ArrayList<>();
protected List<XWPFHeader> headers = new ArrayList<>();
protected List<XWPFComment> comments = new ArrayList<>();
@@ -186,8 +206,9 @@ public class XWPFDocument extends POIXML
}
docCursor.dispose();
// Sort out headers and footers
- if (doc.getDocument().getBody().getSectPr() != null)
+ if (doc.getDocument().getBody().getSectPr() != null) {
headerFooterPolicy = new XWPFHeaderFooterPolicy(this);
+ }
// Create for each XML-part in the Package a PartClass
for (RelationPart rp : getRelationParts()) {
@@ -224,7 +245,7 @@ public class XWPFDocument extends POIXML
} else if (relation.equals(XWPFRelation.CHART.getRelation())) {
//now we can use all methods to modify charts in XWPFDocument
XWPFChart chartData = (XWPFChart) p;
- chartData.onDocumentRead();
+// chartData.onDocumentRead(); // ??? there is nothing to be done there!!!
charts.add(chartData);
} else if (relation.equals(XWPFRelation.GLOSSARY_DOCUMENT.getRelation())) {
// We don't currently process the glossary itself
@@ -380,20 +401,25 @@ public class XWPFDocument extends POIXML
public XWPFHyperlink getHyperlinkByID(String id) {
for (XWPFHyperlink link : hyperlinks) {
- if (link.getId().equals(id))
+ if (link.getId().equals(id)) {
return link;
+ }
}
return null;
}
public XWPFFootnote getFootnoteByID(int id) {
- if (footnotes == null) return null;
+ if (footnotes == null) {
+ return null;
+ }
return footnotes.getFootnoteById(id);
}
public XWPFFootnote getEndnoteByID(int id) {
- if (endnotes == null) return null;
+ if (endnotes == null) {
+ return null;
+ }
return endnotes.get(id);
}
@@ -410,8 +436,9 @@ public class XWPFDocument extends POIXML
public XWPFComment getCommentByID(String id) {
for (XWPFComment comment : comments) {
- if (comment.getId().equals(id))
+ if (comment.getId().equals(id)) {
return comment;
+ }
}
return null;
@@ -450,7 +477,7 @@ public class XWPFDocument extends POIXML
}
return headerFooterPolicy;
}
-
+
/**
* Create a header of the given type
*
@@ -471,8 +498,8 @@ public class XWPFDocument extends POIXML
}
return hfPolicy.createHeader(STHdrFtr.Enum.forInt(type.toInt()));
}
-
-
+
+
/**
* Create a footer of the given type
*
@@ -619,7 +646,7 @@ public class XWPFDocument extends POIXML
String uri = CTP.type.getName().getNamespaceURI();
/*
* TODO DO not use a coded constant, find the constant in the OOXML
- * classes instead, as the child of type CT_Paragraph is defined in the
+ * classes instead, as the child of type CT_Paragraph is defined in the
* OOXML schema as 'p'
*/
String localPart = "p";
@@ -667,8 +694,9 @@ public class XWPFDocument extends POIXML
cursor.toCursor(newParaPos);
while (cursor.toPrevSibling()) {
o = cursor.getObject();
- if (o instanceof CTP || o instanceof CTTbl)
+ if (o instanceof CTP || o instanceof CTTbl) {
i++;
+ }
}
bodyElements.add(i, newP);
cursor.toCursor(newParaPos);
@@ -706,8 +734,9 @@ public class XWPFDocument extends POIXML
cursor.toCursor(tableCursor);
while (cursor.toPrevSibling()) {
o = cursor.getObject();
- if (o instanceof CTP || o instanceof CTTbl)
+ if (o instanceof CTP || o instanceof CTTbl) {
i++;
+ }
}
bodyElements.add(i, newT);
cursor.toCursor(tableCursor);
@@ -984,7 +1013,7 @@ public class XWPFDocument extends POIXML
tables.set(pos, table);
ctDocument.getBody().setTblArray(pos, table.getCTTbl());
}
-
+
/**
* Verifies that the documentProtection tag in settings.xml file <br>
* specifies that the protection is enforced (w:enforcement="1") <br>
@@ -1288,7 +1317,7 @@ public class XWPFDocument extends POIXML
public void setZoomPercent(long zoomPercent) {
settings.setZoomPercent(zoomPercent);
}
-
+
/**
* inserts an existing XWPFTable to the arrays bodyElements and tables
*
@@ -1378,7 +1407,9 @@ public class XWPFDocument extends POIXML
throw new POIXMLException(e);
} finally {
try {
- if (out != null) out.close();
+ if (out != null) {
+ out.close();
+ }
} catch (IOException e) {
// ignore
}
Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java?rev=1816383&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java Sun Nov 26 14:03:01 2017
@@ -0,0 +1,134 @@
+/* ====================================================================
+ 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.xddf.usermodel.chart;
+
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.SheetBuilder;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests for {@link XDDFDataSourcesFactory}.
+ */
+public class TestXDDFDataSourcesFactory extends TestCase {
+
+ private static final Object[][] numericCells = {
+ {0.0, 1.0, 2.0, 3.0, 4.0},
+ {0.0, "=B1*2", "=C1*2", "=D1*2", "=E1*2"}
+ };
+
+ private static final Object[][] stringCells = {
+ { 1, 2, 3, 4, 5},
+ {"A", "B", "C", "D", "E"}
+ };
+
+ private static final Object[][] mixedCells = {
+ {1.0, "2.0", 3.0, "4.0", 5.0, "6.0"}
+ };
+
+ public void testNumericArrayDataSource() {
+ Double[] doubles = new Double[]{1.0, 2.0, 3.0, 4.0, 5.0};
+ XDDFDataSource<Double> doubleDataSource = XDDFDataSourcesFactory.fromArray(doubles, null);
+ assertTrue(doubleDataSource.isNumeric());
+ assertFalse(doubleDataSource.isReference());
+ assertDataSourceIsEqualToArray(doubleDataSource, doubles);
+ }
+
+ public void testStringArrayDataSource() {
+ String[] strings = new String[]{"one", "two", "three", "four", "five"};
+ XDDFDataSource<String> stringDataSource = XDDFDataSourcesFactory.fromArray(strings, null);
+ assertFalse(stringDataSource.isNumeric());
+ assertFalse(stringDataSource.isReference());
+ assertDataSourceIsEqualToArray(stringDataSource, strings);
+ }
+
+ public void testNumericCellDataSource() {
+ XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, numericCells).build();
+ CellRangeAddress numCellRange = CellRangeAddress.valueOf("A2:E2");
+ XDDFDataSource<Double> numDataSource = XDDFDataSourcesFactory.fromNumericCellRange(sheet, numCellRange);
+ assertTrue(numDataSource.isReference());
+ assertTrue(numDataSource.isNumeric());
+ assertEquals(numericCells[0].length, numDataSource.getPointCount());
+ for (int i = 0; i < numericCells[0].length; ++i) {
+ assertEquals(((Double) numericCells[0][i]) * 2,
+ numDataSource.getPointAt(i), 0.00001);
+ }
+ }
+
+ public void testStringCellDataSource() {
+ XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, stringCells).build();
+ CellRangeAddress numCellRange = CellRangeAddress.valueOf("A2:E2");
+ XDDFDataSource<String> numDataSource = XDDFDataSourcesFactory.fromStringCellRange(sheet, numCellRange);
+ assertTrue(numDataSource.isReference());
+ assertFalse(numDataSource.isNumeric());
+ assertEquals(numericCells[0].length, numDataSource.getPointCount());
+ for (int i = 0; i < stringCells[1].length; ++i) {
+ assertEquals(stringCells[1][i], numDataSource.getPointAt(i));
+ }
+ }
+
+ public void testMixedCellDataSource() {
+ XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, mixedCells).build();
+ CellRangeAddress mixedCellRange = CellRangeAddress.valueOf("A1:F1");
+ XDDFDataSource<String> strDataSource = XDDFDataSourcesFactory.fromStringCellRange(sheet, mixedCellRange);
+ XDDFDataSource<Double> numDataSource = XDDFDataSourcesFactory.fromNumericCellRange(sheet, mixedCellRange);
+ for (int i = 0; i < mixedCells[0].length; ++i) {
+ if (i % 2 == 0) {
+ assertNull(strDataSource.getPointAt(i));
+ assertEquals(((Double) mixedCells[0][i]),
+ numDataSource.getPointAt(i), 0.00001);
+ } else {
+ assertNull(numDataSource.getPointAt(i));
+ assertEquals(mixedCells[0][i], strDataSource.getPointAt(i));
+ }
+ }
+ }
+
+ public void testIOBExceptionOnInvalidIndex() {
+ XSSFWorkbook wb = new XSSFWorkbook();
+ XSSFSheet sheet = (XSSFSheet) new SheetBuilder(wb, numericCells).build();
+ CellRangeAddress rangeAddress = CellRangeAddress.valueOf("A2:E2");
+ XDDFDataSource<Double> numDataSource = XDDFDataSourcesFactory.fromNumericCellRange(sheet, rangeAddress);
+ IndexOutOfBoundsException exception = null;
+ try {
+ numDataSource.getPointAt(-1);
+ } catch (IndexOutOfBoundsException e) {
+ exception = e;
+ }
+ assertNotNull(exception);
+
+ exception = null;
+ try {
+ numDataSource.getPointAt(numDataSource.getPointCount());
+ } catch (IndexOutOfBoundsException e) {
+ exception = e;
+ }
+ assertNotNull(exception);
+ }
+
+ private <T> void assertDataSourceIsEqualToArray(XDDFDataSource<T> ds, T[] array) {
+ assertEquals(ds.getPointCount(), array.length);
+ for (int i = 0; i < array.length; ++i) {
+ assertEquals(ds.getPointAt(i), array[i]);
+ }
+ }
+}
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java Sun Nov 26 14:03:01 2017
@@ -18,44 +18,151 @@
*/
package org.apache.poi.xslf.usermodel;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import java.io.IOException;
-import java.io.OutputStream;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.List;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.xddf.usermodel.chart.AxisCrossBetween;
+import org.apache.poi.xddf.usermodel.chart.AxisCrosses;
+import org.apache.poi.xddf.usermodel.chart.AxisOrientation;
+import org.apache.poi.xddf.usermodel.chart.AxisPosition;
+import org.apache.poi.xddf.usermodel.chart.AxisTickMark;
+import org.apache.poi.xddf.usermodel.chart.BarDirection;
+import org.apache.poi.xddf.usermodel.chart.BarGrouping;
+import org.apache.poi.xddf.usermodel.chart.Grouping;
+import org.apache.poi.xddf.usermodel.chart.LayoutMode;
+import org.apache.poi.xddf.usermodel.chart.LayoutTarget;
+import org.apache.poi.xddf.usermodel.chart.LegendPosition;
+import org.apache.poi.xddf.usermodel.chart.RadarStyle;
+import org.apache.poi.xddf.usermodel.chart.ScatterStyle;
+import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
+import org.apache.poi.xddf.usermodel.chart.XDDFDataSource;
+import org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
+import org.apache.poi.xddf.usermodel.chart.XDDFLineChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFManualLayout;
+import org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
+import org.apache.poi.xddf.usermodel.chart.XDDFPieChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFRadarChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFScatterChartData;
+import org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
import org.apache.poi.xslf.XSLFTestDataSamples;
-import org.apache.poi.xssf.usermodel.XSSFRow;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieChart;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieSer;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
+/**
+ * a modified version from POI-examples
+ */
public class TestXSLFChart {
-
- /**
- * a modified version from POI-examples
- */
@Test
- public void testFillChartTemplate() throws IOException {
+ public void testFillPieChartTemplate() throws IOException {
+ XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("pie-chart.pptx");
+ XSLFChart chart = findChart(pptx.getSlides().get(0));
+ List<XDDFChartData> data = findChartData(chart);
- String chartTitle = "Apache POI"; // first line is chart title
+ XDDFPieChartData pie = (XDDFPieChartData) data.get(0);
+ XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) pie.getSeries().get(0);
+ firstSeries.setExplosion(25);
+ assertEquals(25, firstSeries.getExplosion());
- XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("pie-chart.pptx");
+ fillChartData(chart, pie);
+ pptx.close();
+ }
+
+ @Test
+ public void testFillBarChartTemplate() throws IOException {
+ XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("bar-chart.pptx");
XSLFSlide slide = pptx.getSlides().get(0);
+ // duplicate slide and chart before applying "destructive" tests to it
+ XSLFChart chart2 = findChart(pptx.createSlide().importContent(slide));
+ XSLFChart chart = findChart(slide);
+
+ List<XDDFChartData> data = findChartData(chart);
+ XDDFBarChartData bar = (XDDFBarChartData) data.get(0);
+ assertEquals(BarDirection.BAR, bar.getBarDirection());
+ assertEquals(BarGrouping.CLUSTERED, bar.getBarGrouping());
+ assertEquals(100, bar.getGapWidth());
+ fillChartData(chart, bar);
+
+ XDDFBarChartData column = (XDDFBarChartData) findChartData(chart2).get(0);
+ column.setBarDirection(BarDirection.COL);
+ assertEquals(BarDirection.COL, column.getBarDirection());
+ column.getCategoryAxis().setOrientation(AxisOrientation.MIN_MAX);
+ column.getValueAxes().get(0).setPosition(AxisPosition.BOTTOM);
+ fillChartData(chart2, column);
+
+ pptx.close();
+ }
+
+ @Test
+ public void testFillLineChartTemplate() throws IOException {
+ XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("line-chart.pptx");
+ XSLFChart chart = findChart(pptx.getSlides().get(0));
+ List<XDDFChartData> data = findChartData(chart);
+
+ XDDFLineChartData line = (XDDFLineChartData) data.get(0);
+ assertEquals(Grouping.STANDARD, line.getGrouping());
+ line.setGrouping(Grouping.PERCENT_STACKED);
+ assertEquals(Grouping.PERCENT_STACKED, line.getGrouping());
+
+ fillChartData(chart, line);
+ pptx.close();
+ }
+ @Test
+ public void testFillRadarChartTemplate() throws IOException {
+ XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("radar-chart.pptx");
+ XSLFChart chart = findChart(pptx.getSlides().get(0));
+ List<XDDFChartData> data = findChartData(chart);
+
+ XDDFRadarChartData radar = (XDDFRadarChartData) data.get(0);
+ assertEquals(RadarStyle.MARKER, radar.getStyle());
+ radar.setStyle(RadarStyle.FILLED);
+ assertEquals(RadarStyle.FILLED, radar.getStyle());
+
+ fillChartData(chart, radar);
+ pptx.close();
+ }
+
+ @Test
+ public void testFillScatterChartTemplate() throws IOException {
+ XMLSlideShow pptx = XSLFTestDataSamples.openSampleDocument("scatter-chart.pptx");
+ XSLFChart chart = findChart(pptx.getSlides().get(0));
+ List<XDDFChartData> data = findChartData(chart);
+
+ XDDFScatterChartData scatter = (XDDFScatterChartData) data.get(0);
+ assertEquals(ScatterStyle.LINE_MARKER, scatter.getStyle());
+ scatter.setStyle(ScatterStyle.SMOOTH);
+ assertEquals(ScatterStyle.SMOOTH, scatter.getStyle());
+
+ fillChartData(chart, scatter);
+ pptx.close();
+ }
+
+ private void fillChartData(XSLFChart chart, XDDFChartData data) {
+ final int numOfPoints = 3;
+ final String[] categories = {"First", "Second", "Third"};
+ final Integer[] values = {1, 3, 4};
+
+ final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0));
+ final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 1, 1));
+
+ final XDDFChartData.Series series = data.getSeries().get(0);
+ final XDDFDataSource<?> categoryData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange);
+ final XDDFNumericalDataSource<Integer> valuesData = XDDFDataSourcesFactory.fromArray(values, valuesDataRange);
+ series.replaceData(categoryData, valuesData);
+ final String title = "Apache POI";
+ series.setTitle(title, chart.setSheetTitle(title));
+ chart.plot(data);
+ }
+
+ private XSLFChart findChart(XSLFSlide slide) {
// find chart in the slide
XSLFChart chart = null;
for(POIXMLDocumentPart part : slide.getRelations()){
@@ -65,76 +172,161 @@ public class TestXSLFChart {
}
}
- if(chart == null) throw new IllegalStateException("chart not found in the template");
-
- // embedded Excel workbook that holds the chart data
- POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet();
-
- CTChart ctChart = chart.getCTChart();
- CTPlotArea plotArea = ctChart.getPlotArea();
-
- CTPieChart pieChart = plotArea.getPieChartArray(0);
- //Pie Chart Series
- CTPieSer ser = pieChart.getSerArray(0);
-
- // Series Text
- CTSerTx tx = ser.getTx();
- tx.getStrRef().getStrCache().getPtArray(0).setV(chartTitle);
- sheet.createRow(0).createCell(1).setCellValue(chartTitle);
- String titleRef = new CellReference(sheet.getSheetName(), 0, 1, true, true).formatAsString();
- tx.getStrRef().setF(titleRef);
-
-
- // Category Axis Data
- CTAxDataSource cat = ser.getCat();
- CTStrData strData = cat.getStrRef().getStrCache();
-
- // Values
- CTNumDataSource valSrc = ser.getVal();
- CTNumData numData = valSrc.getNumRef().getNumCache();
-
- strData.setPtArray(null); // unset old axis text
- numData.setPtArray(null); // unset old values
-
- Map<String, Double> pieModel = new LinkedHashMap<>();
- pieModel.put("First", 1.0);
- pieModel.put("Second", 3.0);
- pieModel.put("Third", 4.0);
-
- // set model
- int idx = 0;
- int rownum = 1;
- for(String key : pieModel.keySet()){
- double val = pieModel.get(key);
-
- CTNumVal numVal = numData.addNewPt();
- numVal.setIdx(idx);
- numVal.setV("" + val);
-
- CTStrVal sVal = strData.addNewPt();
- sVal.setIdx(idx);
- sVal.setV(key);
-
- idx++;
- XSSFRow row = sheet.createRow(rownum++);
- row.createCell(0).setCellValue(key);
- row.createCell(1).setCellValue(val);
+ if(chart == null) {
+ throw new IllegalStateException("chart not found in the template");
}
- numData.getPtCount().setVal(idx);
- strData.getPtCount().setVal(idx);
- String numDataRange = new CellRangeAddress(1, rownum-1, 1, 1).formatAsString(sheet.getSheetName(), true);
- valSrc.getNumRef().setF(numDataRange);
- String axisDataRange = new CellRangeAddress(1, rownum-1, 0, 0).formatAsString(sheet.getSheetName(), true);
- cat.getStrRef().setF(axisDataRange);
-
- // updated the embedded workbook with the data
- OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
- wb.write(xlsOut);
- xlsOut.close();
- wb.close();
+ checkLegendOperations(chart);
+ return chart;
+ }
+
+ private List<XDDFChartData> findChartData(XSLFChart chart) {
+ List<XDDFChartData> data = chart.getChartSeries();
+ assertNotNull(data);
+ assertEquals(1, data.size());
+
+ XDDFChartData firstSeries = data.get(0);
+ assertNotNull(firstSeries);
+ if (firstSeries instanceof XDDFScatterChartData) {
+ assertEquals(null, firstSeries.getCategoryAxis());
+ assertEquals(2, firstSeries.getValueAxes().size());
+ checkAxisOperations(firstSeries.getValueAxes().get(0));
+ checkAxisOperations(firstSeries.getValueAxes().get(1));
+ } else if (!(firstSeries instanceof XDDFPieChartData)) {
+ assertNotNull(firstSeries.getCategoryAxis());
+ assertEquals(1, firstSeries.getValueAxes().size());
+ checkAxisOperations(firstSeries.getValueAxes().get(0));
+ }
+
+ return data;
}
-}
\ No newline at end of file
+ private void checkLegendOperations(XSLFChart chart) {
+ XDDFChartLegend legend = chart.getOrAddLegend();
+ assertFalse(legend.isOverlay());
+ legend.setOverlay(true);
+ assertTrue(legend.isOverlay());
+ legend.setPosition(LegendPosition.TOP_RIGHT);
+ assertEquals(LegendPosition.TOP_RIGHT, legend.getPosition());
+
+ XDDFManualLayout layout = legend.getOrAddManualLayout();
+ assertNotNull(layout.getTarget());
+ assertNotNull(layout.getXMode());
+ assertNotNull(layout.getYMode());
+ assertNotNull(layout.getHeightMode());
+ assertNotNull(layout.getWidthMode());
+ /*
+ * According to interface, 0.0 should be returned for
+ * uninitialized double properties.
+ */
+ assertTrue(layout.getX() == 0.0);
+ assertTrue(layout.getY() == 0.0);
+ assertTrue(layout.getWidthRatio() == 0.0);
+ assertTrue(layout.getHeightRatio() == 0.0);
+
+ final double newRatio = 1.1;
+ final double newCoordinate = 0.3;
+ final LayoutMode nonDefaultMode = LayoutMode.FACTOR;
+ final LayoutTarget nonDefaultTarget = LayoutTarget.OUTER;
+
+ layout.setWidthRatio(newRatio);
+ assertTrue(layout.getWidthRatio() == newRatio);
+
+ layout.setHeightRatio(newRatio);
+ assertTrue(layout.getHeightRatio() == newRatio);
+
+ layout.setX(newCoordinate);
+ assertTrue(layout.getX() == newCoordinate);
+
+ layout.setY(newCoordinate);
+ assertTrue(layout.getY() == newCoordinate);
+
+ layout.setXMode(nonDefaultMode);
+ assertTrue(layout.getXMode() == nonDefaultMode);
+
+ layout.setYMode(nonDefaultMode);
+ assertTrue(layout.getYMode() == nonDefaultMode);
+
+ layout.setWidthMode(nonDefaultMode);
+ assertTrue(layout.getWidthMode() == nonDefaultMode);
+
+ layout.setHeightMode(nonDefaultMode);
+ assertTrue(layout.getHeightMode() == nonDefaultMode);
+
+ layout.setTarget(nonDefaultTarget);
+ assertTrue(layout.getTarget() == nonDefaultTarget);
+ }
+
+ private void checkAxisOperations(XDDFValueAxis axis) {
+ axis.setCrossBetween(AxisCrossBetween.MIDPOINT_CATEGORY);
+ assertEquals(AxisCrossBetween.MIDPOINT_CATEGORY, axis.getCrossBetween());
+
+ axis.setCrosses(AxisCrosses.AUTO_ZERO);
+ assertEquals(AxisCrosses.AUTO_ZERO, axis.getCrosses());
+
+ final String numberFormat = "General";
+ axis.setNumberFormat(numberFormat);
+ assertEquals(numberFormat, axis.getNumberFormat());
+
+ axis.setPosition(AxisPosition.BOTTOM);
+ assertEquals(AxisPosition.BOTTOM, axis.getPosition());
+
+ axis.setMajorTickMark(AxisTickMark.NONE);
+ assertEquals(AxisTickMark.NONE, axis.getMajorTickMark());
+
+ axis.setMajorTickMark(AxisTickMark.IN);
+ assertEquals(AxisTickMark.IN, axis.getMajorTickMark());
+
+ axis.setMajorTickMark(AxisTickMark.OUT);
+ assertEquals(AxisTickMark.OUT, axis.getMajorTickMark());
+
+ axis.setMajorTickMark(AxisTickMark.CROSS);
+ assertEquals(AxisTickMark.CROSS, axis.getMajorTickMark());
+
+ axis.setMinorTickMark(AxisTickMark.NONE);
+ assertEquals(AxisTickMark.NONE, axis.getMinorTickMark());
+
+ axis.setMinorTickMark(AxisTickMark.IN);
+ assertEquals(AxisTickMark.IN, axis.getMinorTickMark());
+
+ axis.setMinorTickMark(AxisTickMark.OUT);
+ assertEquals(AxisTickMark.OUT, axis.getMinorTickMark());
+
+ axis.setMinorTickMark(AxisTickMark.CROSS);
+ assertEquals(AxisTickMark.CROSS, axis.getMinorTickMark());
+
+ axis.setVisible(true);
+ assertTrue(axis.isVisible());
+
+ axis.setVisible(false);
+ assertFalse(axis.isVisible());
+
+ final double EPSILON = 1E-7;
+ axis.setLogBase(Math.E);
+ assertTrue(Math.abs(axis.getLogBase() - Math.E) < EPSILON);
+
+ final double newValue = 10.0;
+
+ axis.setMinimum(newValue);
+ assertTrue(Math.abs(axis.getMinimum() - newValue) < EPSILON);
+
+ axis.setMaximum(newValue);
+ assertTrue(Math.abs(axis.getMaximum() - newValue) < EPSILON);
+
+ IllegalArgumentException iae = null;
+ try {
+ axis.setLogBase(0.0);
+ } catch (IllegalArgumentException e) {
+ iae = e;
+ }
+ assertNotNull(iae);
+
+ iae = null;
+ try {
+ axis.setLogBase(30000.0);
+ } catch (IllegalArgumentException e) {
+ iae = e;
+ }
+ assertNotNull(iae);
+ }
+}
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java Sun Nov 26 14:03:01 2017
@@ -17,46 +17,46 @@
package org.apache.poi.xssf.usermodel;
-import junit.framework.TestCase;
-
import org.apache.poi.xssf.XSSFTestDataSamples;
+import junit.framework.TestCase;
+
public final class TestXSSFChart extends TestCase {
-
+
public void testGetAccessors() {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithThreeCharts.xlsx");
XSSFSheet s1 = wb.getSheetAt(0);
XSSFSheet s2 = wb.getSheetAt(1);
XSSFSheet s3 = wb.getSheetAt(2);
-
+
assertEquals(0, s1.getRelations().size());
assertEquals(1, s2.getRelations().size());
assertEquals(1, s3.getRelations().size());
-
+
assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
}
-
+
public void testGetCharts() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithThreeCharts.xlsx");
-
+
XSSFSheet s1 = wb.getSheetAt(0);
XSSFSheet s2 = wb.getSheetAt(1);
XSSFSheet s3 = wb.getSheetAt(2);
-
+
assertEquals(0, s1.createDrawingPatriarch().getCharts().size());
assertEquals(2, s2.createDrawingPatriarch().getCharts().size());
assertEquals(1, s3.createDrawingPatriarch().getCharts().size());
-
+
// Check the titles
XSSFChart chart = s2.createDrawingPatriarch().getCharts().get(0);
assertEquals(null, chart.getTitleText());
-
+
chart = s2.createDrawingPatriarch().getCharts().get(1);
assertEquals("Pie Chart Title Thingy", chart.getTitleText().getString());
-
+
chart = s3.createDrawingPatriarch().getCharts().get(0);
assertEquals("Sheet 3 Chart with Title", chart.getTitleText().getString());
-
+
assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
}
@@ -68,14 +68,15 @@ public final class TestXSSFChart extends
XSSFChart c1 = d1.createChart(a1);
assertEquals(1, d1.getCharts().size());
+
assertNotNull(c1.getGraphicFrame());
- assertNotNull(c1.getOrCreateLegend());
+ assertNotNull(c1.getOrAddLegend());
XSSFClientAnchor a2 = new XSSFClientAnchor(0, 0, 0, 0, 1, 11, 10, 60);
XSSFChart c2 = d1.createChart(a2);
assertNotNull(c2);
assertEquals(2, d1.getCharts().size());
-
+
assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb));
}
}
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java?rev=1816383&r1=1816382&r2=1816383&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java Sun Nov 26 14:03:01 2017
@@ -17,24 +17,32 @@
package org.apache.poi.xssf.usermodel.charts;
-import junit.framework.TestCase;
+import org.apache.poi.xddf.usermodel.chart.AxisCrosses;
+import org.apache.poi.xddf.usermodel.chart.AxisPosition;
+import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
+import org.apache.poi.xssf.usermodel.XSSFChart;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFDrawing;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.apache.poi.ss.usermodel.charts.*;
-import org.apache.poi.xssf.usermodel.*;
+import junit.framework.TestCase;
public final class TestXSSFCategoryAxis extends TestCase {
-
+
public void testAccessMethods() throws Exception {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFDrawing drawing = sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 1, 1, 10, 30);
XSSFChart chart = drawing.createChart(anchor);
- XSSFCategoryAxis axis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.BOTTOM);
+ XDDFCategoryAxis axis = chart.createCategoryAxis(AxisPosition.BOTTOM);
axis.setCrosses(AxisCrosses.AUTO_ZERO);
assertEquals(axis.getCrosses(), AxisCrosses.AUTO_ZERO);
- assertEquals(chart.getAxis().size(), 1);
+ assertEquals(chart.getAxes().size(), 1);
+
+ wb.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org