]> source.dussan.org Git - poi.git/commitdiff
For XSSFSheet, add a getDrawingPatriarch() method alongside the existing createDrawin...
authorNick Burch <nick@apache.org>
Sun, 18 Jan 2015 23:45:04 +0000 (23:45 +0000)
committerNick Burch <nick@apache.org>
Sun, 18 Jan 2015 23:45:04 +0000 (23:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1652876 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java

index 2c49ed25955b6eac6b569e999fe918d18311637a..6a48bf00056e1864cdb9212625db73f1fcda2bc9 100644 (file)
@@ -407,43 +407,56 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
             columnHelper.setColBestFit(column, true);
         }
     }
-
+    
     /**
-     * Create a new SpreadsheetML drawing. If this sheet already contains a drawing - return that.
+     * Return the sheet's existing drawing, or null if there isn't yet one.
+     * 
+     * Use {@link #createDrawingPatriarch()} to get or create
      *
      * @return a SpreadsheetML drawing
      */
-    @Override
-    public XSSFDrawing createDrawingPatriarch() {
-        XSSFDrawing drawing = null;
+    public XSSFDrawing getDrawingPatriarch() {
         CTDrawing ctDrawing = getCTDrawing();
-        if(ctDrawing == null) {
-            //drawingNumber = #drawings.size() + 1
-            int drawingNumber = getPackagePart().getPackage().getPartsByContentType(XSSFRelation.DRAWINGS.getContentType()).size() + 1;
-            drawing = (XSSFDrawing)createRelationship(XSSFRelation.DRAWINGS, XSSFFactory.getInstance(), drawingNumber);
-            String relId = drawing.getPackageRelationship().getId();
-
-            //add CT_Drawing element which indicates that this sheet contains drawing components built on the drawingML platform.
-            //The relationship Id references the part containing the drawingML definitions.
-            ctDrawing = worksheet.addNewDrawing();
-            ctDrawing.setId(relId);
-        } else {
-            //search the referenced drawing in the list of the sheet's relations
-            for(POIXMLDocumentPart p : getRelations()){
-                if(p instanceof XSSFDrawing) {
+        if (ctDrawing != null) {
+            // Search the referenced drawing in the list of the sheet's relations
+            for (POIXMLDocumentPart p : getRelations()){
+                if (p instanceof XSSFDrawing) {
                     XSSFDrawing dr = (XSSFDrawing)p;
                     String drId = dr.getPackageRelationship().getId();
-                    if(drId.equals(ctDrawing.getId())){
-                        drawing = dr;
-                        break;
+                    if (drId.equals(ctDrawing.getId())){
+                        return dr;
                     }
                     break;
                 }
             }
-            if(drawing == null){
-                logger.log(POILogger.ERROR, "Can't find drawing with id=" + ctDrawing.getId() + " in the list of the sheet's relationships");
-            }
+            logger.log(POILogger.ERROR, "Can't find drawing with id=" + ctDrawing.getId() + " in the list of the sheet's relationships");
         }
+        return null;
+    }
+
+    /**
+     * Create a new SpreadsheetML drawing. If this sheet already contains a drawing - return that.
+     *
+     * @return a SpreadsheetML drawing
+     */
+    @Override
+    public XSSFDrawing createDrawingPatriarch() {
+        CTDrawing ctDrawing = getCTDrawing();
+        if (ctDrawing != null) {
+            return getDrawingPatriarch();
+        }
+        
+        //drawingNumber = #drawings.size() + 1
+        int drawingNumber = getPackagePart().getPackage().getPartsByContentType(XSSFRelation.DRAWINGS.getContentType()).size() + 1;
+        XSSFDrawing drawing = (XSSFDrawing)createRelationship(XSSFRelation.DRAWINGS, XSSFFactory.getInstance(), drawingNumber);
+        String relId = drawing.getPackageRelationship().getId();
+
+        //add CT_Drawing element which indicates that this sheet contains drawing components built on the drawingML platform.
+        //The relationship Id references the part containing the drawingML definitions.
+        ctDrawing = worksheet.addNewDrawing();
+        ctDrawing.setId(relId);
+        
+        // Return the newly created drawing
         return drawing;
     }