You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2012/08/10 13:30:44 UTC

svn commit: r1371663 [1/6] - in /poi/trunk: ./ src/java/org/apache/poi/ddf/ src/java/org/apache/poi/hssf/dev/ src/java/org/apache/poi/hssf/model/ src/java/org/apache/poi/hssf/record/ src/java/org/apache/poi/hssf/record/aggregates/ src/java/org/apache/p...

Author: yegor
Date: Fri Aug 10 11:30:42 2012
New Revision: 1371663

URL: http://svn.apache.org/viewvc?rev=1371663&view=rev
Log:
merge GSoC code with trunk

Added:
    poi/trunk/src/java/org/apache/poi/hssf/dev/ReSave.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/java/org/apache/poi/hssf/dev/ReSave.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/java/org/apache/poi/hssf/usermodel/HSSFCombobox.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeTypes.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/java/org/apache/poi/hssf/usermodel/HSSFShapeTypes.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/model/TestEscherRecordFactory.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/TestHSSFAnchor.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/model/TestHSSFAnchor.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestEmbeddedObjects.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestEmbeddedObjects.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPatriarch.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestPatriarch.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestShapeGroup.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestText.java
      - copied unchanged from r1371650, poi/branches/gsoc2012/src/testcases/org/apache/poi/hssf/usermodel/TestText.java
    poi/trunk/test-data/spreadsheet/45129.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/45129.xls
    poi/trunk/test-data/spreadsheet/51675.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/51675.xls
    poi/trunk/test-data/spreadsheet/DrawingAndComments.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/DrawingAndComments.xls
    poi/trunk/test-data/spreadsheet/DrawingContinue.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/DrawingContinue.xls
    poi/trunk/test-data/spreadsheet/SolverContainerAfterSPGR.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/SolverContainerAfterSPGR.xls
    poi/trunk/test-data/spreadsheet/dg-text.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/dg-text.xls
    poi/trunk/test-data/spreadsheet/drawings.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/drawings.xls
    poi/trunk/test-data/spreadsheet/empty.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/empty.xls
    poi/trunk/test-data/spreadsheet/text.xls
      - copied unchanged from r1371650, poi/branches/gsoc2012/test-data/spreadsheet/text.xls
Modified:
    poi/trunk/   (props changed)
    poi/trunk/build.xml
    poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java
    poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java   (contents, props changed)
    poi/trunk/src/java/org/apache/poi/ddf/EscherArrayProperty.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherBoolProperty.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/model/AbstractShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/ComboboxShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/CommentShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/DrawingManager2.java
    poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java
    poi/trunk/src/java/org/apache/poi/hssf/model/LineShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/PolygonShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java
    poi/trunk/src/java/org/apache/poi/hssf/model/TextboxShape.java
    poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/EscherAggregate.java
    poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java
    poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java   (contents, props changed)
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/EscherGraphics.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFAnchor.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFClientAnchor.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFObjectData.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPolygon.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeContainer.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeGroup.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSimpleShape.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDrawingRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/HSSFTestHelper.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java

Propchange: poi/trunk/
------------------------------------------------------------------------------
  Merged /poi/branches/gsoc2012:r1341450-1371650

Modified: poi/trunk/build.xml
URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/build.xml (original)
+++ poi/trunk/build.xml Fri Aug 10 11:30:42 2012
@@ -632,6 +632,7 @@ under the License.
             <syspropertyset refid="junit.properties"/>
             <jvmarg value="${poi.test.locale}"/>
             <jvmarg value="-ea"/>
+            <jvmarg value="-Xmx256m"/>
             <formatter type="plain"/>
             <batchtest todir="${main.reports.test}">
                 <fileset dir="${main.src.test}">

Modified: poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java Fri Aug 10 11:30:42 2012
@@ -16,10 +16,7 @@
 ==================================================================== */
 package org.apache.poi.ddf;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
