]> source.dussan.org Git - poi.git/commitdiff
Add a bit more XSSFDrawing testing, not all of which works properly yet...
authorNick Burch <nick@apache.org>
Wed, 5 Oct 2011 22:13:52 +0000 (22:13 +0000)
committerNick Burch <nick@apache.org>
Wed, 5 Oct 2011 22:13:52 +0000 (22:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1179461 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDrawing.java

index 803fdf0142bc24dc26ec6f3d77e7050989ce3f72..0c13db8ffcb9e264ca3fc08b42a37061cc58f8af 100644 (file)
@@ -85,6 +85,7 @@ public final class XSSFDrawing extends POIXMLDocumentPart implements Drawing {
     protected XSSFDrawing(PackagePart part, PackageRelationship rel) throws IOException, XmlException {
         super(part, rel);
         drawing = CTDrawing.Factory.parse(part.getInputStream());
+        isNew = false;
     }
 
     /**
@@ -116,7 +117,13 @@ public final class XSSFDrawing extends POIXMLDocumentPart implements Drawing {
                 xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
                 xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing">
         */
-        if(isNew) xmlOptions.setSaveSyntheticDocumentElement(new QName(CTDrawing.type.getName().getNamespaceURI(), "wsDr", "xdr"));
+        if(isNew) {
+           // Have it wrapped in a <xdr:wsDr> tag
+           xmlOptions.setSaveSyntheticDocumentElement(
+                 new QName(CTDrawing.type.getName().getNamespaceURI(), "wsDr", "xdr")
+           );
+           isNew = false;
+        }
         Map<String, String> map = new HashMap<String, String>();
         map.put(NAMESPACE_A, "a");
         map.put(STRelationshipId.type.getName().getNamespaceURI(), "r");
index 03f491d390f529ee1773a3fbc24ad75a5e2a14b4..2ce1bf2793a6266d914cbc18c4d51b25ec8f94dc 100644 (file)
@@ -23,6 +23,7 @@ import junit.framework.TestCase;
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTDrawing;
 
 /**
  * @author Yegor Kozlov
@@ -44,7 +45,6 @@ public class TestXSSFDrawing extends TestCase {
         //there should be a relation to this drawing in the worksheet
         assertTrue(sheet.getCTWorksheet().isSetDrawing());
         assertEquals(drawingId, sheet.getCTWorksheet().getDrawing().getId());
-
     }
 
     public void testNew(){
@@ -85,7 +85,27 @@ public class TestXSSFDrawing extends TestCase {
         c4.setText(rt);
 
         c4.setNoFill(true);
+        
+        
+        // Save and re-load it
+        wb = XSSFTestDataSamples.writeOutAndReadBack(wb);
+        sheet = wb.getSheetAt(0);
+        
+        // Check
+        dr1 = sheet.createDrawingPatriarch();
+        CTDrawing ctDrawing = dr1.getCTDrawing();
+        
+        // Connector, shapes and text boxes are all two cell anchors
+        assertEquals(0, ctDrawing.sizeOfAbsoluteAnchorArray());
+        assertEquals(0, ctDrawing.sizeOfOneCellAnchorArray());
+        // TODO Fix this!
+//        assertEquals(4, ctDrawing.sizeOfTwoCellAnchorArray());
+        
+        // Ensure it got the right namespaces
+        String xml = ctDrawing.toString();
+        assertEquals("<xdr:wsDr", xml.substring(0, 9));
     }
+    
     public void testMultipleDrawings(){
         XSSFWorkbook wb = new XSSFWorkbook();
         for (int i = 0; i < 3; i++) {