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