You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2015/01/19 00:45:04 UTC

svn commit: r1652876 - /poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java

Author: nick
Date: Sun Jan 18 23:45:04 2015
New Revision: 1652876

URL: http://svn.apache.org/r1652876
Log:
For XSSFSheet, add a getDrawingPatriarch() method alongside the existing createDrawingPatriarch() one

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1652876&r1=1652875&r2=1652876&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Sun Jan 18 23:45:04 2015
@@ -407,43 +407,56 @@ public class XSSFSheet extends POIXMLDoc
             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;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org