public class Revision
Example:
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Normal editing of the document does not count as a revision.
builder.write("This does not count as a revision. ");
Assert.assertFalse(doc.hasRevisions());
// To register our edits as revisions, we need to declare an author, and then start tracking them.
doc.startTrackRevisions("John Doe", new Date());
builder.write("This is revision #1. ");
Assert.assertTrue(doc.hasRevisions());
Assert.assertEquals(1, doc.getRevisions().getCount());
// This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word.
// The "StartTrackRevisions" method does not affect its value,
// and the document is tracking revisions programmatically despite it having a value of "false".
// If we open this document using Microsoft Word, it will not be tracking revisions.
Assert.assertFalse(doc.getTrackRevisions());
// We have added text using the document builder, so the first revision is an insertion-type revision.
Revision revision = doc.getRevisions().get(0);
Assert.assertEquals("John Doe", revision.getAuthor());
Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText());
Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType());
Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate());
Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup());
// Remove a run to create a deletion-type revision.
doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove();
// Adding a new revision places it at the beginning of the revision collection.
Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType());
Assert.assertEquals(2, doc.getRevisions().getCount());
// Insert revisions show up in the document body even before we accept/reject the revision.
// Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions
// also linger in the document until we accept the revision.
Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim());
// Accepting the delete revision will remove its parent node from the paragraph text
// and then remove the collection's revision itself.
doc.getRevisions().get(0).accept();
Assert.assertEquals(1, doc.getRevisions().getCount());
Assert.assertEquals("This is revision #1.", doc.getText().trim());
builder.writeln("");
builder.write("This is revision #2.");
// Now move the node to create a moving revision type.
Node node = doc.getFirstSection().getBody().getParagraphs().get(1);
Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling();
Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0);
while (node != endNode)
{
Node nextNode = node.getNextSibling();
doc.getFirstSection().getBody().insertBefore(node, referenceNode);
node = nextNode;
}
Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType());
Assert.assertEquals(8, doc.getRevisions().getCount());
Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim());
// The moving revision is now at index 1. Reject the revision to discard its contents.
doc.getRevisions().get(1).reject();
Assert.assertEquals(6, doc.getRevisions().getCount());
Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
Property Getters/Setters Summary | ||
---|---|---|
java.lang.String | getAuthor() | |
void | setAuthor(java.lang.Stringvalue) | |
Gets or sets the author of this revision. Can not be empty string or null. | ||
java.util.Date | getDateTime() | |
void | setDateTime(java.util.Datevalue) | |
Gets or sets the date/time of this revision. | ||
RevisionGroup | getGroup() | |
Gets the revision group. Returns null if the revision does not belong to any group.
|
||
Node | getParentNode() | |
Gets the immediate parent node (owner) of this revision.
This property will work for any revision type other than |
||
Style | getParentStyle() | |
Gets the immediate parent style (owner) of this revision.
This property will work for only for the |
||
int | getRevisionType() | |
Gets the type of this revision.
The value of the property is RevisionType integer constant. |
Method Summary | ||
---|---|---|
void | accept() | |
Accepts this revision.
|
||
void | reject() | |
Reject this revision.
|
public java.lang.String getAuthor() / public void setAuthor(java.lang.String value)
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
public java.util.Date getDateTime() / public void setDateTime(java.util.Date value)
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
public RevisionGroup getGroup()
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
public Node getParentNode()
Example:
Shows how to determine the revision type of an inline node.Document doc = new Document(getMyDir() + "Revision runs.docx"); // When we edit the document while the "Track Changes" option, found in via Review -> Tracking, // is turned on in Microsoft Word, the changes we apply count as revisions. // When editing a document using Aspose.Words, we can begin tracking revisions by // invoking the document's "StartTrackRevisions" method and stop tracking by using the "StopTrackRevisions" method. // We can either accept revisions to assimilate them into the document // or reject them to change the proposed change effectively. Assert.assertEquals(6, doc.getRevisions().getCount()); // The parent node of a revision is the run that the revision concerns. A Run is an Inline node. Run run = (Run) doc.getRevisions().get(0).getParentNode(); Paragraph firstParagraph = run.getParentParagraph(); RunCollection runs = firstParagraph.getRuns(); Assert.assertEquals(runs.getCount(), 6); // Below are five types of revisions that can flag an Inline node. // 1 - An "insert" revision: // This revision occurs when we insert text while tracking changes. Assert.assertTrue(runs.get(2).isInsertRevision()); // 2 - A "format" revision: // This revision occurs when we change the formatting of text while tracking changes. Assert.assertTrue(runs.get(2).isFormatRevision()); // 3 - A "move from" revision: // When we highlight text in Microsoft Word, and then drag it to a different place in the document // while tracking changes, two revisions appear. // The "move from" revision is a copy of the text originally before we moved it. Assert.assertTrue(runs.get(4).isMoveFromRevision()); // 4 - A "move to" revision: // The "move to" revision is the text that we moved in its new position in the document. // "Move from" and "move to" revisions appear in pairs for every move revision we carry out. // Accepting a move revision deletes the "move from" revision and its text, // and keeps the text from the "move to" revision. // Rejecting a move revision conversely keeps the "move from" revision and deletes the "move to" revision. Assert.assertTrue(runs.get(1).isMoveToRevision()); // 5 - A "delete" revision: // This revision occurs when we delete text while tracking changes. When we delete text like this, // it will stay in the document as a revision until we either accept the revision, // which will delete the text for good, or reject the revision, which will keep the text we deleted where it was. Assert.assertTrue(runs.get(5).isDeleteRevision());
public Style getParentStyle()
Example:
Shows how to work with a document's collection of revisions.Document doc = new Document(getMyDir() + "Revisions.docx"); RevisionCollection revisions = doc.getRevisions(); // This collection itself has a collection of revision groups. // Each group is a sequence of adjacent revisions. // Iterate over the collection of groups and print the text that the revision concerns. Iterator<RevisionGroup> e = revisions.getGroups().iterator(); while (e.hasNext()) { RevisionGroup revisionGroup = e.next(); System.out.println(MessageFormat.format("\tGroup type \"{0}\", ", revisionGroup.getRevisionType()) + MessageFormat.format("author: {0}, contents: [{1}]", revisionGroup.getAuthor(), revisionGroup.getText().trim())); } // Each Run that a revision affects gets a corresponding Revision object. // The revisions' collection is considerably larger than the condensed form we printed above, // depending on how many Runs we have segmented the document into during Microsoft Word editing. Iterator<Revision> e1 = revisions.iterator(); while (e1.hasNext()) { Revision revision = e1.next(); // A StyleDefinitionChange strictly affects styles and not document nodes. This means the "ParentStyle" // property will always be in use, while the ParentNode will always be null. // Since all other changes affect nodes, ParentNode will conversely be in use, and ParentStyle will be null. if (revision.getRevisionType() == RevisionType.STYLE_DEFINITION_CHANGE) { System.out.println(MessageFormat.format("\tRevision type \"{0}\", ", revision.getRevisionType()) + MessageFormat.format("author: {0}, style: [{1}]", revision.getAuthor(), revision.getParentStyle().getName())); } else { System.out.println(MessageFormat.format("\tRevision type \"{0}\", ", revision.getRevisionType()) + MessageFormat.format("author: {0}, contents: [{1}]", revision.getAuthor(), revision.getParentNode().getText().trim())); } } // Reject all revisions via the collection, reverting the document to its original form. revisions.rejectAll(); Assert.assertEquals(0, revisions.getCount());
public int getRevisionType()
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
public void accept() throws java.lang.Exception
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());
public void reject() throws java.lang.Exception
Example:
Shows how to work with revisions in a document.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); // Normal editing of the document does not count as a revision. builder.write("This does not count as a revision. "); Assert.assertFalse(doc.hasRevisions()); // To register our edits as revisions, we need to declare an author, and then start tracking them. doc.startTrackRevisions("John Doe", new Date()); builder.write("This is revision #1. "); Assert.assertTrue(doc.hasRevisions()); Assert.assertEquals(1, doc.getRevisions().getCount()); // This flag corresponds to the "Review" -> "Tracking" -> "Track Changes" option in Microsoft Word. // The "StartTrackRevisions" method does not affect its value, // and the document is tracking revisions programmatically despite it having a value of "false". // If we open this document using Microsoft Word, it will not be tracking revisions. Assert.assertFalse(doc.getTrackRevisions()); // We have added text using the document builder, so the first revision is an insertion-type revision. Revision revision = doc.getRevisions().get(0); Assert.assertEquals("John Doe", revision.getAuthor()); Assert.assertEquals("This is revision #1. ", revision.getParentNode().getText()); Assert.assertEquals(RevisionType.INSERTION, revision.getRevisionType()); Assert.assertEquals(revision.getDateTime().getDate(), new Date().getDate()); Assert.assertEquals(doc.getRevisions().getGroups().get(0), revision.getGroup()); // Remove a run to create a deletion-type revision. doc.getFirstSection().getBody().getFirstParagraph().getRuns().get(0).remove(); // Adding a new revision places it at the beginning of the revision collection. Assert.assertEquals(RevisionType.DELETION, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(2, doc.getRevisions().getCount()); // Insert revisions show up in the document body even before we accept/reject the revision. // Rejecting the revision will remove its nodes from the body. Conversely, nodes that make up delete revisions // also linger in the document until we accept the revision. Assert.assertEquals("This does not count as a revision. This is revision #1.", doc.getText().trim()); // Accepting the delete revision will remove its parent node from the paragraph text // and then remove the collection's revision itself. doc.getRevisions().get(0).accept(); Assert.assertEquals(1, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1.", doc.getText().trim()); builder.writeln(""); builder.write("This is revision #2."); // Now move the node to create a moving revision type. Node node = doc.getFirstSection().getBody().getParagraphs().get(1); Node endNode = doc.getFirstSection().getBody().getParagraphs().get(1).getNextSibling(); Node referenceNode = doc.getFirstSection().getBody().getParagraphs().get(0); while (node != endNode) { Node nextNode = node.getNextSibling(); doc.getFirstSection().getBody().insertBefore(node, referenceNode); node = nextNode; } Assert.assertEquals(RevisionType.MOVING, doc.getRevisions().get(0).getRevisionType()); Assert.assertEquals(8, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #2.\rThis is revision #1. \rThis is revision #2.", doc.getText().trim()); // The moving revision is now at index 1. Reject the revision to discard its contents. doc.getRevisions().get(1).reject(); Assert.assertEquals(6, doc.getRevisions().getCount()); Assert.assertEquals("This is revision #1. \rThis is revision #2.", doc.getText().trim());