aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2018-05-16 21:57:49 +0000
committerAndreas Beeker <kiwiwings@apache.org>2018-05-16 21:57:49 +0000
commit4a3ea104fe275e0d0f8d094f7bd1f6da57562d64 (patch)
treeac85054e14d3e8295d16be4385aa3dafb98a0479 /src
parente371ce46cc2576a3a10f7e8ad0949bd178e95233 (diff)
downloadpoi-4a3ea104fe275e0d0f8d094f7bd1f6da57562d64.tar.gz
poi-4a3ea104fe275e0d0f8d094f7bd1f6da57562d64.zip
#62037 - SlideNames should not be null but have a default as if accessed by VBA
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1831745 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/poi/sl/usermodel/Slide.java7
-rw-r--r--src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java8
-rw-r--r--src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java8
-rw-r--r--src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShow.java22
4 files changed, 34 insertions, 11 deletions
diff --git a/src/java/org/apache/poi/sl/usermodel/Slide.java b/src/java/org/apache/poi/sl/usermodel/Slide.java
index 00492df5fc..91b80f107e 100644
--- a/src/java/org/apache/poi/sl/usermodel/Slide.java
+++ b/src/java/org/apache/poi/sl/usermodel/Slide.java
@@ -83,4 +83,11 @@ public interface Slide<
* @since POI 4.0.0
*/
MasterSheet getSlideLayout();
+
+ /**
+ * @return the slide name, defaults to "Slide[slideNumber]"
+ *
+ * @since POI 4.0.0
+ */
+ String getSlideName();
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
index 4df63e2655..51fc80a54b 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java
@@ -390,5 +390,11 @@ implements Slide<XSLFShape,XSLFTextParagraph> {
public boolean isHidden() {
CTSlide sld = getXmlObject();
return sld.isSetShow() && !sld.getShow();
- }
+ }
+
+ @Override
+ public String getSlideName() {
+ final CTCommonSlideData cSld = getXmlObject().getCSld();
+ return cSld.isSetName() ? cSld.getName() : "Slide"+getSlideNumber();
+ }
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
index 5bae46a8ad..673b72009a 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
@@ -27,6 +27,7 @@ import org.apache.poi.ddf.EscherDggRecord;
import org.apache.poi.ddf.EscherSpRecord;
import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hslf.model.HeadersFooters;
+import org.apache.poi.hslf.record.CString;
import org.apache.poi.hslf.record.ColorSchemeAtom;
import org.apache.poi.hslf.record.Comment2000;
import org.apache.poi.hslf.record.EscherTextboxWrapper;
@@ -231,7 +232,12 @@ public final class HSLFSlide extends HSLFSheet implements Slide<HSLFShape,HSLFTe
return null;
}
- // Simple Accesser methods follow
+ @Override
+ public String getSlideName() {
+ final CString name = (CString)getSlideRecord().findFirstOfType(RecordTypes.CString.typeID);
+ return name != null ? name.getText() : "Slide"+getSlideNumber();
+ }
+
/**
* Returns an array of all the TextRuns found
diff --git a/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShow.java b/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShow.java
index 347ea73a6c..c4daa50b3f 100644
--- a/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShow.java
+++ b/src/testcases/org/apache/poi/sl/usermodel/BaseTestSlideShow.java
@@ -159,16 +159,20 @@ public abstract class BaseTestSlideShow {
}
@Test
- public void shapeName() throws IOException {
+ public void shapeAndSlideName() throws IOException {
final String file = "SampleShow.ppt"+(getClass().getSimpleName().contains("XML")?"x":"");
- try (final InputStream is = slTests.openResourceAsStream(file)) {
- try (final SlideShow<? extends Shape, ?> ppt = SlideShowFactory.create(is)) {
- final List<? extends Shape> shapes1 = ppt.getSlides().get(0).getShapes();
- assertEquals("The Title", shapes1.get(0).getShapeName());
- assertEquals("Another Subtitle", shapes1.get(1).getShapeName());
- final List<? extends Shape> shapes2 = ppt.getSlides().get(1).getShapes();
- assertEquals("Title 1", shapes2.get(0).getShapeName());
- assertEquals("Content Placeholder 2", shapes2.get(1).getShapeName());
+ try (final InputStream is = slTests.openResourceAsStream(file);
+ final SlideShow<? extends Shape, ?> ppt = SlideShowFactory.create(is)) {
+ final List<? extends Shape> shapes1 = ppt.getSlides().get(0).getShapes();
+ assertEquals("The Title", shapes1.get(0).getShapeName());
+ assertEquals("Another Subtitle", shapes1.get(1).getShapeName());
+ final List<? extends Shape> shapes2 = ppt.getSlides().get(1).getShapes();
+ assertEquals("Title 1", shapes2.get(0).getShapeName());
+ assertEquals("Content Placeholder 2", shapes2.get(1).getShapeName());
+
+ for (final Slide<?,?> slide : ppt.getSlides()) {
+ final String expected = slide.getSlideNumber()==1 ? "FirstSlide" : "Slide2";
+ assertEquals(expected, slide.getSlideName());
}
}
}