diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2018-05-16 21:57:49 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2018-05-16 21:57:49 +0000 |
commit | 4a3ea104fe275e0d0f8d094f7bd1f6da57562d64 (patch) | |
tree | ac85054e14d3e8295d16be4385aa3dafb98a0479 /src | |
parent | e371ce46cc2576a3a10f7e8ad0949bd178e95233 (diff) | |
download | poi-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')
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()); } } } |