summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2016-10-26 22:32:46 +0000
committerAndreas Beeker <kiwiwings@apache.org>2016-10-26 22:32:46 +0000
commite4575a0dfe8fbc30891cb798b714326c650ff618 (patch)
tree4f13d638366500bfe76188267158f6ead0bd022b /src
parente447ef11449ad651a5a3529a78400ff9139202a4 (diff)
downloadpoi-e4575a0dfe8fbc30891cb798b714326c650ff618.tar.gz
poi-e4575a0dfe8fbc30891cb798b714326c650ff618.zip
Bug 60059 - Deprecate xslf.usermodel.Drawing* - was: Can't change text of DrawingParagraph
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1766746 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java173
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingParagraph.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTable.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableCell.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableRow.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextBody.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextPlaceholder.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java5
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java11
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java10
-rw-r--r--src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java13
11 files changed, 151 insertions, 91 deletions
diff --git a/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java b/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java
index ddcbfff2c9..5f757d0c59 100644
--- a/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java
+++ b/src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java
@@ -17,24 +17,25 @@
package org.apache.poi.xslf.extractor;
import java.io.IOException;
-import java.util.List;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
-import org.apache.poi.xslf.usermodel.DrawingParagraph;
-import org.apache.poi.xslf.usermodel.DrawingTextBody;
-import org.apache.poi.xslf.usermodel.DrawingTextPlaceholder;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFCommentAuthors;
import org.apache.poi.xslf.usermodel.XSLFComments;
-import org.apache.poi.xslf.usermodel.XSLFCommonSlideData;
import org.apache.poi.xslf.usermodel.XSLFNotes;
import org.apache.poi.xslf.usermodel.XSLFRelation;
+import org.apache.poi.xslf.usermodel.XSLFShape;
+import org.apache.poi.xslf.usermodel.XSLFShapeContainer;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFSlideShow;
+import org.apache.poi.xslf.usermodel.XSLFTable;
+import org.apache.poi.xslf.usermodel.XSLFTableCell;
+import org.apache.poi.xslf.usermodel.XSLFTableRow;
+import org.apache.poi.xslf.usermodel.XSLFTextShape;
import org.apache.xmlbeans.XmlException;
import org.openxmlformats.schemas.presentationml.x2006.main.CTComment;
import org.openxmlformats.schemas.presentationml.x2006.main.CTCommentAuthor;
@@ -115,84 +116,108 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
/**
* Gets the requested text from the file
+ *
* @param slideText Should we retrieve text from slides?
* @param notesText Should we retrieve text from notes?
* @param masterText Should we retrieve text from master slides?
+ *
+ * @return the extracted text
*/
public String getText(boolean slideText, boolean notesText, boolean masterText) {
- StringBuffer text = new StringBuffer();
-
- List<XSLFSlide> slides = slideshow.getSlides();
- XSLFCommentAuthors commentAuthors = slideshow.getCommentAuthors();
-
- for (XSLFSlide slide : slides) {
- try {
- XSLFNotes notes = slide.getNotes();
- XSLFComments comments = slide.getComments();
- XSLFSlideLayout layout = slide.getSlideLayout();
- XSLFSlideMaster master = layout.getSlideMaster();
-
- // TODO Do the slide's name
- // (Stored in docProps/app.xml)
-
- // Do the slide's text if requested
- if (slideText) {
- extractText(slide.getCommonSlideData(), false, text);
-
- // If requested, get text from the master and it's layout
- if(masterText) {
- if(layout != null) {
- extractText(layout.getCommonSlideData(), true, text);
- }
- if(master != null) {
- extractText(master.getCommonSlideData(), true, text);
- }
- }
+ StringBuilder text = new StringBuilder();
- // If the slide has comments, do those too
- if (comments != null) {
- for (CTComment comment : comments.getCTCommentsList().getCmArray()) {
- // Do the author if we can
- if (commentAuthors != null) {
- CTCommentAuthor author = commentAuthors.getAuthorById(comment.getAuthorId());
- if(author != null) {
- text.append(author.getName() + ": ");
- }
- }
-
- // Then the comment text, with a new line afterwards
- text.append(comment.getText());
- text.append("\n");
- }
- }
- }
-
- // Do the notes if requested
- if (notesText && notes != null) {
- extractText(notes.getCommonSlideData(), false, text);
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
+ for (XSLFSlide slide : slideshow.getSlides()) {
+ text.append(getText(slide, slideText, notesText, masterText));
}
return text.toString();
}
-
- private void extractText(XSLFCommonSlideData data, boolean skipPlaceholders, StringBuffer text) {
- for(DrawingTextBody textBody : data.getDrawingText()) {
- if(skipPlaceholders && textBody instanceof DrawingTextPlaceholder) {
- DrawingTextPlaceholder ph = (DrawingTextPlaceholder)textBody;
- if(! ph.isPlaceholderCustom()) {
- // Skip non-customised placeholder text
- continue;
- }
- }
-
- for (DrawingParagraph p : textBody.getParagraphs()) {
- text.append(p.getText());
- text.append("\n");
- }
- }
+
+ /**
+ * Gets the requested text from the slide
+ *
+ * @param slide the slide to retrieve the text from
+ * @param slideText Should we retrieve text from slides?
+ * @param notesText Should we retrieve text from notes?
+ * @param masterText Should we retrieve text from master slides?
+ *
+ * @return the extracted text
+ */
+ public static String getText(XSLFSlide slide, boolean slideText, boolean notesText, boolean masterText) {
+ StringBuilder text = new StringBuilder();
+
+ XSLFCommentAuthors commentAuthors = slide.getSlideShow().getCommentAuthors();
+
+ XSLFNotes notes = slide.getNotes();
+ XSLFComments comments = slide.getComments();
+ XSLFSlideLayout layout = slide.getSlideLayout();
+ XSLFSlideMaster master = layout.getSlideMaster();
+
+ // TODO Do the slide's name
+ // (Stored in docProps/app.xml)
+
+ // Do the slide's text if requested
+ if (slideText) {
+ extractText(slide, false, text);
+
+ // If requested, get text from the master and it's layout
+ if(masterText) {
+ if(layout != null) {
+ extractText(layout, true, text);
+ }
+ if(master != null) {
+ extractText(master, true, text);
+ }
+ }
+
+ // If the slide has comments, do those too
+ if (comments != null) {
+ for (CTComment comment : comments.getCTCommentsList().getCmArray()) {
+ // Do the author if we can
+ if (commentAuthors != null) {
+ CTCommentAuthor author = commentAuthors.getAuthorById(comment.getAuthorId());
+ if(author != null) {
+ text.append(author.getName() + ": ");
+ }
+ }
+
+ // Then the comment text, with a new line afterwards
+ text.append(comment.getText());
+ text.append("\n");
+ }
+ }
+ }
+
+ // Do the notes if requested
+ if (notesText && notes != null) {
+ extractText(notes, false, text);
+ }
+
+ return text.toString();
+ }
+
+ private static void extractText(XSLFShapeContainer data, boolean skipPlaceholders, StringBuilder text) {
+ for (XSLFShape s : data) {
+ if (s instanceof XSLFShapeContainer) {
+ extractText((XSLFShapeContainer)s, skipPlaceholders, text);
+ } else if (s instanceof XSLFTextShape) {
+ XSLFTextShape ts = (XSLFTextShape)s;
+ // Skip non-customised placeholder text
+ if (!(skipPlaceholders && ts.isPlaceholder())) {
+ text.append(ts.getText());
+ text.append("\n");
+ }
+ } else if (s instanceof XSLFTable) {
+ XSLFTable ts = (XSLFTable)s;
+ // Skip non-customised placeholder text
+ for (XSLFTableRow r : ts) {
+ for (XSLFTableCell c : r) {
+ text.append(c.getText());
+ text.append("\t");
+ }
+ text.append("\n");
+ }
+ }
+ }
}
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingParagraph.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingParagraph.java
index 2e755583bb..6a6ee38074 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingParagraph.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingParagraph.java
@@ -17,12 +17,17 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextLineBreak;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
+/*
+ * @deprecated POI 3.16 beta 1. Instead iterate over the shapes/notes of the slides
+ */
+@Removal(version="3.18")
public class DrawingParagraph {
private final CTTextParagraph p;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTable.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTable.java
index 037ae65d92..b59a5bb234 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTable.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTable.java
@@ -17,9 +17,14 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTable;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTableRow;
+/*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+@Removal(version="3.18")
public class DrawingTable {
private final CTTable table;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableCell.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableCell.java
index 492c2f5e1b..2924fbc746 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableCell.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableCell.java
@@ -17,8 +17,13 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTableCell;
+/*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+@Removal(version="3.18")
public class DrawingTableCell {
private final CTTableCell cell;
private final DrawingTextBody drawingTextBody;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableRow.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableRow.java
index 70aa159a93..08a693959d 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableRow.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTableRow.java
@@ -17,9 +17,14 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTableCell;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTableRow;
+/*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+@Removal(version="3.18")
public class DrawingTableRow {
private final CTTableRow row;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextBody.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextBody.java
index c3f7778b81..7f6aa4bab4 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextBody.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextBody.java
@@ -17,9 +17,14 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
+/*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+@Removal(version="3.18")
public class DrawingTextBody {
private final CTTextBody textBody;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextPlaceholder.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextPlaceholder.java
index ec95bd1d55..841cc2d320 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextPlaceholder.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/DrawingTextPlaceholder.java
@@ -17,6 +17,7 @@
package org.apache.poi.xslf.usermodel;
+import org.apache.poi.util.Removal;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder;
import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
@@ -26,6 +27,10 @@ import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
* @author nick
*
*/
+/*
+ * @deprecated POI 3.16 beta 1. use ??? instead
+ */
+@Removal(version="3.18")
public class DrawingTextPlaceholder extends DrawingTextBody {
private final CTPlaceholder placeholder;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java
index 15a62a833d..2fd3365431 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java
@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.poi.POIXMLException;
import org.apache.poi.util.Beta;
+import org.apache.poi.util.Removal;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
@@ -38,6 +39,10 @@ import org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFra
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
+/*
+ * @deprecated POI 3.16 beta 1. - iterate over the shapes of a slide instead
+ */
+@Removal(version="3.18")
@Beta
public class XSLFCommonSlideData {
private final CTCommonSlideData data;
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
index 70ee99ccd3..1edfff7ccb 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
@@ -47,6 +47,7 @@ import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.util.Beta;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.Removal;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.presentationml.x2006.main.CTCommonSlideData;
@@ -128,11 +129,19 @@ implements XSLFShapeContainer, Sheet<XSLFShape,XSLFTextParagraph> {
*/
public abstract XmlObject getXmlObject();
+ /*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+ @Removal(version="3.18")
@Internal
public XSLFCommonSlideData getCommonSlideData() {
return _commonSlideData;
}
+ /*
+ * @deprecated POI 3.16 beta 1. use {@link XSLFTable} instead
+ */
+ @Removal(version="3.18")
protected void setCommonSlideData(CTCommonSlideData data) {
if(data == null) {
_commonSlideData = null;
@@ -550,7 +559,6 @@ implements XSLFShapeContainer, Sheet<XSLFShape,XSLFTextParagraph> {
* @param packagePart package part containing the data to import
* @return ID of the created relationship
*/
- @SuppressWarnings("resource")
String importBlip(String blipId, PackagePart packagePart) {
PackageRelationship blipRel = packagePart.getRelationship(blipId);
PackagePart blipPart;
@@ -573,7 +581,6 @@ implements XSLFShapeContainer, Sheet<XSLFShape,XSLFTextParagraph> {
/**
* Import a package part into this sheet.
*/
- @SuppressWarnings("resource")
PackagePart importPart(PackageRelationship srcRel, PackagePart srcPafrt) {
PackagePart destPP = getPackagePart();
PackagePartName srcPPName = srcPafrt.getPartName();
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
index dcf8c1cb80..cd475fcced 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
@@ -51,6 +51,7 @@ import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.sl.usermodel.ShapeType;
import org.apache.poi.sl.usermodel.VerticalAlignment;
+import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xslf.usermodel.DrawingParagraph;
import org.apache.poi.xslf.usermodel.DrawingTextBody;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
@@ -252,14 +253,7 @@ public class TestXSLFBugs {
}
protected String getSlideText(XSLFSlide slide) {
- StringBuffer text = new StringBuffer();
- for(DrawingTextBody textBody : slide.getCommonSlideData().getDrawingText()) {
- for (DrawingParagraph p : textBody.getParagraphs()) {
- text.append(p.getText());
- text.append("\n");
- }
- }
- return text.toString();
+ return XSLFPowerPointExtractor.getText(slide, true, false, false);
}
@Test
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
index d3c7c97db7..f76e084f97 100644
--- a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
+++ b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
@@ -97,21 +97,21 @@ public class TestXSLFPowerPointExtractor {
// Just notes, no slides
text = extractor.getText(false, true);
- assertEquals("\n\n\n\n", text);
+ assertEquals("\n\n1\n\n\n2\n", text);
// Both
text = extractor.getText(true, true, false);
String bothText =
"Lorem ipsum dolor sit amet\n" +
"Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
- "\n\n\n" +
+ "\n\n\n1\n" +
"Lorem ipsum dolor sit amet\n" +
"Lorem\n" +
"ipsum\n" +
"dolor\n" +
"sit\n" +
"amet\n" +
- "\n\n\n";
+ "\n\n\n2\n";
assertEquals(bothText, text);
// With Slides and Master Text
@@ -134,22 +134,21 @@ public class TestXSLFPowerPointExtractor {
String snmText =
"Lorem ipsum dolor sit amet\n" +
"Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
- "\n" +
- "\n\n" +
+ "\n\n\n1\n" +
"Lorem ipsum dolor sit amet\n" +
"Lorem\n" +
"ipsum\n" +
"dolor\n" +
"sit\n" +
"amet\n" +
- "\n\n\n";
+ "\n\n\n2\n";
assertEquals(snmText, text);
// Via set defaults
extractor.setSlidesByDefault(false);
extractor.setNotesByDefault(true);
text = extractor.getText();
- assertEquals("\n\n\n\n", text);
+ assertEquals("\n\n1\n\n\n2\n", text);
extractor.close();
xmlA.close();