]> source.dussan.org Git - poi.git/commitdiff
small refactor of ThemesTable
authorPJ Fanning <fanningpj@apache.org>
Wed, 22 Dec 2021 09:16:53 +0000 (09:16 +0000)
committerPJ Fanning <fanningpj@apache.org>
Wed, 22 Dec 2021 09:16:53 +0000 (09:16 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1896269 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/main/java/org/apache/poi/xssf/model/ThemesTable.java

index 28d5a0633ecfed81051fe9c0a330d32827fb35b7..72fe4e0107e3d6458471fa5a553580b84ac2b33c 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.poi.xssf.model;
 import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 
 import org.apache.poi.ooxml.POIXMLDocumentPart;
@@ -62,7 +63,7 @@ public class ThemesTable extends POIXMLDocumentPart implements Themes {
    }
 
     private IndexedColorMap colorMap;
-    private final ThemeDocument theme;
+    private ThemeDocument theme;
 
     /**
      * Create a new, empty ThemesTable
@@ -81,14 +82,22 @@ public class ThemesTable extends POIXMLDocumentPart implements Themes {
      */
     public ThemesTable(PackagePart part) throws IOException {
         super(part);
-
-        try {
-           theme = ThemeDocument.Factory.parse(part.getInputStream(), DEFAULT_XML_OPTIONS);
-        } catch(XmlException e) {
-           throw new IOException(e.getLocalizedMessage(), e);
+        try (InputStream stream = part.getInputStream()) {
+            readFrom(stream);
         }
     }
 
+    /**
+     * Construct a ThemesTable.
+     * @param stream input stream.
+     *
+     * @since POI 5.2.0
+     */
+    public ThemesTable(InputStream stream) throws IOException {
+        super();
+        readFrom(stream);
+    }
+
     /**
      * Construct a ThemesTable from an existing ThemeDocument.
      * @param theme A ThemeDocument.
@@ -97,6 +106,21 @@ public class ThemesTable extends POIXMLDocumentPart implements Themes {
         this.theme = theme;
     }
 
+    /**
+     * Read this themes table from an XML file.
+     *
+     * @param is The input stream containing the XML document.
+     * @throws IOException if an error occurs while reading.
+     * @since POI 5.2.0
+     */
+    public void readFrom(InputStream is) throws IOException {
+        try {
+            theme = ThemeDocument.Factory.parse(is, DEFAULT_XML_OPTIONS);
+        } catch(XmlException e) {
+            throw new IOException(e.getLocalizedMessage(), e);
+        }
+    }
+
     /**
      * called from {@link StylesTable} when setting theme, used to adjust colors if a custom indexed mapping is defined
      */