From 4d193220afefab44dcaeadf7ecb3165e9a1b0392 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Thu, 13 Mar 2014 00:16:56 +0000 Subject: [PATCH] Bug 56075 - Add Change Tracking support to XWPF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1577010 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFDocument.java | 18 +++++ .../poi/xwpf/usermodel/XWPFSettings.java | 26 +++++++ .../xwpf/usermodel/TestChangeTracking.java | 71 ++++++++++++++++++ .../document/bug56075-changeTracking_off.docx | Bin 0 -> 12617 bytes .../document/bug56075-changeTracking_on.docx | Bin 0 -> 12606 bytes 5 files changed, 115 insertions(+) create mode 100644 src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java create mode 100644 test-data/document/bug56075-changeTracking_off.docx create mode 100644 test-data/document/bug56075-changeTracking_on.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 65952cbae9..5badf3a671 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -1157,6 +1157,24 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { settings.setUpdateFields(); } + /** + * Check if revision tracking is turned on. + * + * @return true if revision tracking is turned on + */ + public boolean isTrackRevisions() { + return settings.isTrackRevisions(); + } + + /** + * Enable or disable revision tracking. + * + * @param true to turn on revision tracking, false to turn off revision tracking + */ + public void setTrackRevisions(boolean enable) { + settings.setTrackRevisions(enable); + } + /** * inserts an existing XWPFTable to the arrays bodyElements and tables * @param pos 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 dab349a274..43041bb0c6 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -326,6 +326,32 @@ public class XWPFSettings extends POIXMLDocumentPart { return ctSettings.isSetUpdateFields() && ctSettings.getUpdateFields().getVal() == STOnOff.TRUE; } + /** + * Check if revision tracking is turned on. + * + * @return true if revision tracking is turned on + */ + public boolean isTrackRevisions() { + return ctSettings.isSetTrackRevisions(); + } + + /** + * Enable or disable revision tracking. + * + * @param true to turn on revision tracking, false to turn off revision tracking + */ + public void setTrackRevisions(boolean enable) { + if(enable) { + if(!ctSettings.isSetTrackRevisions()) { + ctSettings.addNewTrackRevisions(); + } + } else { + if(ctSettings.isSetTrackRevisions()) { + ctSettings.unsetTrackRevisions(); + } + } + } + @Override protected void commit() throws IOException { if (ctSettings == null) { diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java new file mode 100644 index 0000000000..d3e4758e1f --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java @@ -0,0 +1,71 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.xwpf.usermodel; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.junit.Test; + +public class TestChangeTracking { + + @Test + public void detection() throws Exception { + + XWPFDocument documentWithoutChangeTracking = XWPFTestDataSamples.openSampleDocument("bug56075-changeTracking_off.docx"); + assertFalse(documentWithoutChangeTracking.isTrackRevisions()); + + XWPFDocument documentWithChangeTracking = XWPFTestDataSamples.openSampleDocument("bug56075-changeTracking_on.docx"); + assertTrue(documentWithChangeTracking.isTrackRevisions()); + + } + + @Test + public void activateChangeTracking() throws Exception { + XWPFDocument document = XWPFTestDataSamples.openSampleDocument("bug56075-changeTracking_off.docx"); + assertFalse(document.isTrackRevisions()); + + document.setTrackRevisions(true); + + assertTrue(document.isTrackRevisions()); + } + + @Test + public void integration() throws Exception { + XWPFDocument doc = new XWPFDocument(); + + XWPFParagraph p1 = doc.createParagraph(); + + XWPFRun r1 = p1.createRun(); + r1.setText("Lorem ipsum dolor sit amet."); + doc.setTrackRevisions(true); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + doc.write(out); + + ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray()); + XWPFDocument document = new XWPFDocument(inputStream); + inputStream.close(); + + assertTrue(document.isTrackRevisions()); + } + +} diff --git a/test-data/document/bug56075-changeTracking_off.docx b/test-data/document/bug56075-changeTracking_off.docx new file mode 100644 index 0000000000000000000000000000000000000000..a92202d22e1d67282a7ac52a9e38b5ecb567e7ce GIT binary patch literal 12617 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 F`hTwMSik@P literal 0 HcmV?d00001 diff --git a/test-data/document/bug56075-changeTracking_on.docx b/test-data/document/bug56075-changeTracking_on.docx new file mode 100644 index 0000000000000000000000000000000000000000..401af507f781471b4725164c5e55151d00992811 GIT binary patch literal 12606 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