Changeset 1479
- Timestamp:
- 04/17/11 00:45:09 (13 months ago)
- Location:
- trunk/docx4j/src/main/java/org/docx4j
- Files:
-
- 4 added
- 1 edited
-
TraversalUtil.java (modified) (4 diffs)
-
utils/AbstractTraversalUtilVisitorCallback.java (added)
-
utils/CompoundTraversalUtilVisitorCallback.java (added)
-
utils/SingleTraversalUtilVisitorCallback.java (added)
-
utils/TraversalUtilVisitor.java (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/docx4j/src/main/java/org/docx4j/TraversalUtil.java
r1476 r1479 1 /* 2 * Copyright 2010-2011, Plutext Pty Ltd. 3 * 4 * This file is part of docx4j. 5 6 docx4j is licensed under the Apache License, Version 2.0 (the "License"); 7 you may not use this file except in compliance with the License. 8 9 You may obtain a copy of the License at 10 11 http://www.apache.org/licenses/LICENSE-2.0 12 13 Unless required by applicable law or agreed to in writing, software 14 distributed under the License is distributed on an "AS IS" BASIS, 15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 See the License for the specific language governing permissions and 17 limitations under the License. 18 19 */ 1 20 package org.docx4j; 2 21 … … 8 27 9 28 import org.apache.log4j.Logger; 10 import org.docx4j.dml.picture.Pic;11 import org.docx4j.dml.wordprocessingDrawing.Anchor;12 import org.docx4j.dml.wordprocessingDrawing.Inline;13 29 import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 30 import org.docx4j.openpackaging.parts.WordprocessingML.CommentsPart; 31 import org.docx4j.openpackaging.parts.WordprocessingML.EndnotesPart; 32 import org.docx4j.openpackaging.parts.WordprocessingML.FooterPart; 33 import org.docx4j.openpackaging.parts.WordprocessingML.FootnotesPart; 34 import org.docx4j.openpackaging.parts.WordprocessingML.HeaderPart; 14 35 import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 36 import org.docx4j.openpackaging.parts.relationships.Namespaces; 37 import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; 38 import org.docx4j.relationships.Relationship; 39 import org.docx4j.utils.CompoundTraversalUtilVisitorCallback; 40 import org.docx4j.utils.SingleTraversalUtilVisitorCallback; 41 import org.docx4j.utils.TraversalUtilVisitor; 15 42 import org.docx4j.wml.Body; 43 import org.docx4j.wml.CTFtnEdn; 16 44 import org.docx4j.wml.CTObject; 17 import org.docx4j.wml.CTSdtContentRow;18 45 import org.docx4j.wml.Pict; 46 import org.docx4j.wml.Comments.Comment; 47 19 48 20 49 /** … … 27 56 * since visitChildren is not (yet) comprehensive. 28 57 * 29 * @author jharrop 58 * @author jharrop, alberto 30 59 * 31 60 */ … … 345 374 } 346 375 } 376 377 public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, TraversalUtilVisitor visitor) { 378 if (visitor != null) { 379 visit(wmlPackage, bodyOnly, new SingleTraversalUtilVisitorCallback(visitor)); 380 } 381 } 382 383 public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, List<TraversalUtilVisitor> visitorList) { 384 CompoundTraversalUtilVisitorCallback callback = null; 385 if ((visitorList != null) && (!visitorList.isEmpty())) { 386 if (visitorList.size() > 1) { 387 visit(wmlPackage, bodyOnly, new CompoundTraversalUtilVisitorCallback(visitorList)); 388 } 389 else { 390 visit(wmlPackage, bodyOnly, visitorList.get(0)); 391 } 392 } 393 } 394 395 public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, Callback callback) { 396 MainDocumentPart mainDocument = null; 397 RelationshipsPart relPart = null; 398 List<Relationship> relList = null; 399 List<Object> elementList = null; 400 if ((wmlPackage != null) && (callback != null)) { 401 mainDocument = wmlPackage.getMainDocumentPart(); 402 callback.walkJAXBElements(mainDocument.getJaxbElement().getBody()); 403 if (!bodyOnly) { 404 relPart = mainDocument.getRelationshipsPart(); 405 relList = relPart.getRelationships().getRelationship(); 406 for (Relationship rs:relList) { 407 elementList = null; 408 if (Namespaces.HEADER.equals(rs.getType())) { 409 elementList = ((HeaderPart)relPart.getPart(rs)).getJaxbElement().getEGBlockLevelElts(); 410 } 411 else if (Namespaces.FOOTER.equals(rs.getType())) { 412 elementList = ((FooterPart)relPart.getPart(rs)).getJaxbElement().getEGBlockLevelElts(); 413 } 414 else if (Namespaces.ENDNOTES.equals(rs.getType())) { 415 elementList = new ArrayList(); 416 for (CTFtnEdn endnote: ((EndnotesPart)relPart.getPart(rs)).getJaxbElement().getEndnote()) { 417 elementList.addAll(endnote.getEGBlockLevelElts()); 418 } 419 } 420 else if (Namespaces.FOOTNOTES.equals(rs.getType())) { 421 elementList = new ArrayList(); 422 for (CTFtnEdn footnote: ((FootnotesPart)relPart.getPart(rs)).getJaxbElement().getFootnote()) { 423 elementList.addAll(footnote.getEGBlockLevelElts()); 424 } 425 } 426 else if (Namespaces.COMMENTS.equals(rs.getType())) { 427 elementList = new ArrayList(); 428 for (Comment comment: ((CommentsPart)relPart.getPart(rs)).getJaxbElement().getComment()) { 429 elementList.addAll(comment.getEGBlockLevelElts()); 430 } 431 } 432 if ((elementList != null) && (!elementList.isEmpty())) { 433 System.out.println("Processing target: " + rs.getTarget() + ", type: " + rs.getType()); 434 callback.walkJAXBElements(elementList); 435 } 436 } 437 } 438 } 439 } 440 441 public static void visit(Object parent, TraversalUtilVisitor visitor) { 442 if (visitor != null) { 443 visit(parent, new SingleTraversalUtilVisitorCallback(visitor)); 444 } 445 } 446 447 public static void visit(Object parent, List<TraversalUtilVisitor> visitorList) { 448 CompoundTraversalUtilVisitorCallback callback = null; 449 if ((visitorList != null) && (!visitorList.isEmpty())) { 450 if (visitorList.size() > 1) { 451 visit(parent, new CompoundTraversalUtilVisitorCallback(visitorList)); 452 } 453 else { 454 visit(parent, visitorList.get(0)); 455 } 456 } 457 } 458 459 public static void visit(Object parent, Callback callback) { 460 if ((parent != null) && (callback != null)) { 461 callback.walkJAXBElements(parent); 462 } 463 } 464 347 465 // private void describeDrawing( org.docx4j.wml.Drawing d) { 348 466 //
Note: See TracChangeset
for help on using the changeset viewer.