@@ -140,6 +137,33 @@ public abstract class AbstractEscherOptR
     }
 
     /**
+     * Set an escher property. If a property with given propId already
+     exists it is replaced.
+     *
+     * @param value the property to set.
+     */
+    public void setEscherProperty(EscherProperty value){
+        for ( Iterator<EscherProperty> iterator =
+                      properties.iterator(); iterator.hasNext(); ) {
+            EscherProperty prop = iterator.next();
+            if (prop.getId() == value.getId()){
+                iterator.remove();
+            }
+        }
+        properties.add( value );
+        sortProperties();
+    }
+
+    public void removeEscherProperty(int num){
+        for ( Iterator<EscherProperty> iterator = getEscherProperties().iterator(); iterator.hasNext(); ) {
+            EscherProperty prop = iterator.next();
+            if (prop.getPropertyNumber() == num){
+                iterator.remove();
+            }
+        }
+    }
+
+    /**
      * Retrieve the string representation of this record.
      */
     public String toString()

Modified: poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java Fri Aug 10 11:30:42 2012
@@ -65,8 +65,7 @@ public class DefaultEscherRecordFactory 
         // However, EscherTextboxRecord are containers of records for the
         //  host application, not of other Escher records, so treat them
         //  differently
-        if ( ( options & (short) 0x000F ) == (short) 0x000F
-             && recordId != EscherTextboxRecord.RECORD_ID ) {
+        if (isContainer(options, recordId)) {
             EscherContainerRecord r = new EscherContainerRecord();
             r.setRecordId( recordId );
             r.setOptions( options );
@@ -145,4 +144,17 @@ public class DefaultEscherRecordFactory 
         }
         return result;
     }
+
+    public static boolean isContainer(short options, short recordId){
+        if(recordId >= EscherContainerRecord.DGG_CONTAINER &&  recordId
+                <= EscherContainerRecord.SOLVER_CONTAINER){
+            return true;
+        } else {
+            if (recordId == EscherTextboxRecord.RECORD_ID) {
+                return false;
+            } else {
+                return ( options & (short) 0x000F ) == (short) 0x000F;
+            }
+        }
+    }
 }

Propchange: poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri Aug 10 11:30:42 2012
@@ -0,0 +1,3 @@
+/poi/branches/excelant/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java:1069732-1073692
+/poi/branches/gsoc2012/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java:1341450-1371657
+/poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java:693591-694881,695264-695420,695621,695649-711764

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherArrayProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherArrayProperty.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherArrayProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherArrayProperty.java Fri Aug 10 11:30:42 2012
@@ -62,6 +62,9 @@ public final class EscherArrayProperty e
     }
 
     public int getNumberOfElementsInArray() {
+        if (emptyComplexPart){
+            return 0;
+        }
         return LittleEndian.getUShort(_complexData, 0);
     }
 

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherBoolProperty.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherBoolProperty.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherBoolProperty.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherBoolProperty.java Fri Aug 10 11:30:42 2012
@@ -70,7 +70,7 @@ public class EscherBoolProperty
     public String toXml(String tab){
         StringBuilder builder = new StringBuilder();
         builder.append(tab).append("<").append(getClass().getSimpleName()).append(" id=\"0x").append(HexDump.toHex(getId()))
-                .append("\" name=\"").append(getName()).append("\" blipId=\"")
+                .append("\" name=\"").append(getName()).append("\" simpleValue=\"").append(getPropertyValue()).append("\" blipId=\"")
                 .append(isBlipId()).append("\" value=\"").append(isTrue()).append("\"").append("/>\n");
         return builder.toString();
     }

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java Fri Aug 10 11:30:42 2012
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -38,6 +37,14 @@ public class EscherClientAnchorRecord
     public static final short RECORD_ID = (short) 0xF010;
     public static final String RECORD_DESCRIPTION = "MsofbtClientAnchor";
 
