Changeset 1302


Ignore:
Timestamp:
11/11/10 08:15:34 (19 months ago)
Author:
jharrop
Message:

Pass Relationship to newPartForContentType so AlternativeFormatInputPart? can be detected.

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

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/convert/in/FlatOpcXmlImporter.java

    r1274 r1302  
    316316                String relationshipType = r.getType();           
    317317                         
    318                 Part part = getRawPart(ctm, resolvedPartUri); 
     318                Part part = getRawPart(ctm, resolvedPartUri,r); 
    319319                rp.loadPart(part, r); 
    320320                handled.put(resolvedPartUri, resolvedPartUri); 
     
    382382         * @throws InvalidFormatException 
    383383         */ 
    384         public Part getRawPart(ContentTypeManager ctm, String resolvedPartUri) 
     384        public Part getRawPart(ContentTypeManager ctm, String resolvedPartUri, Relationship rel) 
    385385                        throws Docx4JException { 
    386386                 
     
    408408                                } 
    409409                                                                 
    410                                  part = ctm.newPartForContentType(contentType, resolvedPartUri); 
     410                                 part = ctm.newPartForContentType(contentType, resolvedPartUri,rel); 
    411411                                 part.setContentType( new ContentType(contentType) ); 
    412412                                  
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/contenttype/ContentTypeManager.java

    r1229 r1302  
    8484import org.docx4j.openpackaging.parts.PresentationML.JaxbPmlPart; 
    8585import org.docx4j.openpackaging.parts.SpreadsheetML.JaxbSmlPart; 
     86import org.docx4j.openpackaging.parts.WordprocessingML.AlternativeFormatInputPart; 
    8687import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart; 
    8788import org.docx4j.openpackaging.parts.WordprocessingML.CommentsPart; 
     
    100101import org.docx4j.openpackaging.parts.WordprocessingML.StyleDefinitionsPart; 
    101102import org.docx4j.openpackaging.parts.WordprocessingML.WebSettingsPart; 
     103import org.docx4j.openpackaging.parts.relationships.Namespaces; 
     104import org.docx4j.relationships.Relationship; 
    102105 
    103106 
     
    231234         
    232235        /* Return a part of the appropriate sub class */ 
    233         public  Part getPart(String partName) throws URISyntaxException, PartUnrecognisedException, 
     236        public  Part getPart(String partName, Relationship rel) throws URISyntaxException, PartUnrecognisedException, 
    234237         InvalidFormatException { 
    235238                 
     
    241244                        String contentType = overrideCT.getContentType();  
    242245                        log.debug("Found content type '" + contentType + "' for " + partName); 
    243                          p = newPartForContentType(contentType, partName); 
     246                         p = newPartForContentType(contentType, partName, rel); 
    244247                         p.setContentType( new ContentType(contentType) ); 
    245248                         return p; 
     
    254257                        log.info("Found content type '" + contentType + "' for " 
    255258                                                        + partName); 
    256                         p = newPartForContentType(contentType, partName); 
     259                        p = newPartForContentType(contentType, partName, rel); 
    257260                        p.setContentType(new ContentType(contentType)); 
    258261                        return p; 
     
    265268        } 
    266269         
    267         public Part newPartForContentType(String contentType, String partName) 
     270        public Part newPartForContentType(String contentType, String partName, Relationship rel) 
    268271                throws InvalidFormatException, PartUnrecognisedException { 
    269272                 
    270273                // TODO - a number of WordML parts aren't listed here! 
    271                 if (contentType.equals(ContentTypes.WORDPROCESSINGML_DOCUMENT)) {  
     274                if (rel!=null && rel.getType().equals(Namespaces.AF) ) { 
     275                        // Could have just passed String relType 
     276                        // Null where used from BPAI, and a FlatOpcXmlImporter case. 
     277                        // Cases where rel is not available can prepare a suitable dummy 
     278                         
     279                        AlternativeFormatInputPart afip =  
     280                                new AlternativeFormatInputPart(new PartName(partName) ); 
     281                        afip.setContentType(new ContentType(contentType)); 
     282                         
     283                } else if (contentType.equals(ContentTypes.WORDPROCESSINGML_DOCUMENT)) {  
    272284                        return CreateMainDocumentPartObject(partName); 
    273285                        // how is the main document distinguished from the glossary document? 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/Load.java

    r1274 r1302  
    122122         * @throws InvalidFormatException 
    123123         */ 
    124         public static Part getRawPart(InputStream is, ContentTypeManager ctm, String resolvedPartUri) 
     124        public static Part getRawPart(InputStream is, ContentTypeManager ctm, String resolvedPartUri, Relationship rel) 
    125125                        throws Docx4JException { 
    126126                 
     
    131131                        try { 
    132132                                 
    133                                 part = ctm.getPart("/" + resolvedPartUri); 
     133                                part = ctm.getPart("/" + resolvedPartUri, rel); 
    134134                                                                 
    135135                                 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/LoadFromZipFile.java

    r1274 r1302  
    351351                String relationshipType = r.getType();           
    352352                         
    353                 Part part = getRawPart(zf, ctm, resolvedPartUri); 
     353                Part part = getRawPart(zf, ctm, resolvedPartUri, r); 
    354354                if (part instanceof BinaryPart 
    355355                                || part instanceof DefaultXmlPart) { 
     
    425425         * @throws InvalidFormatException 
    426426         */ 
    427         public static Part getRawPart(ZipFile zf, ContentTypeManager ctm, String resolvedPartUri) 
     427        public static Part getRawPart(ZipFile zf, ContentTypeManager ctm, String resolvedPartUri, Relationship rel) 
    428428                        throws Docx4JException { 
    429429                Part part = null; 
     
    439439                                // specific knowledge. Hence it is important to get the is 
    440440                                // first, as we do above. 
    441                                 part = ctm.getPart("/" + resolvedPartUri);                               
     441                                part = ctm.getPart("/" + resolvedPartUri, rel);                          
    442442 
    443443                                if (part instanceof org.docx4j.openpackaging.parts.ThemePart) { 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/io/LoadFromZipNG.java

    r1274 r1302  
    372372         */ 
    373373        //private void getPart(ZipFile zf, Package pkg, RelationshipsPart rp, Relationship r) 
    374         private void getPart(HashMap<String, ByteArray> partByteArrays, OpcPackage pkg, RelationshipsPart rp, Relationship r) 
     374        private void getPart(HashMap<String, ByteArray> partByteArrays, OpcPackage pkg, RelationshipsPart rp,  
     375                        Relationship r) 
    375376                        throws Docx4JException, InvalidFormatException, URISyntaxException { 
    376377                 
     
    418419                String relationshipType = r.getType();           
    419420                         
    420                 Part part = getRawPart(partByteArrays, ctm, resolvedPartUri); 
     421                Part part = getRawPart(partByteArrays, ctm, resolvedPartUri, r); 
    421422                if (part instanceof BinaryPart 
    422423                                || part instanceof DefaultXmlPart) { 
     
    495496        //public static Part getRawPart(ZipFile zf, ContentTypeManager ctm, String resolvedPartUri) 
    496497        public static Part getRawPart(HashMap<String, ByteArray> partByteArrays, 
    497                         ContentTypeManager ctm, String resolvedPartUri)  
     498                        ContentTypeManager ctm, String resolvedPartUri, Relationship rel)        
    498499                        throws Docx4JException { 
     500                 
    499501                Part part = null; 
    500502                 
     
    509511                                // specific knowledge. Hence it is important to get the is 
    510512                                // first, as we do above. 
    511                                 part = ctm.getPart("/" + resolvedPartUri);                               
     513                                part = ctm.getPart("/" + resolvedPartUri, rel);                          
    512514 
    513515                                if (part instanceof org.docx4j.openpackaging.parts.ThemePart) { 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/packages/WordprocessingMLPackage.java

    r1277 r1302  
    271271                ContentTypeManager ctm = new ContentTypeManager(); 
    272272                 
    273                 Part tmpDocPart = xmlPackage.getRawPart(ctm,  "/word/document.xml"); 
    274                 Part tmpStylesPart = xmlPackage.getRawPart(ctm,  "/word/styles.xml"); 
     273                Part tmpDocPart = xmlPackage.getRawPart(ctm,  "/word/document.xml", null); 
     274                Part tmpStylesPart = xmlPackage.getRawPart(ctm,  "/word/styles.xml", null); 
    275275                 
    276276                // This code assumes all the existing rels etc of  
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/WordprocessingML/BinaryPartAbstractImage.java

    r1290 r1302  
    207207                BinaryPartAbstractImage imagePart =  
    208208                        (BinaryPartAbstractImage)ctm.newPartForContentType( 
    209                                 info.getMimeType(), createImageName(sourcePart, proposedRelId, ext) 
     209                                info.getMimeType(), createImageName(sourcePart, proposedRelId, ext), null 
    210210                                 ); 
    211211                                 
     
    360360                        (BinaryPartAbstractImage)ctm.newPartForContentType( 
    361361                                info.getMimeType(),  
    362                                 createImageName(sourcePart, proposedRelId, ext ) ); 
     362                                createImageName(sourcePart, proposedRelId, ext ), null ); 
    363363                                 
    364364                log.debug("created part " + imagePart.getClass().getName() 
  • trunk/docx4j/src/main/java/org/docx4j/openpackaging/parts/relationships/Namespaces.java

    r1201 r1302  
    117117         
    118118        public final static String AF =  
    119                 "http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk"; 
     119                "http://schemas.openxmlformats.org/officeDocument/2006/relationships/afChunk"; 
    120120         
    121121         
  • trunk/docx4j/src/main/java/org/docx4j/samples/ImportForeignPart.java

    r1044 r1302  
    7373                 
    7474                 
    75                 Part foreignPart = Load.getRawPart(is, foreignCtm,  resolvedPartUri); 
     75                Part foreignPart = Load.getRawPart(is, foreignCtm,  resolvedPartUri, null); 
     76                        // the null means this won't work for an AlternativeFormatInputPart  
    7677                attachmentPoint.addTargetPart(foreignPart); 
    7778                // Add content type 
Note: See TracChangeset for help on using the changeset viewer.