From 677b19afbd6cc097c5516fee7b97bd7e776e392d Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 15 Feb 2016 09:26:51 +0000 Subject: [PATCH] GitHub PR 27: Add method to check for any protection in XWPFDocument, closes #27 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1730471 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFDocument.java | 16 ++++++++++++ .../poi/xwpf/usermodel/XWPFSettings.java | 23 ++++++++++++++++++ .../poi/xwpf/usermodel/TestXWPFDocument.java | 7 ++++++ test-data/document/EnforcedWith.docx | Bin 0 -> 11321 bytes 4 files changed, 46 insertions(+) create mode 100644 test-data/document/EnforcedWith.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index a7cf4dca0..82f545c03 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -919,6 +919,22 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { tables.set(pos, table); ctDocument.getBody().setTblArray(pos, table.getCTTbl()); } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option any + */ + public boolean isEnforcedProtection() { + return settings.isEnforcedWith(); + } /** * Verifies that the documentProtection tag in settings.xml file
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java index fa4e6401f..d9d29a330 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -120,6 +120,29 @@ public class XWPFSettings extends POIXMLDocumentPart { CTZoom zoom = ctSettings.getZoom(); zoom.setPercent(BigInteger.valueOf(zoomPercent)); } + + /** + * Verifies the documentProtection tag inside settings.xml file
+ * if the protection is enforced (w:enforcement="1")
+ *

+ *
+ * sample snippet from settings.xml + *

+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option any + */ + public boolean isEnforcedWith() { + CTDocProtect ctDocProtect = ctSettings.getDocumentProtection(); + + if (ctDocProtect == null) { + return false; + } + + return ctDocProtect.getEnforcement().equals(STOnOff.X_1); + } /** * Verifies the documentProtection tag inside settings.xml file
diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 43d8cce0f..afa0428b4 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -416,4 +416,11 @@ public final class TestXWPFDocument { doc.close(); } + + @Test + public void testEnforcedWith() throws IOException { + XWPFDocument docx = XWPFTestDataSamples.openSampleDocument("EnforcedWith.docx"); + assertTrue(docx.isEnforcedProtection()); + docx.close(); + } } diff --git a/test-data/document/EnforcedWith.docx b/test-data/document/EnforcedWith.docx new file mode 100644 index 0000000000000000000000000000000000000000..c50e358591f2b5bf7a1e5f2352d740bacf593926 GIT binary patch literal 11321 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 I`bX*i04S;8`2YX_ literal 0 HcmV?d00001