+    /**
+     * bit[0] -  fMove (1 bit): A bit that specifies whether the shape will be kept intact when the cells are moved.
+     * bit[1] - fSize (1 bit): A bit that specifies whether the shape will be kept intact when the cells are resized. If fMove is 1, the value MUST be 1.
+     * bit[2-4] - reserved, MUST be 0 and MUST be ignored
+     * bit[5-15]- Undefined and MUST be ignored.
+     *
+     * it can take values: 0, 2, 3
+     */
     private short field_1_flag;
     private short field_2_col1;
     private short field_3_dx1;

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java Fri Aug 10 11:30:42 2012
@@ -25,6 +25,8 @@ import java.util.NoSuchElementException;
 
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
 
 /**
  * Escher container records store other escher records as children.
@@ -42,6 +44,32 @@ public final class EscherContainerRecord
     public static final short SP_CONTAINER     = (short)0xF004;
     public static final short SOLVER_CONTAINER = (short)0xF005;
 
+    private static POILogger log = POILogFactory.getLogger(EscherContainerRecord.class);
+
+    /**
+     * in case if document contains any charts we have such document structure:
+     * BOF
+     * ...
+     * DrawingRecord
+     * ...
+     * ObjRecord|TxtObjRecord
+     * ...
+     * EOF
+     * ...
+     * BOF(Chart begin)
+     * ...
+     * DrawingRecord
+     * ...
+     * ObjRecord|TxtObjRecord
+     * ...
+     * EOF
+     * So, when we call EscherAggregate.createAggregate() we have not all needed data.
+     * When we got warning "WARNING: " + bytesRemaining + " bytes remaining but no space left"
+     * we should save value of bytesRemaining
+     * and add it to container size when we serialize it
+     */
+    private int _remainingLength;
+
     private final List<EscherRecord> _childRecords = new ArrayList<EscherRecord>();
 
     public int fillFields(byte[] data, int pOffset, EscherRecordFactory recordFactory) {
@@ -56,7 +84,8 @@ public final class EscherContainerRecord
             bytesRemaining -= childBytesWritten;
             addChildRecord(child);
             if (offset >= data.length && bytesRemaining > 0) {
-                System.out.println("WARNING: " + bytesRemaining + " bytes remaining but no space left");
+                _remainingLength = bytesRemaining;
+                log.log(POILogger.WARN, "Not enough Escher data: " + bytesRemaining + " bytes remaining but no space left");
             }
         }
         return bytesWritten;
@@ -74,6 +103,7 @@ public final class EscherContainerRecord
             EscherRecord r = iterator.next();
             remainingBytes += r.getRecordSize();
         }
