Changeset 1725


Ignore:
Timestamp:
12/03/11 12:57:19 (6 months ago)
Author:
jharrop
Message:

Add some comments

Location:
trunk/docx4j/src/main/java/org/docx4j
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/TraversalUtil.java

    r1633 r1725  
    122122                /** 
    123123                 * Visits a node in pre order (before its children have been visited). 
     124 
    124125                 *  
    125126                 * A node is visited only if all its parents have been traversed ( 
     
    396397        } 
    397398         
    398         public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, TraversalUtilVisitor visitor) { 
     399        /**  
     400         * Use this if there is only a single object type (eg just P's) 
     401         * you are interested in doing something with.   
     402         *  
     403         * This method allows you to traverse just the main document 
     404         * part, or also headers/footers, footnotes/endnotes, and comments 
     405         * as well.  
     406         *  
     407         * @param wmlPackage 
     408         * @param bodyOnly 
     409         * @param visitor 
     410         */ 
     411        public static void visit(WordprocessingMLPackage wmlPackage,  
     412                        boolean bodyOnly, TraversalUtilVisitor visitor) { 
     413                 
    399414                if (visitor != null) { 
    400415                        visit(wmlPackage, bodyOnly, new SingleTraversalUtilVisitorCallback(visitor)); 
    401416                } 
    402417        } 
     418 
     419        /**  
     420         * Use this if there is only a single object type (eg just P's) 
     421         * you are interested in doing something with. 
     422         *  
     423         * This method is for traversing an arbitrary WML object (eg a table), as opposed to 
     424         * eg the main document part, or a header. 
     425         *  
     426         * @param parent 
     427         * @param visitor 
     428         */ 
     429        public static void visit(Object parent, TraversalUtilVisitor visitor) { 
     430                 
     431                if (visitor != null) { 
     432                        visit(parent, new SingleTraversalUtilVisitorCallback(visitor)); 
     433                } 
     434        } 
    403435         
    404         public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, List<TraversalUtilVisitor> visitorList) { 
    405         CompoundTraversalUtilVisitorCallback callback = null; 
     436        /**  
     437         * Use this if there is more than one object type (eg Tables and Paragraphs) 
     438         * you are interested in doing something with during the traversal. 
     439         *  
     440         * This method allows you to traverse just the main document 
     441         * part, or also headers/footers, footnotes/endnotes, and comments 
     442         * as well.  
     443         *  
     444         * @param wmlPackage 
     445         * @param bodyOnly 
     446         * @param visitorList 
     447         */ 
     448        public static void visit(WordprocessingMLPackage wmlPackage, 
     449                        boolean bodyOnly, List<TraversalUtilVisitor> visitorList) { 
     450                 
     451                CompoundTraversalUtilVisitorCallback callback = null; 
    406452                if ((visitorList != null) && (!visitorList.isEmpty())) { 
    407453                        if (visitorList.size() > 1) { 
    408                                 visit(wmlPackage, bodyOnly, new CompoundTraversalUtilVisitorCallback(visitorList)); 
    409                         } 
    410                         else { 
     454                                visit(wmlPackage, bodyOnly, 
     455                                                new CompoundTraversalUtilVisitorCallback(visitorList)); 
     456                        } else { 
    411457                                visit(wmlPackage, bodyOnly, visitorList.get(0)); 
    412458                        } 
    413459                } 
    414460        } 
    415          
    416         public static void visit(WordprocessingMLPackage wmlPackage, boolean bodyOnly, Callback callback) { 
    417         MainDocumentPart mainDocument = null; 
    418         RelationshipsPart relPart = null; 
    419         List<Relationship> relList = null; 
    420         List<Object> elementList = null; 
     461 
     462        /**  
     463         * Use this if there is more than one object type (eg Tables and Paragraphs) 
     464         * you are interested in doing something with during the traversal. 
     465         *  
     466         * This method is for traversing an arbitrary WML object (eg a table), as opposed to 
     467         * eg the main document part, or a header. 
     468         *  
     469         * @param parent 
     470         * @param visitorList 
     471         */ 
     472        public static void visit(Object parent, 
     473                        List<TraversalUtilVisitor> visitorList) { 
     474                 
     475                CompoundTraversalUtilVisitorCallback callback = null; 
     476                if ((visitorList != null) && (!visitorList.isEmpty())) { 
     477                        if (visitorList.size() > 1) { 
     478                                visit(parent, new CompoundTraversalUtilVisitorCallback( 
     479                                                visitorList)); 
     480                        } else { 
     481                                visit(parent, visitorList.get(0)); 
     482                        } 
     483                } 
     484        } 
     485 
     486        public static void visit(Object parent, Callback callback) { 
     487                 
     488                if ((parent != null) && (callback != null)) { 
     489                        callback.walkJAXBElements(parent); 
     490                } 
     491        } 
     492 
     493        public static void visit(WordprocessingMLPackage wmlPackage, 
     494                        boolean bodyOnly, Callback callback) { 
     495                 
     496                MainDocumentPart mainDocument = null; 
     497                RelationshipsPart relPart = null; 
     498                List<Relationship> relList = null; 
     499                List<Object> elementList = null; 
     500                 
    421501                if ((wmlPackage != null) && (callback != null)) { 
    422502                        mainDocument = wmlPackage.getMainDocumentPart(); 
     
    425505                                relPart = mainDocument.getRelationshipsPart(); 
    426506                                relList = relPart.getRelationships().getRelationship(); 
    427                                 for (Relationship rs:relList) { 
     507                                for (Relationship rs : relList) { 
    428508                                        elementList = null; 
    429509                                        if (Namespaces.HEADER.equals(rs.getType())) { 
    430                                                 elementList = ((HeaderPart)relPart.getPart(rs)).getJaxbElement().getEGBlockLevelElts(); 
    431                                         } 
    432                                         else if (Namespaces.FOOTER.equals(rs.getType())) { 
    433                                                 elementList = ((FooterPart)relPart.getPart(rs)).getJaxbElement().getEGBlockLevelElts(); 
    434                                         } 
    435                                         else if (Namespaces.ENDNOTES.equals(rs.getType())) { 
     510                                                elementList = ((HeaderPart) relPart.getPart(rs)) 
     511                                                                .getJaxbElement().getContent(); 
     512                                        } else if (Namespaces.FOOTER.equals(rs.getType())) { 
     513                                                elementList = ((FooterPart) relPart.getPart(rs)) 
     514                                                                .getJaxbElement().getContent(); 
     515                                        } else if (Namespaces.ENDNOTES.equals(rs.getType())) { 
    436516                                                elementList = new ArrayList(); 
    437                                                 for (CTFtnEdn endnote: ((EndnotesPart)relPart.getPart(rs)).getJaxbElement().getEndnote()) { 
     517                                                for (CTFtnEdn endnote : ((EndnotesPart) relPart 
     518                                                                .getPart(rs)).getJaxbElement().getEndnote()) { 
    438519                                                        elementList.addAll(endnote.getEGBlockLevelElts()); 
    439520                                                } 
    440                                         } 
    441                                         else if (Namespaces.FOOTNOTES.equals(rs.getType())) { 
     521                                        } else if (Namespaces.FOOTNOTES.equals(rs.getType())) { 
    442522                                                elementList = new ArrayList(); 
    443                                                 for (CTFtnEdn footnote: ((FootnotesPart)relPart.getPart(rs)).getJaxbElement().getFootnote()) { 
     523                                                for (CTFtnEdn footnote : ((FootnotesPart) relPart 
     524                                                                .getPart(rs)).getJaxbElement().getFootnote()) { 
    444525                                                        elementList.addAll(footnote.getEGBlockLevelElts()); 
    445526                                                } 
    446                                         } 
    447                                         else if (Namespaces.COMMENTS.equals(rs.getType())) { 
     527                                        } else if (Namespaces.COMMENTS.equals(rs.getType())) { 
    448528                                                elementList = new ArrayList(); 
    449                                                 for (Comment comment: ((CommentsPart)relPart.getPart(rs)).getJaxbElement().getComment()) { 
     529                                                for (Comment comment : ((CommentsPart) relPart 
     530                                                                .getPart(rs)).getJaxbElement().getComment()) { 
    450531                                                        elementList.addAll(comment.getEGBlockLevelElts()); 
    451532                                                } 
    452533                                        } 
    453534                                        if ((elementList != null) && (!elementList.isEmpty())) { 
    454                                                 System.out.println("Processing target: " + rs.getTarget() + ", type: " + rs.getType()); 
     535                                                System.out.println("Processing target: " 
     536                                                                + rs.getTarget() + ", type: " + rs.getType()); 
    455537                                                callback.walkJAXBElements(elementList); 
    456538                                        } 
     
    460542        } 
    461543         
    462         public static void visit(Object parent, TraversalUtilVisitor visitor) { 
    463                 if (visitor != null) { 
    464                         visit(parent, new SingleTraversalUtilVisitorCallback(visitor)); 
    465                 } 
    466         } 
    467          
    468         public static void visit(Object parent, List<TraversalUtilVisitor> visitorList) { 
    469         CompoundTraversalUtilVisitorCallback callback = null; 
    470                 if ((visitorList != null) && (!visitorList.isEmpty())) { 
    471                         if (visitorList.size() > 1) { 
    472                                 visit(parent, new CompoundTraversalUtilVisitorCallback(visitorList)); 
    473                         } 
    474                         else { 
    475                                 visit(parent, visitorList.get(0)); 
    476                         } 
    477                 } 
    478         } 
    479          
    480         public static void visit(Object parent, Callback callback) { 
    481                 if ((parent != null) && (callback != null)) { 
    482                         callback.walkJAXBElements(parent); 
    483                 } 
    484         } 
    485  
    486544        // private void describeDrawing( org.docx4j.wml.Drawing d) { 
    487545        //                       
  • trunk/docx4j/src/main/java/org/docx4j/utils/CompoundTraversalUtilVisitorCallback.java

    r1479 r1725  
    66import java.util.Map; 
    77 
    8 /** @author alberto */ 
    9 public class CompoundTraversalUtilVisitorCallback extends AbstractTraversalUtilVisitorCallback { 
     8/**  
     9 * Use this if there is more than one object type (eg Tables and Paragraphs) 
     10 * you are interested in doing something with during the traversal. 
     11 *  
     12 *  @author alberto */ 
     13public class CompoundTraversalUtilVisitorCallback extends 
     14                AbstractTraversalUtilVisitorCallback { 
     15         
    1016        Map<Class, List<TraversalUtilVisitor>> visitorMap = null; 
    11          
    12         public CompoundTraversalUtilVisitorCallback(List<TraversalUtilVisitor> visitorList) { 
     17 
     18        public CompoundTraversalUtilVisitorCallback( 
     19                        List<TraversalUtilVisitor> visitorList) { 
     20                 
    1321                visitorMap = setupTraversalVistorMap(visitorList); 
     22        } 
     23 
     24        protected Map<Class, List<TraversalUtilVisitor>> setupTraversalVistorMap( 
     25                        List<TraversalUtilVisitor> visitorList) { 
    1426                 
    15         } 
    16          
    17         protected Map<Class, List<TraversalUtilVisitor>> setupTraversalVistorMap(List<TraversalUtilVisitor> visitorList) { 
    18         Map<Class, List<TraversalUtilVisitor>> ret = new HashMap<Class, List<TraversalUtilVisitor>>(); 
    19         Class visitorClass = null; 
    20         List<TraversalUtilVisitor> classVisitorList = null; 
    21                 for (TraversalUtilVisitor visitor:visitorList) { 
     27                Map<Class, List<TraversalUtilVisitor>> ret = new HashMap<Class, List<TraversalUtilVisitor>>(); 
     28                Class visitorClass = null; 
     29                List<TraversalUtilVisitor> classVisitorList = null; 
     30                for (TraversalUtilVisitor visitor : visitorList) { 
    2231                        visitorClass = findClassParameter(visitor.getClass()); 
    2332                        if (visitorClass == null) { 
    24                                 throw new IllegalArgumentException("Can't identify the parameter class of the visitor " + visitor.getClass().getName()); 
     33                                throw new IllegalArgumentException( 
     34                                                "Can't identify the parameter class of the visitor " 
     35                                                                + visitor.getClass().getName()); 
    2536                        } 
    2637                        classVisitorList = ret.get(visitorClass); 
     
    3344                return ret; 
    3445        } 
    35          
     46 
    3647        @Override 
    3748        protected List<Object> apply(Object child, Object parent, List siblings) { 
    38         List<TraversalUtilVisitor> classVisitorList = visitorMap.get(child.getClass()); 
     49                 
     50                List<TraversalUtilVisitor> classVisitorList = visitorMap.get(child 
     51                                .getClass()); 
    3952                if (classVisitorList != null) { 
    40                         for (TraversalUtilVisitor visitor:classVisitorList) { 
     53                        for (TraversalUtilVisitor visitor : classVisitorList) { 
    4154                                visitor.apply(child, parent, siblings); 
    4255                        } 
  • trunk/docx4j/src/main/java/org/docx4j/utils/SingleTraversalUtilVisitorCallback.java

    r1479 r1725  
    33import java.util.List; 
    44 
    5 /** @author alberto */ 
     5/**  
     6 * Use this if there is only a single object type (eg just P's) 
     7 * you are interested in doing something with. 
     8 *  
     9 * @author alberto */ 
    610public class SingleTraversalUtilVisitorCallback extends AbstractTraversalUtilVisitorCallback { 
     11         
    712        protected TraversalUtilVisitor visitor = null; 
    813        protected Class visitorClass = null; 
  • trunk/docx4j/src/main/java/org/docx4j/utils/TraversalUtilVisitor.java

    r1479 r1725  
    2222import java.util.List; 
    2323 
    24 /* Doing this as a class instead of an interface ensures that it is  
    25  * part of the inheritance hierarchy. 
     24/** 
    2625 *  
     26 * Extend this class to specify what should be done when a 
     27 * particular object (eg P or Table) is visited during the 
     28 * traversal. 
     29 * 
    2730 *  @author alberto 
    2831 */ 
    2932public abstract class TraversalUtilVisitor<T> { 
     33// Doing this as a class instead of an interface ensures that it is part of the inheritance hierarchy. 
     34         
    3035        /** 
    3136         *  
Note: See TracChangeset for help on using the changeset viewer.