Ignore:
Timestamp:
05/03/08 08:22:12 (4 years ago)
Author:
jharrop
Message:

transform output - write to existing MainDocumentPart? and StyleDefinitionsPart?. (If you create new ones without deleting existing ones, you get duplicate entries in the relationships, which eventually causes the document to fail to save).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r356 r357  
    199199                MainDocumentPart documentPart = getMainDocumentPart();  
    200200                 
    201         pkgPartDocument.setName(documentPart.getPartName().getName()); 
    202         pkgPartDocument.setContentType(documentPart.getContentType() ); 
    203                  
    204         org.docx4j.wml.Package.Part.XmlData XmlDataDoc = factory.createPackagePartXmlData(); 
    205          
    206                 org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement(); 
    207                  
    208                 XmlDataDoc.setDocument(wmlDocumentEl); 
    209                 pkgPartDocument.setXmlData(XmlDataDoc); 
    210                 pkg.getPart().add(pkgPartDocument); 
     201                if (documentPart==null) { 
     202                        log.warn("Main document part missing!"); 
     203                } else { 
     204                 
     205                pkgPartDocument.setName(documentPart.getPartName().getName()); 
     206                pkgPartDocument.setContentType(documentPart.getContentType() ); 
     207                         
     208                org.docx4j.wml.Package.Part.XmlData XmlDataDoc = factory.createPackagePartXmlData(); 
     209                 
     210                        org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement(); 
     211                         
     212                        XmlDataDoc.setDocument(wmlDocumentEl); 
     213                        pkgPartDocument.setXmlData(XmlDataDoc); 
     214                        pkg.getPart().add(pkgPartDocument); 
     215                } 
    211216                                 
    212217        // .. the style part 
     
    214219 
    215220        org.docx4j.openpackaging.parts.WordprocessingML.StyleDefinitionsPart stylesPart = documentPart.getStyleDefinitionsPart(); 
    216          
    217         pkgPartStyles.setName(stylesPart.getPartName().getName()); 
    218         pkgPartStyles.setContentType(stylesPart.getContentType() ); 
    219          
    220         org.docx4j.wml.Package.Part.XmlData XmlDataStyles = factory.createPackagePartXmlData(); 
    221          
    222         org.docx4j.wml.Styles styles = (org.docx4j.wml.Styles)stylesPart.getJaxbElement(); 
    223          
    224                 XmlDataStyles.setStyles(styles); 
    225                 pkgPartStyles.setXmlData(XmlDataStyles); 
    226                 pkg.getPart().add(pkgPartStyles); 
     221 
     222                if (stylesPart==null) { 
     223                        log.warn("Style definitions part missing!"); 
     224                } else { 
     225         
     226                pkgPartStyles.setName(stylesPart.getPartName().getName()); 
     227                pkgPartStyles.setContentType(stylesPart.getContentType() ); 
     228                 
     229                org.docx4j.wml.Package.Part.XmlData XmlDataStyles = factory.createPackagePartXmlData(); 
     230                 
     231                org.docx4j.wml.Styles styles = (org.docx4j.wml.Styles)stylesPart.getJaxbElement(); 
     232                 
     233                        XmlDataStyles.setStyles(styles); 
     234                        pkgPartStyles.setXmlData(XmlDataStyles); 
     235                        pkg.getPart().add(pkgPartStyles); 
     236                } 
    227237                 
    228238                return pkg; 
     
    270280                } 
    271281 
    272                 // TODO - delete existing main document part 
    273                  
    274                 // Create main document part 
    275                 MainDocumentPart wordDocumentPart = new MainDocumentPart();              
    276                 // Put the content in the part                           
    277                 wordDocumentPart.setJaxbElement(wmlDocument); 
    278                 // Add the main document part to the package relationships 
    279                 // (creating it if necessary) 
    280                 this.addTargetPart(wordDocumentPart); 
    281                  
    282  
    283                 // TODO - delete existing style part 
    284                  
    285                  
    286                 // That handled the Main Document Part; now set the Style part. 
    287                 StyleDefinitionsPart stylesPart = new StyleDefinitionsPart();  
    288                 stylesPart.setJaxbElement(wmlStyles); 
    289                 // Add the styles part to the main document part relationships 
    290                 // (creating it if necessary) 
    291                 wordDocumentPart.addTargetPart(stylesPart); // NB - add it to main doc part, not package! 
    292                  
     282                // This code assumes all the existing rels etc of  
     283                // the existing main document part are still relevant. 
     284                if (wmlDocument==null) { 
     285                        log.warn("Couldn't get main document part from package transform result!");                      
     286                } else { 
     287                        this.getMainDocumentPart().setJaxbElement(wmlDocument); 
     288                }        
     289                                 
     290                if (wmlStyles==null) { 
     291                        log.warn("Couldn't get style definitions part from package transform result!");                  
     292                } else { 
     293                        this.getMainDocumentPart().getStyleDefinitionsPart().setJaxbElement(wmlStyles); 
     294                } 
    293295         
    294296    } 
Note: See TracChangeset for help on using the changeset viewer.