+        remainingBytes += _remainingLength;
         LittleEndian.putInt(data, offset+4, remainingBytes);
         int pos = offset+8;
         iterator = _childRecords.iterator();

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java Fri Aug 10 11:30:42 2012
@@ -311,7 +311,7 @@ public abstract class EscherRecord {
     protected String formatXmlRecordHeader(String className, String recordId, String version, String instance){
         StringBuilder builder = new StringBuilder();
         builder.append("<").append(className).append(" recordId=\"0x").append(recordId).append("\" version=\"0x")
-                .append(version).append("\" instance=\"0x").append(instance).append("\">\n");
+                .append(version).append("\" instance=\"0x").append(instance).append("\" size=\"").append(getRecordSize()).append("\">\n");
         return builder.toString();
     }
     

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java Fri Aug 10 11:30:42 2012
@@ -119,7 +119,7 @@ public class EscherSpRecord
     public String toXml(String tab) {
         StringBuilder builder = new StringBuilder();
         builder.append(tab).append(formatXmlRecordHeader(getClass().getSimpleName(), HexDump.toHex(getRecordId()), HexDump.toHex(getVersion()), HexDump.toHex(getInstance())))
-                .append(tab).append("\t").append("<ShapeType>").append(HexDump.toHex(getShapeType())).append("</ShapeType>\n")
+                .append(tab).append("\t").append("<ShapeType>0x").append(HexDump.toHex(getShapeType())).append("</ShapeType>\n")
                 .append(tab).append("\t").append("<ShapeId>").append(field_1_shapeId).append("</ShapeId>\n")
                 .append(tab).append("\t").append("<Flags>").append(decodeFlags(field_2_flags) + " (0x" + HexDump.toHex(field_2_flags) + ")").append("</Flags>\n");
         builder.append(tab).append("</").append(getClass().getSimpleName()).append(">\n");

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/AbstractShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/AbstractShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/AbstractShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/AbstractShape.java Fri Aug 10 11:30:42 2012
@@ -26,6 +26,7 @@ import org.apache.poi.hssf.usermodel.*;
  *
  * @author Glen Stampoultzis (glens at apache.org)
  */
+@Deprecated
 public abstract class AbstractShape
 {
     /**

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/ComboboxShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/ComboboxShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/ComboboxShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/ComboboxShape.java Fri Aug 10 11:30:42 2012
@@ -27,6 +27,7 @@ import org.apache.poi.hssf.usermodel.*;
  * 
  * @author Yegor Kozlov
  */
+@Deprecated
 public class ComboboxShape
         extends AbstractShape {
     private EscherContainerRecord spContainer;

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/CommentShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/CommentShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/CommentShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/CommentShape.java Fri Aug 10 11:30:42 2012
@@ -39,6 +39,7 @@ import org.apache.poi.hssf.usermodel.HSS
  *
  * @author Yegor Kozlov
  */
+@Deprecated
 public final class CommentShape extends TextboxShape {
 
     private NoteRecord _note;

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/DrawingManager2.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/DrawingManager2.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/DrawingManager2.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/DrawingManager2.java Fri Aug 10 11:30:42 2012
@@ -112,7 +112,7 @@ public class DrawingManager2
     /**
      * Finds the next available (1 based) drawing group id
      */
-    short findNewDrawingGroupId()
+    public short findNewDrawingGroupId()
     {
         short dgId = 1; 
         while ( drawingGroupExists( dgId ) )
@@ -147,4 +147,7 @@ public class DrawingManager2
         return dgg;
     }
 
+    public void incrementDrawingsSaved(){
+        dgg.setDrawingsSaved(dgg.getDrawingsSaved()+1);
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java Fri Aug 10 11:30:42 2012
@@ -21,43 +21,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.poi.hssf.record.BOFRecord;
-import org.apache.poi.hssf.record.CFHeaderRecord;
-import org.apache.poi.hssf.record.CalcCountRecord;
-import org.apache.poi.hssf.record.CalcModeRecord;
-import org.apache.poi.hssf.record.CellValueRecordInterface;
-import org.apache.poi.hssf.record.ColumnInfoRecord;
-import org.apache.poi.hssf.record.DVALRecord;
-import org.apache.poi.hssf.record.DefaultColWidthRecord;
-import org.apache.poi.hssf.record.DefaultRowHeightRecord;
-import org.apache.poi.hssf.record.DeltaRecord;
-import org.apache.poi.hssf.record.DimensionsRecord;
-import org.apache.poi.hssf.record.DrawingRecord;
-import org.apache.poi.hssf.record.EOFRecord;
-import org.apache.poi.hssf.record.EscherAggregate;
-import org.apache.poi.hssf.record.FeatHdrRecord;
-import org.apache.poi.hssf.record.FeatRecord;
-import org.apache.poi.hssf.record.GridsetRecord;
-import org.apache.poi.hssf.record.GutsRecord;
-import org.apache.poi.hssf.record.IndexRecord;
-import org.apache.poi.hssf.record.IterationRecord;
-import org.apache.poi.hssf.record.MergeCellsRecord;
-import org.apache.poi.hssf.record.NoteRecord;
-import org.apache.poi.hssf.record.ObjRecord;
-import org.apache.poi.hssf.record.PaneRecord;
-import org.apache.poi.hssf.record.PrintGridlinesRecord;
-import org.apache.poi.hssf.record.PrintHeadersRecord;
-import org.apache.poi.hssf.record.Record;
-import org.apache.poi.hssf.record.RecordBase;
-import org.apache.poi.hssf.record.RefModeRecord;
-import org.apache.poi.hssf.record.RowRecord;
-import org.apache.poi.hssf.record.SCLRecord;
-import org.apache.poi.hssf.record.SaveRecalcRecord;
-import org.apache.poi.hssf.record.SelectionRecord;
-import org.apache.poi.hssf.record.TextObjectRecord;
-import org.apache.poi.hssf.record.UncalcedRecord;
-import org.apache.poi.hssf.record.WSBoolRecord;
-import org.apache.poi.hssf.record.WindowTwoRecord;
+import org.apache.poi.hssf.record.*;
 import org.apache.poi.hssf.record.aggregates.ChartSubstreamRecordAggregate;
 import org.apache.poi.hssf.record.aggregates.ColumnInfoRecordsAggregate;
 import org.apache.poi.hssf.record.aggregates.ConditionalFormattingTable;
@@ -387,12 +351,10 @@ public final class InternalSheet {
                 continue;
             }
             if (rb instanceof EscherAggregate){
-                // EscherAggregate is used only as a container for SODRAWING and OBJ record combinations
-                // So, if the container is empty, there is no reason to clone this record
-                // See https://issues.apache.org/bugzilla/show_bug.cgi?id=49529
-                if (0 == rb.getRecordSize()){
-                    continue;
-                }
+                /**
+                 * this record will be removed after reading actual data from EscherAggregate
+                 */
+                rb = new DrawingRecord();
             }
             Record rec = (Record) ((Record) rb).clone();
             clonedRecords.add(rec);
@@ -1523,6 +1485,7 @@ public final class InternalSheet {
      *  if none currently exist
      * @param drawingManager The DrawingManager2 for our workbook
      * @param createIfMissing Should one be created if missing?
+     * @return location of EscherAggregate record. if no EscherAggregate record is found return -1
      */
     public int aggregateDrawingRecords(DrawingManager2 drawingManager, boolean createIfMissing) {
         int loc = findFirstRecordLocBySid(DrawingRecord.sid);
@@ -1533,7 +1496,7 @@ public final class InternalSheet {
                 return -1;
             }
 
-            EscherAggregate aggregate = new EscherAggregate( drawingManager );
+            EscherAggregate aggregate = new EscherAggregate();
             loc = findFirstRecordLocBySid(EscherAggregate.sid);
             if (loc == -1) {
                 loc = findFirstRecordLocBySid( WindowTwoRecord.sid );
@@ -1544,23 +1507,10 @@ public final class InternalSheet {
             return loc;
         }
         List<RecordBase> records = getRecords();
-        EscherAggregate r = EscherAggregate.createAggregate( records, loc, drawingManager );
-        int startloc = loc;
-        while ( loc + 1 < records.size()
-                && records.get( loc ) instanceof DrawingRecord
-                && (records.get( loc + 1 ) instanceof ObjRecord ||
-                    records.get( loc + 1 ) instanceof TextObjectRecord) )
-        {
-            loc += 2;
-            if (records.get( loc ) instanceof NoteRecord) loc ++;
-        }
 
-        int endloc = loc-1;
-        for(int i = 0; i < (endloc - startloc + 1); i++)
-            records.remove(startloc);
-        records.add(startloc, r);
+        EscherAggregate.createAggregate( records, loc, drawingManager );
 
-        return startloc;
+        return loc;
     }
 
     /**

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/LineShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/LineShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/LineShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/LineShape.java Fri Aug 10 11:30:42 2012
@@ -27,6 +27,7 @@ import org.apache.poi.hssf.usermodel.*;
  *
  * @author Glen Stampoultzis (glens at apache.org)
  */
+@Deprecated
 public class LineShape
         extends AbstractShape
 {

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/PolygonShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/PolygonShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/PolygonShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/PolygonShape.java Fri Aug 10 11:30:42 2012
@@ -27,6 +27,7 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.hssf.usermodel.HSSFPolygon;
 import org.apache.poi.util.LittleEndian;
 
+@Deprecated
 public class PolygonShape
         extends AbstractShape
 {
@@ -63,7 +64,7 @@ public class PolygonShape
         spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER );
         spContainer.setOptions( (short) 0x000F );
         sp.setRecordId( EscherSpRecord.RECORD_ID );
-        sp.setOptions( (short) ( ( EscherAggregate.ST_DONUT << 4 ) | 0x2 ) );
+        sp.setOptions( (short) ( ( EscherAggregate.ST_NOT_PRIMATIVE << 4 ) | 0x2 ) );
         sp.setShapeId( shapeId );
         if (hssfShape.getParent() == null)
             sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE );

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java Fri Aug 10 11:30:42 2012
@@ -25,6 +25,7 @@ import org.apache.poi.hssf.record.EndSub
 import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
 import org.apache.poi.hssf.usermodel.HSSFShape;
 
+@Deprecated
 public class SimpleFilledShape
         extends AbstractShape
 {

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/TextboxShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/TextboxShape.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/TextboxShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/TextboxShape.java Fri Aug 10 11:30:42 2012
@@ -28,6 +28,7 @@ import org.apache.poi.hssf.usermodel.*;
  *
  * @author Glen Stampoultzis (glens at apache.org)
  */
+@Deprecated
 public class TextboxShape
         extends AbstractShape
 {

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java?rev=1371663&r1=1371662&r2=1371663&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java Fri Aug 10 11:30:42 2012
@@ -20,24 +20,24 @@ package org.apache.poi.hssf.record;
 import org.apache.poi.util.LittleEndianOutput;
 /**
  * DrawingRecord (0x00EC)<p/>
- *
  */
 public final class DrawingRecord extends StandardRecord {
     public static final short sid = 0x00EC;
 
-	private static final byte[] EMPTY_BYTE_ARRAY = { };
+    private static final byte[] EMPTY_BYTE_ARRAY = {};
 
     private byte[] recordData;
     private byte[] contd;
 
     public DrawingRecord() {
-    	recordData = EMPTY_BYTE_ARRAY;
+        recordData = EMPTY_BYTE_ARRAY;
     }
 
     public DrawingRecord(RecordInputStream in) {
-      recordData = in.readRemainder();
+        recordData = in.readRemainder();
     }
 
+    @Deprecated
     public void processContinueRecord(byte[] record) {
         //don't merge continue record with the drawing record, it must be serialized separately
         contd = record;
@@ -46,6 +46,7 @@ public final class DrawingRecord extends
     public void serialize(LittleEndianOutput out) {
         out.write(recordData);
     }
+
     protected int getDataSize() {
         return recordData.length;
     }
@@ -54,32 +55,39 @@ public final class DrawingRecord extends
         return sid;
     }
 
+    @Deprecated
     public byte[] getData() {
-        if(contd != null) {
-            byte[] newBuffer = new byte[ recordData.length + contd.length ];
-            System.arraycopy( recordData, 0, newBuffer, 0, recordData.length );
-            System.arraycopy( contd, 0, newBuffer, recordData.length, contd.length);
-            return newBuffer;
-        }
+        return recordData;
+    }
+
+    public byte[] getRecordData(){
         return recordData;
     }
 
     public void setData(byte[] thedata) {
-    	if (thedata == null) {
-    		throw new IllegalArgumentException("data must not be null");
-    	}
+        if (thedata == null) {
+            throw new IllegalArgumentException("data must not be null");
+        }
         recordData = thedata;
     }
 
+    /**
+     * Cloning of drawing records must be executed through HSSFPatriarch, because all id's must be changed
+     * @return cloned drawing records
+     */
     public Object clone() {
-    	DrawingRecord rec = new DrawingRecord();
-    	
-    	rec.recordData = recordData.clone();
-    	if (contd != null) {
-	    	// TODO - this code probably never executes
-	    	rec.contd = contd.clone();
-    	}
-    	
-    	return rec;
+        DrawingRecord rec = new DrawingRecord();
+        rec.recordData = recordData.clone();
+        if (contd != null) {
+            // TODO - this code probably never executes
+            rec.contd = contd.clone();
+        }
+
+        return rec;
+    }
+
+    @Override
+    public String toString() {
+        return "DrawingRecord["+recordData.length+"]";
     }
-}
\ No newline at end of file
+}



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