From 8e842262020dc87696f17665cddc5f18e556324b Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sun, 3 Jul 2016 21:54:17 +0000 Subject: [PATCH] #59170 - Remove deprecated classes (POI 3.15) - o.a.p.hssf.model.*Shape classes removed git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751174 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/model/AbstractShape.java | 176 ------------------ .../apache/poi/hssf/model/ComboboxShape.java | 117 ------------ .../apache/poi/hssf/model/CommentShape.java | 147 --------------- .../org/apache/poi/hssf/model/LineShape.java | 121 ------------ .../apache/poi/hssf/model/PictureShape.java | 127 ------------- .../apache/poi/hssf/model/PolygonShape.java | 159 ---------------- .../poi/hssf/model/SimpleFilledShape.java | 128 ------------- .../apache/poi/hssf/model/TextboxShape.java | 168 ----------------- .../poi/hssf/record/LbsDataSubRecord.java | 4 +- .../apache/poi/hssf/usermodel/HSSFShape.java | 7 +- .../poi/hssf/model/HSSFTestModelHelper.java | 40 ---- .../poi/hssf/model/TestDrawingAggregate.java | 36 +++- .../poi/hssf/model/TestDrawingShapes.java | 20 +- .../org/apache/poi/hssf/model/TestShapes.java | 60 ------ .../apache/poi/hssf/usermodel/TestBugs.java | 26 +++ .../poi/hssf/usermodel/TestHSSFComment.java | 40 ++-- .../poi/hssf/usermodel/TestPolygon.java | 130 +++++++------ .../apache/poi/hssf/usermodel/TestText.java | 31 ++- 18 files changed, 180 insertions(+), 1357 deletions(-) delete mode 100644 src/java/org/apache/poi/hssf/model/AbstractShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/ComboboxShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/CommentShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/LineShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/PictureShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/PolygonShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/SimpleFilledShape.java delete mode 100644 src/java/org/apache/poi/hssf/model/TextboxShape.java delete mode 100644 src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java delete mode 100644 src/testcases/org/apache/poi/hssf/model/TestShapes.java diff --git a/src/java/org/apache/poi/hssf/model/AbstractShape.java b/src/java/org/apache/poi/hssf/model/AbstractShape.java deleted file mode 100644 index 1bfbc26d9..000000000 --- a/src/java/org/apache/poi/hssf/model/AbstractShape.java +++ /dev/null @@ -1,176 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.usermodel.*; - -/** - * An abstract shape is the lowlevel model for a shape. - */ -@Deprecated -public abstract class AbstractShape -{ - /** - * Create a new shape object used to create the escher records. - * - * @param hssfShape The simple shape this is based on. - */ - public static AbstractShape createShape( HSSFShape hssfShape, int shapeId ) - { - AbstractShape shape; - if (hssfShape instanceof HSSFComment) - { - shape = new CommentShape( (HSSFComment)hssfShape, shapeId ); - } - else if (hssfShape instanceof HSSFTextbox) - { - shape = new TextboxShape( (HSSFTextbox)hssfShape, shapeId ); - } - else if (hssfShape instanceof HSSFPolygon) - { - shape = new PolygonShape( (HSSFPolygon) hssfShape, shapeId ); - } - else if (hssfShape instanceof HSSFSimpleShape) - { - HSSFSimpleShape simpleShape = (HSSFSimpleShape) hssfShape; - switch ( simpleShape.getShapeType() ) - { - case HSSFSimpleShape.OBJECT_TYPE_PICTURE: - shape = new PictureShape( simpleShape, shapeId ); - break; - case HSSFSimpleShape.OBJECT_TYPE_LINE: - shape = new LineShape( simpleShape, shapeId ); - break; - case HSSFSimpleShape.OBJECT_TYPE_OVAL: - case HSSFSimpleShape.OBJECT_TYPE_RECTANGLE: - shape = new SimpleFilledShape( simpleShape, shapeId ); - break; - case HSSFSimpleShape.OBJECT_TYPE_COMBO_BOX: - shape = new ComboboxShape( simpleShape, shapeId ); - break; - default: - throw new IllegalArgumentException("Do not know how to handle this type of shape"); - } - } - else - { - throw new IllegalArgumentException("Unknown shape type"); - } - EscherSpRecord sp = shape.getSpContainer().getChildById(EscherSpRecord.RECORD_ID); - if (hssfShape.getParent() != null) - sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_CHILD); - return shape; - } - - protected AbstractShape() - { - } - - /** - * @return The shape container and it's children that can represent this - * shape. - */ - public abstract EscherContainerRecord getSpContainer(); - - /** - * @return The object record that is associated with this shape. - */ - public abstract ObjRecord getObjRecord(); - - /** - * Creates an escher anchor record from a HSSFAnchor. - * - * @param userAnchor The high level anchor to convert. - * @return An escher anchor record. - */ - protected EscherRecord createAnchor( HSSFAnchor userAnchor ) - { - return ConvertAnchor.createAnchor(userAnchor); - } - - /** - * Add standard properties to the opt record. These properties effect - * all records. - * - * @param shape The user model shape. - * @param opt The opt record to add the properties to. - * @return The number of options added. - */ - protected int addStandardOptions( HSSFShape shape, EscherOptRecord opt ) - { - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x080000 ) ); -// opt.addEscherProperty( new EscherBoolProperty( EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x080008 ) ); - if ( shape.isNoFill() ) - { - // Wonderful... none of the spec's give any clue as to what these constants mean. - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.FILL__NOFILLHITTEST, 0x00110000 ) ); - } - else - { - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.FILL__NOFILLHITTEST, 0x00010000 ) ); - } - opt.addEscherProperty( new EscherRGBProperty( EscherProperties.FILL__FILLCOLOR, shape.getFillColor() ) ); - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.GROUPSHAPE__PRINT, 0x080000 ) ); - opt.addEscherProperty( new EscherRGBProperty( EscherProperties.LINESTYLE__COLOR, shape.getLineStyleColor() ) ); - int options = 5; - if (shape.getLineWidth() != HSSFShape.LINEWIDTH_DEFAULT) - { - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.LINESTYLE__LINEWIDTH, shape.getLineWidth())); - options++; - } - if (shape.getLineStyle() != HSSFShape.LINESTYLE_SOLID) - { - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.LINESTYLE__LINEDASHING, shape.getLineStyle())); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.LINESTYLE__LINEENDCAPSTYLE, 0)); - if (shape.getLineStyle() == HSSFShape.LINESTYLE_NONE) - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080000)); - else - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080008)); - options += 3; - } - opt.sortProperties(); - return options; // # options added - } - - /** - * Generate id for the CommonObjectDataSubRecord that stands behind this shape - * - *

- * Typically objectId starts with 1, is unique among all Obj record within the worksheet stream - * and increments by 1 for every new shape. - * For most shapes there is a straight relationship between shapeId (generated by DDF) and objectId: - *

- *

- * shapeId is unique and starts with 1024, hence objectId can be derived as shapeId-1024. - *

- *

- * An exception from this rule is the CellComment shape whose objectId start with 1024. - * See {@link CommentShape#getCmoObjectId(int)} - *

- * - * - * - * @param shapeId shape id as generated by drawing manager - * @return objectId object id that will be assigned to the Obj record - */ - int getCmoObjectId(int shapeId){ - return shapeId - 1024; - } -} diff --git a/src/java/org/apache/poi/hssf/model/ComboboxShape.java b/src/java/org/apache/poi/hssf/model/ComboboxShape.java deleted file mode 100644 index 2bfd9ef91..000000000 --- a/src/java/org/apache/poi/hssf/model/ComboboxShape.java +++ /dev/null @@ -1,117 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.*; -import org.apache.poi.hssf.usermodel.*; -import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType; - -/** - * Represents a combobox shape. - */ -@Deprecated -public class ComboboxShape - extends AbstractShape { - private EscherContainerRecord spContainer; - private ObjRecord objRecord; - - /** - * Creates the low evel records for a combobox. - * - * @param hssfShape The highlevel shape. - * @param shapeId The shape id to use for this shape. - */ - ComboboxShape(HSSFSimpleShape hssfShape, int shapeId) { - spContainer = createSpContainer(hssfShape, shapeId); - objRecord = createObjRecord(hssfShape, shapeId); - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord(HSSFSimpleShape shape, int shapeId) { - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType(HSSFSimpleShape.OBJECT_TYPE_COMBO_BOX); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked(true); - c.setPrintable(false); - c.setAutofill(true); - c.setAutoline(false); - - FtCblsSubRecord f = new FtCblsSubRecord(); - - LbsDataSubRecord l = LbsDataSubRecord.newAutoFilterInstance(); - - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord(c); - obj.addSubRecord(f); - obj.addSubRecord(l); - obj.addSubRecord(e); - - return obj; - } - - /** - * Generates the escher shape records for this shape. - */ - private EscherContainerRecord createSpContainer(HSSFSimpleShape shape, int shapeId) { - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherClientDataRecord clientData = new EscherClientDataRecord(); - - spContainer.setRecordId(EscherContainerRecord.SP_CONTAINER); - spContainer.setOptions((short) 0x000F); - sp.setRecordId(EscherSpRecord.RECORD_ID); - sp.setOptions((short) ((EscherAggregate.ST_HOSTCONTROL << 4) | 0x2)); - - sp.setShapeId(shapeId); - sp.setFlags(EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE); - opt.setRecordId(EscherOptRecord.RECORD_ID); - opt.addEscherProperty(new EscherBoolProperty(EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 17039620)); - opt.addEscherProperty(new EscherBoolProperty(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 0x00080008)); - opt.addEscherProperty(new EscherBoolProperty(EscherProperties.LINESTYLE__NOLINEDRAWDASH, 0x00080000)); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GROUPSHAPE__PRINT, 0x00020000)); - - HSSFClientAnchor userAnchor = (HSSFClientAnchor) shape.getAnchor(); - userAnchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE); - EscherRecord anchor = createAnchor(userAnchor); - clientData.setRecordId(EscherClientDataRecord.RECORD_ID); - clientData.setOptions((short) 0x0000); - - spContainer.addChildRecord(sp); - spContainer.addChildRecord(opt); - spContainer.addChildRecord(anchor); - spContainer.addChildRecord(clientData); - - return spContainer; - } - - public EscherContainerRecord getSpContainer() { - return spContainer; - } - - public ObjRecord getObjRecord() { - return objRecord; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/CommentShape.java b/src/java/org/apache/poi/hssf/model/CommentShape.java deleted file mode 100644 index ba1fad977..000000000 --- a/src/java/org/apache/poi/hssf/model/CommentShape.java +++ /dev/null @@ -1,147 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.model; - -import java.util.Iterator; -import java.util.List; - -import org.apache.poi.ddf.EscherOptRecord; -import org.apache.poi.ddf.EscherProperties; -import org.apache.poi.ddf.EscherProperty; -import org.apache.poi.ddf.EscherSimpleProperty; -import org.apache.poi.hssf.record.CommonObjectDataSubRecord; -import org.apache.poi.hssf.record.NoteRecord; -import org.apache.poi.hssf.record.NoteStructureSubRecord; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.record.SubRecord; -import org.apache.poi.hssf.usermodel.HSSFComment; -import org.apache.poi.hssf.usermodel.HSSFShape; - -/** - * Represents a cell comment. - * This class converts highlevel model data from HSSFComment - * to low-level records. - */ -@Deprecated -public final class CommentShape extends TextboxShape { - - private NoteRecord _note; - - /** - * Creates the low-level records for a comment. - * - * @param hssfShape The highlevel shape. - * @param shapeId The shape id to use for this shape. - */ - public CommentShape( HSSFComment hssfShape, int shapeId ) - { - super(hssfShape, shapeId); - - _note = createNoteRecord(hssfShape, shapeId); - - ObjRecord obj = getObjRecord(); - List records = obj.getSubRecords(); - int cmoIdx = 0; - for (int i = 0; i < records.size(); i++) { - Object r = records.get(i); - - if (r instanceof CommonObjectDataSubRecord){ - //modify autofill attribute inherited from TextObjectRecord - CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord)r; - cmo.setAutofill(false); - cmoIdx = i; - } - } - //add NoteStructure sub record - //we don't know it's format, for now the record data is empty - NoteStructureSubRecord u = new NoteStructureSubRecord(); - obj.addSubRecord(cmoIdx+1, u); - } - - /** - * Creates the low level NoteRecord - * which holds the comment attributes. - */ - private NoteRecord createNoteRecord( HSSFComment shape, int shapeId ) - { - NoteRecord note = new NoteRecord(); - note.setColumn(shape.getColumn()); - note.setRow(shape.getRow()); - note.setFlags(shape.isVisible() ? NoteRecord.NOTE_VISIBLE : NoteRecord.NOTE_HIDDEN); - note.setShapeId(shapeId); - note.setAuthor(shape.getAuthor() == null ? "" : shape.getAuthor()); - return note; - } - - /** - * Sets standard escher options for a comment. - * This method is responsible for setting default background, - * shading and other comment properties. - * - * @param shape The highlevel shape. - * @param opt The escher records holding the proerties - * @return number of escher options added - */ - @Override - protected int addStandardOptions( HSSFShape shape, EscherOptRecord opt ) - { - super.addStandardOptions(shape, opt); - - //remove unnecessary properties inherited from TextboxShape - List props = opt.getEscherProperties(); - for (Iterator iterator = props.iterator(); iterator.hasNext(); ) { - EscherProperty prop = iterator.next(); - switch (prop.getId()){ - case EscherProperties.TEXT__TEXTLEFT: - case EscherProperties.TEXT__TEXTRIGHT: - case EscherProperties.TEXT__TEXTTOP: - case EscherProperties.TEXT__TEXTBOTTOM: - case EscherProperties.GROUPSHAPE__PRINT: - case EscherProperties.FILL__FILLBACKCOLOR: - case EscherProperties.LINESTYLE__COLOR: - iterator.remove(); - break; - default: - break; - } - } - - HSSFComment comment = (HSSFComment)shape; - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.GROUPSHAPE__PRINT, comment.isVisible() ? 0x000A0000 : 0x000A0002) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.SHADOWSTYLE__SHADOWOBSURED, 0x00030003 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.SHADOWSTYLE__COLOR, 0x00000000 ) ); - opt.sortProperties(); - return opt.getEscherProperties().size(); // # options added - } - - /** - * Return the NoteRecord holding the comment attributes - * - * @return NoteRecord holding the comment attributes - */ - public NoteRecord getNoteRecord() - { - return _note; - } - - @Override - int getCmoObjectId(int shapeId){ - return shapeId; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/LineShape.java b/src/java/org/apache/poi/hssf/model/LineShape.java deleted file mode 100644 index d9f6e6371..000000000 --- a/src/java/org/apache/poi/hssf/model/LineShape.java +++ /dev/null @@ -1,121 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.*; -import org.apache.poi.hssf.usermodel.*; - -/** - * Represents a line shape and creates all the line specific low level records. - */ -@Deprecated -public class LineShape - extends AbstractShape -{ - private EscherContainerRecord spContainer; - private ObjRecord objRecord; - - /** - * Creates the line shape from the highlevel user shape. All low level - * records are created at this point. - * - * @param hssfShape The user model shape. - * @param shapeId The identifier to use for this shape. - */ - LineShape( HSSFSimpleShape hssfShape, int shapeId ) - { - spContainer = createSpContainer(hssfShape, shapeId); - objRecord = createObjRecord(hssfShape, shapeId); - } - - /** - * Creates the lowerlevel escher records for this shape. - */ - private EscherContainerRecord createSpContainer(HSSFSimpleShape hssfShape, int shapeId) - { - HSSFShape shape = hssfShape; - - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherClientDataRecord clientData = new EscherClientDataRecord(); - - spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER ); - spContainer.setOptions( (short) 0x000F ); - sp.setRecordId( EscherSpRecord.RECORD_ID ); - sp.setOptions( (short) ( (EscherAggregate.ST_LINE << 4) | 0x2 ) ); - - sp.setShapeId( shapeId ); - sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - opt.setRecordId( EscherOptRecord.RECORD_ID ); - opt.addEscherProperty( new EscherShapePathProperty( EscherProperties.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX ) ); - opt.addEscherProperty( new EscherBoolProperty( EscherProperties.LINESTYLE__NOLINEDRAWDASH, 1048592 ) ); - addStandardOptions(shape, opt); - HSSFAnchor userAnchor = shape.getAnchor(); - if (userAnchor.isHorizontallyFlipped()) - sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ); - if (userAnchor.isVerticallyFlipped()) - sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT); - EscherRecord anchor = createAnchor(userAnchor); - clientData.setRecordId( EscherClientDataRecord.RECORD_ID ); - clientData.setOptions( (short) 0x0000 ); - - spContainer.addChildRecord(sp); - spContainer.addChildRecord(opt); - spContainer.addChildRecord(anchor); - spContainer.addChildRecord(clientData); - - return spContainer; - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord(HSSFShape hssfShape, int shapeId) - { - HSSFShape shape = hssfShape; - - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType((short) ((HSSFSimpleShape)shape).getShapeType()); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked(true); - c.setPrintable(true); - c.setAutofill(true); - c.setAutoline(true); - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord(c); - obj.addSubRecord(e); - - return obj; - } - - public EscherContainerRecord getSpContainer() - { - return spContainer; - } - - public ObjRecord getObjRecord() - { - return objRecord; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/PictureShape.java b/src/java/org/apache/poi/hssf/model/PictureShape.java deleted file mode 100644 index af8e76931..000000000 --- a/src/java/org/apache/poi/hssf/model/PictureShape.java +++ /dev/null @@ -1,127 +0,0 @@ - -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.*; -import org.apache.poi.hssf.usermodel.*; - -/** - * Represents a picture shape and creates all specific low level records. - * @deprecated 3.15 beta 2. Use {@link HSSFPicture} instead. - * This should have been deprecated in r1364547 (POI 3.9) with the other AbstractShape deprecations. - */ -@Deprecated -public class PictureShape - extends AbstractShape -{ - private EscherContainerRecord spContainer; - private ObjRecord objRecord; - - /** - * Creates the line shape from the highlevel user shape. All low level - * records are created at this point. - * - * @param hssfShape The user model shape. - * @param shapeId The identifier to use for this shape. - */ - PictureShape( HSSFSimpleShape hssfShape, int shapeId ) - { - spContainer = createSpContainer(hssfShape, shapeId); - objRecord = createObjRecord(hssfShape, shapeId); - } - - /** - * Creates the lowerlevel escher records for this shape. - */ - private EscherContainerRecord createSpContainer(HSSFSimpleShape hssfShape, int shapeId) - { - HSSFPicture shape = (HSSFPicture) hssfShape; - - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherRecord anchor; - EscherClientDataRecord clientData = new EscherClientDataRecord(); - - spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER ); - spContainer.setOptions( (short) 0x000F ); - sp.setRecordId( EscherSpRecord.RECORD_ID ); - sp.setOptions( (short) ( (EscherAggregate.ST_PICTUREFRAME << 4) | 0x2 ) ); - - sp.setShapeId( shapeId ); - sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - opt.setRecordId( EscherOptRecord.RECORD_ID ); -// opt.addEscherProperty( new EscherBoolProperty( EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 0x00800080 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.BLIP__BLIPTODISPLAY, false, true, shape.getPictureIndex() ) ); -// opt.addEscherProperty( new EscherComplexProperty( EscherProperties.BLIP__BLIPFILENAME, true, new byte[] { (byte)0x74, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x00, (byte)0x00 } ) ); -// opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.FILL__FILLTYPE, 0x00000003 ) ); - addStandardOptions(shape, opt); - HSSFAnchor userAnchor = shape.getAnchor(); - if (userAnchor.isHorizontallyFlipped()) - sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ); - if (userAnchor.isVerticallyFlipped()) - sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT); - anchor = createAnchor(userAnchor); - clientData.setRecordId( EscherClientDataRecord.RECORD_ID ); - clientData.setOptions( (short) 0x0000 ); - - spContainer.addChildRecord(sp); - spContainer.addChildRecord(opt); - spContainer.addChildRecord(anchor); - spContainer.addChildRecord(clientData); - - return spContainer; - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord(HSSFShape hssfShape, int shapeId) - { - HSSFShape shape = hssfShape; - - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType((short) ((HSSFSimpleShape)shape).getShapeType()); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked(true); - c.setPrintable(true); - c.setAutofill(true); - c.setAutoline(true); - c.setReserved2( 0x0 ); - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord(c); - obj.addSubRecord(e); - - return obj; - } - - public EscherContainerRecord getSpContainer() - { - return spContainer; - } - - public ObjRecord getObjRecord() - { - return objRecord; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/PolygonShape.java b/src/java/org/apache/poi/hssf/model/PolygonShape.java deleted file mode 100644 index 2d7b724a3..000000000 --- a/src/java/org/apache/poi/hssf/model/PolygonShape.java +++ /dev/null @@ -1,159 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.record.EscherAggregate; -import org.apache.poi.hssf.record.CommonObjectDataSubRecord; -import org.apache.poi.hssf.record.EndSubRecord; -import org.apache.poi.hssf.usermodel.HSSFShape; -import org.apache.poi.hssf.usermodel.HSSFPolygon; -import org.apache.poi.util.LittleEndian; - -@Deprecated -public class PolygonShape - extends AbstractShape -{ - public final static short OBJECT_TYPE_MICROSOFT_OFFICE_DRAWING = 30; - - private EscherContainerRecord spContainer; - private ObjRecord objRecord; - - /** - * Creates the low evel records for an polygon. - * - * @param hssfShape The highlevel shape. - * @param shapeId The shape id to use for this shape. - */ - PolygonShape( HSSFPolygon hssfShape, int shapeId ) - { - spContainer = createSpContainer( hssfShape, shapeId ); - objRecord = createObjRecord( hssfShape, shapeId ); - } - - /** - * Generates the shape records for this shape. - * - */ - private EscherContainerRecord createSpContainer( HSSFPolygon hssfShape, int shapeId ) - { - HSSFShape shape = hssfShape; - - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherClientDataRecord clientData = new EscherClientDataRecord(); - - spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER ); - spContainer.setOptions( (short) 0x000F ); - sp.setRecordId( EscherSpRecord.RECORD_ID ); - sp.setOptions( (short) ( ( EscherAggregate.ST_NOT_PRIMATIVE << 4 ) | 0x2 ) ); - sp.setShapeId( shapeId ); - if (hssfShape.getParent() == null) - sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - else - sp.setFlags( EscherSpRecord.FLAG_CHILD | EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - opt.setRecordId( EscherOptRecord.RECORD_ID ); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.TRANSFORM__ROTATION, false, false, 0)); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__RIGHT, false, false, hssfShape.getDrawAreaWidth())); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__BOTTOM, false, false, hssfShape.getDrawAreaHeight())); - opt.addEscherProperty(new EscherShapePathProperty(EscherProperties.GEOMETRY__SHAPEPATH, EscherShapePathProperty.COMPLEX)); - EscherArrayProperty verticesProp = new EscherArrayProperty(EscherProperties.GEOMETRY__VERTICES, false, new byte[0] ); - verticesProp.setNumberOfElementsInArray(hssfShape.getXPoints().length+1); - verticesProp.setNumberOfElementsInMemory(hssfShape.getXPoints().length+1); - verticesProp.setSizeOfElements(0xFFF0); - for (int i = 0; i < hssfShape.getXPoints().length; i++) - { - byte[] data = new byte[4]; - LittleEndian.putShort(data, 0, (short)hssfShape.getXPoints()[i]); - LittleEndian.putShort(data, 2, (short)hssfShape.getYPoints()[i]); - verticesProp.setElement(i, data); - } - int point = hssfShape.getXPoints().length; - byte[] data = new byte[4]; - LittleEndian.putShort(data, 0, (short)hssfShape.getXPoints()[0]); - LittleEndian.putShort(data, 2, (short)hssfShape.getYPoints()[0]); - verticesProp.setElement(point, data); - opt.addEscherProperty(verticesProp); - EscherArrayProperty segmentsProp = new EscherArrayProperty(EscherProperties.GEOMETRY__SEGMENTINFO, false, null ); - segmentsProp.setSizeOfElements(0x0002); - segmentsProp.setNumberOfElementsInArray(hssfShape.getXPoints().length * 2 + 4); - segmentsProp.setNumberOfElementsInMemory(hssfShape.getXPoints().length * 2 + 4); - segmentsProp.setElement(0, new byte[] { (byte)0x00, (byte)0x40 } ); - segmentsProp.setElement(1, new byte[] { (byte)0x00, (byte)0xAC } ); - for (int i = 0; i < hssfShape.getXPoints().length; i++) - { - segmentsProp.setElement(2 + i * 2, new byte[] { (byte)0x01, (byte)0x00 } ); - segmentsProp.setElement(3 + i * 2, new byte[] { (byte)0x00, (byte)0xAC } ); - } - segmentsProp.setElement(segmentsProp.getNumberOfElementsInArray() - 2, new byte[] { (byte)0x01, (byte)0x60 } ); - segmentsProp.setElement(segmentsProp.getNumberOfElementsInArray() - 1, new byte[] { (byte)0x00, (byte)0x80 } ); - opt.addEscherProperty(segmentsProp); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.GEOMETRY__FILLOK, false, false, 0x00010001)); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINESTARTARROWHEAD, false, false, 0x0)); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEENDARROWHEAD, false, false, 0x0)); - opt.addEscherProperty(new EscherSimpleProperty(EscherProperties.LINESTYLE__LINEENDCAPSTYLE, false, false, 0x0)); - - addStandardOptions(shape, opt); - - EscherRecord anchor = createAnchor( shape.getAnchor() ); - clientData.setRecordId( EscherClientDataRecord.RECORD_ID ); - clientData.setOptions( (short) 0x0000 ); - - spContainer.addChildRecord( sp ); - spContainer.addChildRecord( opt ); - spContainer.addChildRecord( anchor ); - spContainer.addChildRecord( clientData ); - - return spContainer; - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord( HSSFShape hssfShape, int shapeId ) - { - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType( OBJECT_TYPE_MICROSOFT_OFFICE_DRAWING ); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked( true ); - c.setPrintable( true ); - c.setAutofill( true ); - c.setAutoline( true ); - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord( c ); - obj.addSubRecord( e ); - - return obj; - } - - public EscherContainerRecord getSpContainer() - { - return spContainer; - } - - public ObjRecord getObjRecord() - { - return objRecord; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java b/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java deleted file mode 100644 index 1763b9d56..000000000 --- a/src/java/org/apache/poi/hssf/model/SimpleFilledShape.java +++ /dev/null @@ -1,128 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.record.EscherAggregate; -import org.apache.poi.hssf.record.CommonObjectDataSubRecord; -import org.apache.poi.hssf.record.EndSubRecord; -import org.apache.poi.hssf.usermodel.HSSFSimpleShape; -import org.apache.poi.hssf.usermodel.HSSFShape; - -@Deprecated -public class SimpleFilledShape - extends AbstractShape -{ - private EscherContainerRecord spContainer; - private ObjRecord objRecord; - - /** - * Creates the low evel records for an oval. - * - * @param hssfShape The highlevel shape. - * @param shapeId The shape id to use for this shape. - */ - SimpleFilledShape( HSSFSimpleShape hssfShape, int shapeId ) - { - spContainer = createSpContainer( hssfShape, shapeId ); - objRecord = createObjRecord( hssfShape, shapeId ); - } - - /** - * Generates the shape records for this shape. - * - * @param hssfShape - * @param shapeId - */ - private EscherContainerRecord createSpContainer( HSSFSimpleShape hssfShape, int shapeId ) - { - HSSFShape shape = hssfShape; - - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherClientDataRecord clientData = new EscherClientDataRecord(); - - spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER ); - spContainer.setOptions( (short) 0x000F ); - sp.setRecordId( EscherSpRecord.RECORD_ID ); - short shapeType = objTypeToShapeType( hssfShape.getShapeType() ); - sp.setOptions( (short) ( ( shapeType << 4 ) | 0x2 ) ); - sp.setShapeId( shapeId ); - sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - opt.setRecordId( EscherOptRecord.RECORD_ID ); - addStandardOptions(shape, opt); - EscherRecord anchor = createAnchor( shape.getAnchor() ); - clientData.setRecordId( EscherClientDataRecord.RECORD_ID ); - clientData.setOptions( (short) 0x0000 ); - - spContainer.addChildRecord( sp ); - spContainer.addChildRecord( opt ); - spContainer.addChildRecord( anchor ); - spContainer.addChildRecord( clientData ); - - return spContainer; - } - - private short objTypeToShapeType( int objType ) - { - short shapeType; - if (objType == HSSFSimpleShape.OBJECT_TYPE_OVAL) - shapeType = EscherAggregate.ST_ELLIPSE; - else if (objType == HSSFSimpleShape.OBJECT_TYPE_RECTANGLE) - shapeType = EscherAggregate.ST_RECTANGLE; - else - throw new IllegalArgumentException("Unable to handle an object of this type"); - return shapeType; - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord( HSSFShape hssfShape, int shapeId ) - { - HSSFShape shape = hssfShape; - - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType( (short) ( (HSSFSimpleShape) shape ).getShapeType() ); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked( true ); - c.setPrintable( true ); - c.setAutofill( true ); - c.setAutoline( true ); - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord( c ); - obj.addSubRecord( e ); - - return obj; - } - - public EscherContainerRecord getSpContainer() - { - return spContainer; - } - - public ObjRecord getObjRecord() - { - return objRecord; - } - -} diff --git a/src/java/org/apache/poi/hssf/model/TextboxShape.java b/src/java/org/apache/poi/hssf/model/TextboxShape.java deleted file mode 100644 index d4379fd3a..000000000 --- a/src/java/org/apache/poi/hssf/model/TextboxShape.java +++ /dev/null @@ -1,168 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - - -package org.apache.poi.hssf.model; - -import org.apache.poi.ddf.*; -import org.apache.poi.hssf.record.*; -import org.apache.poi.hssf.usermodel.*; - -/** - * Represents an textbox shape and converts between the highlevel records - * and lowlevel records for an oval. - */ -@Deprecated -public class TextboxShape - extends AbstractShape -{ - private EscherContainerRecord spContainer; - private TextObjectRecord textObjectRecord; - private ObjRecord objRecord; - private EscherTextboxRecord escherTextbox; - - /** - * Creates the low evel records for an textbox. - * - * @param hssfShape The highlevel shape. - * @param shapeId The shape id to use for this shape. - */ - TextboxShape( HSSFTextbox hssfShape, int shapeId ) - { - spContainer = createSpContainer( hssfShape, shapeId ); - objRecord = createObjRecord( hssfShape, shapeId ); - textObjectRecord = createTextObjectRecord( hssfShape, shapeId ); - } - - /** - * Creates the low level OBJ record for this shape. - */ - private ObjRecord createObjRecord( HSSFTextbox hssfShape, int shapeId ) - { - HSSFShape shape = hssfShape; - - ObjRecord obj = new ObjRecord(); - CommonObjectDataSubRecord c = new CommonObjectDataSubRecord(); - c.setObjectType( (short) ( (HSSFSimpleShape) shape ).getShapeType() ); - c.setObjectId( getCmoObjectId(shapeId) ); - c.setLocked( true ); - c.setPrintable( true ); - c.setAutofill( true ); - c.setAutoline( true ); - EndSubRecord e = new EndSubRecord(); - - obj.addSubRecord( c ); - obj.addSubRecord( e ); - - return obj; - } - - /** - * Generates the escher shape records for this shape. - * - * @param hssfShape - * @param shapeId - */ - private EscherContainerRecord createSpContainer( HSSFTextbox hssfShape, int shapeId ) - { - HSSFTextbox shape = hssfShape; - - EscherContainerRecord spContainer = new EscherContainerRecord(); - EscherSpRecord sp = new EscherSpRecord(); - EscherOptRecord opt = new EscherOptRecord(); - EscherClientDataRecord clientData = new EscherClientDataRecord(); - escherTextbox = new EscherTextboxRecord(); - - spContainer.setRecordId( EscherContainerRecord.SP_CONTAINER ); - spContainer.setOptions( (short) 0x000F ); - sp.setRecordId( EscherSpRecord.RECORD_ID ); - sp.setOptions( (short) ( ( EscherAggregate.ST_TEXTBOX << 4 ) | 0x2 ) ); - - sp.setShapeId( shapeId ); - sp.setFlags( EscherSpRecord.FLAG_HAVEANCHOR | EscherSpRecord.FLAG_HASSHAPETYPE ); - opt.setRecordId( EscherOptRecord.RECORD_ID ); - // opt.addEscherProperty( new EscherBoolProperty( EscherProperties.PROTECTION__LOCKAGAINSTGROUPING, 262144 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__TEXTID, 0 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__TEXTLEFT, shape.getMarginLeft() ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__TEXTRIGHT, shape.getMarginRight() ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__TEXTBOTTOM, shape.getMarginBottom() ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__TEXTTOP, shape.getMarginTop() ) ); - - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__WRAPTEXT, 0 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.TEXT__ANCHORTEXT, 0 ) ); - opt.addEscherProperty( new EscherSimpleProperty( EscherProperties.GROUPSHAPE__PRINT, 0x00080000 ) ); - - addStandardOptions( shape, opt ); - HSSFAnchor userAnchor = shape.getAnchor(); - // if (userAnchor.isHorizontallyFlipped()) - // sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ); - // if (userAnchor.isVerticallyFlipped()) - // sp.setFlags(sp.getFlags() | EscherSpRecord.FLAG_FLIPVERT); - EscherRecord anchor = createAnchor( userAnchor ); - clientData.setRecordId( EscherClientDataRecord.RECORD_ID ); - clientData.setOptions( (short) 0x0000 ); - escherTextbox.setRecordId( EscherTextboxRecord.RECORD_ID ); - escherTextbox.setOptions( (short) 0x0000 ); - - spContainer.addChildRecord( sp ); - spContainer.addChildRecord( opt ); - spContainer.addChildRecord( anchor ); - spContainer.addChildRecord( clientData ); - spContainer.addChildRecord( escherTextbox ); - - return spContainer; - } - - /** - * Textboxes also have an extra TXO record associated with them that most - * other shapes dont have. - */ - private TextObjectRecord createTextObjectRecord( HSSFTextbox hssfShape, int shapeId ) - { - HSSFTextbox shape = hssfShape; - - TextObjectRecord obj = new TextObjectRecord(); - obj.setHorizontalTextAlignment(hssfShape.getHorizontalAlignment()); - obj.setVerticalTextAlignment(hssfShape.getVerticalAlignment()); - obj.setTextLocked(true); - obj.setTextOrientation(TextObjectRecord.TEXT_ORIENTATION_NONE); - obj.setStr(shape.getString()); - - return obj; - } - - public EscherContainerRecord getSpContainer() - { - return spContainer; - } - - public ObjRecord getObjRecord() - { - return objRecord; - } - - public TextObjectRecord getTextObjectRecord() - { - return textObjectRecord; - } - - public EscherRecord getEscherTextbox() - { - return escherTextbox; - } - -} diff --git a/src/java/org/apache/poi/hssf/record/LbsDataSubRecord.java b/src/java/org/apache/poi/hssf/record/LbsDataSubRecord.java index 91b9fb752..5e91b18e7 100644 --- a/src/java/org/apache/poi/hssf/record/LbsDataSubRecord.java +++ b/src/java/org/apache/poi/hssf/record/LbsDataSubRecord.java @@ -160,7 +160,7 @@ public class LbsDataSubRecord extends SubRecord { /** * * @return a new instance of LbsDataSubRecord to construct auto-filters - * @see org.apache.poi.hssf.model.ComboboxShape#createObjRecord(org.apache.poi.hssf.usermodel.HSSFSimpleShape, int) + * @see org.apache.poi.hssf.usermodel.HSSFCombobox */ public static LbsDataSubRecord newAutoFilterInstance(){ LbsDataSubRecord lbs = new LbsDataSubRecord(); @@ -330,7 +330,7 @@ public class LbsDataSubRecord extends SubRecord { /** * a string that specifies the current string value in the dropdown */ - private String _str; + private final String _str; /** * Optional, undefined and MUST be ignored. diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java b/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java index dbdd74154..dc31858fe 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFShape.java @@ -143,7 +143,12 @@ public abstract class HSSFShape { return _objRecord; } - protected EscherOptRecord getOptRecord() { + /** + * Return the low-level EscherOptRecord to read/modify not yet wrapped escher properties + * + * @return the low-level EscherOptRecord + */ + public EscherOptRecord getOptRecord() { return _optRecord; } diff --git a/src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java b/src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java deleted file mode 100644 index 10acb70e7..000000000 --- a/src/testcases/org/apache/poi/hssf/model/HSSFTestModelHelper.java +++ /dev/null @@ -1,40 +0,0 @@ -/* ==================================================================== - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -==================================================================== */ - -package org.apache.poi.hssf.model; - -import org.apache.poi.hssf.usermodel.HSSFComment; -import org.apache.poi.hssf.usermodel.HSSFPolygon; -import org.apache.poi.hssf.usermodel.HSSFTextbox; - -/** - * @author Evgeniy Berlog - * @date 25.06.12 - */ -public class HSSFTestModelHelper { - public static TextboxShape createTextboxShape(int shapeId, HSSFTextbox textbox){ - return new TextboxShape(textbox, shapeId); - } - - public static CommentShape createCommentShape(int shapeId, HSSFComment comment){ - return new CommentShape(comment, shapeId); - } - - public static PolygonShape createPolygonShape(int shapeId, HSSFPolygon polygon){ - return new PolygonShape(polygon, shapeId); - } -} diff --git a/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java b/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java index df03e33fa..70e7c7db6 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java +++ b/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java @@ -224,8 +224,7 @@ public class TestDrawingAggregate { "H4sIAAAAAAAAAGWOOw7CQAxE32YTsSRIWSgQJSUloqSm5g4ICURBg+iBK3APGi6wBWeh9xGYbEps2WON"+ "P+OWwpYeIsECMFC8S2jxNvMdlrYQ5xha5N8K6ryHdir6+avwOer5l3hq2NPYWuWN0n1dIsgfbgshuSj1"+ "+2eqbvLdxQ0ndhy5KJ/lc1ZZK9okY5X/gSbrHZTH1vE/ozagTcwAAAA="; - byte[] base64Bytes = DatatypeConverter.parseBase64Binary(data); - byte[] dgBytes = IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(base64Bytes))); + byte[] dgBytes = decompress(data); List records = new ArrayList(); EscherRecordFactory recordFactory = new DefaultEscherRecordFactory(); @@ -725,8 +724,7 @@ public class TestDrawingAggregate { "IppKQdVys+cLtUY6Un0+hI2Z0wMzAxO8Lr0LbaILk8WtNsxpaFYMrTjC22723OH5GFkUi+ux8An2Hi0F"+ "fvcr1v8aFU6POn+OCqfj4ffS/e+pcOEMKhABrCdUAAPhwB+pQHYGFcT/BBUEz6LC/wGpc+eRNSkAAA=="; - byte[] base64Bytes = DatatypeConverter.parseBase64Binary(data); - byte[] dgBytes = IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(base64Bytes))); + byte[] dgBytes = decompress(data); List dgRecords = RecordFactory.createRecords(new ByteArrayInputStream(dgBytes)); assertEquals(20, dgRecords.size()); @@ -904,8 +902,7 @@ public class TestDrawingAggregate { "p9IQmzVDjm0LdSLqeHM8ILiJRsdoNYS93WyEhi7IOdKXZLTCvCLifxTMEi+snNzAtfevk8DpkejvSeB0"+ "BPza/oPKABD5z4SARKQEELP1WQsFMc+QwP8ATkmhK404AAA="; - byte[] base64Bytes = DatatypeConverter.parseBase64Binary(data); - byte[] dgBytes = IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(base64Bytes))); + byte[] dgBytes = decompress(data); List dgRecords = RecordFactory.createRecords(new ByteArrayInputStream(dgBytes)); assertEquals(14, dgRecords.size()); @@ -950,4 +947,31 @@ public class TestDrawingAggregate { assertTrue("drawing data brefpore and after save is different", Arrays.equals(dgBytes, dgBytesAfterSave)); } + + /** + * Decompress previously gziped/base64ed data + * + * @param data the gziped/base64ed data + * @return the raw bytes + * @throws IOException if you copy and pasted the data wrong + */ + public static byte[] decompress(String data) throws IOException { + byte[] base64Bytes = DatatypeConverter.parseBase64Binary(data); + return IOUtils.toByteArray(new GZIPInputStream(new ByteArrayInputStream(base64Bytes))); + } + + /** + * Compress raw data for test runs - usually called while debugging :) + * + * @param data the raw data + * @return the gziped/base64ed data as String + * @throws IOException usually not ... + */ + public static String compress(byte[] data) throws IOException { + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.util.zip.GZIPOutputStream gz = new java.util.zip.GZIPOutputStream(bos); + gz.write(data); + gz.finish(); + return DatatypeConverter.printBase64Binary(bos.toByteArray()); + } } diff --git a/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java b/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java index b21806a57..7c8178333 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java +++ b/src/testcases/org/apache/poi/hssf/model/TestDrawingShapes.java @@ -20,6 +20,7 @@ package org.apache.poi.hssf.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; @@ -103,23 +104,14 @@ public class TestDrawingShapes { assertEquals(HSSFShape.LINEWIDTH_DEFAULT, shape.getLineWidth()); assertEquals(HSSFShape.LINESTYLE_SOLID, shape.getLineStyle()); assertFalse(shape.isNoFill()); - - AbstractShape sp = AbstractShape.createShape(shape, 1); - EscherContainerRecord spContainer = sp.getSpContainer(); - EscherOptRecord opt = - spContainer.getChildById(EscherOptRecord.RECORD_ID); + + EscherOptRecord opt = shape.getOptRecord(); assertEquals(7, opt.getEscherProperties().size()); - assertTrue(((EscherBoolProperty) opt.lookup(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE)).isTrue()); - assertEquals(0x00000004, - ((EscherSimpleProperty) opt.lookup(EscherProperties.GEOMETRY__SHAPEPATH)).getPropertyValue()); - assertEquals(0x08000009, - ((EscherSimpleProperty) opt.lookup(EscherProperties.FILL__FILLCOLOR)).getPropertyValue()); - assertTrue(((EscherBoolProperty) opt.lookup(EscherProperties.FILL__NOFILLHITTEST)).isTrue()); - assertEquals(0x08000040, - ((EscherSimpleProperty) opt.lookup(EscherProperties.LINESTYLE__COLOR)).getPropertyValue()); - assertTrue(((EscherBoolProperty) opt.lookup(EscherProperties.LINESTYLE__NOLINEDRAWDASH)).isTrue()); assertTrue(((EscherBoolProperty) opt.lookup(EscherProperties.GROUPSHAPE__PRINT)).isTrue()); + assertTrue(((EscherBoolProperty) opt.lookup(EscherProperties.LINESTYLE__NOLINEDRAWDASH)).isTrue()); + assertEquals(0x00000004, ((EscherSimpleProperty) opt.lookup(EscherProperties.GEOMETRY__SHAPEPATH)).getPropertyValue()); + assertNull(opt.lookup(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE)); } @Test diff --git a/src/testcases/org/apache/poi/hssf/model/TestShapes.java b/src/testcases/org/apache/poi/hssf/model/TestShapes.java deleted file mode 100644 index beed4a1d3..000000000 --- a/src/testcases/org/apache/poi/hssf/model/TestShapes.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * ==================================================================== - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ==================================================================== - */ - -package org.apache.poi.hssf.model; - -import junit.framework.TestCase; - -import org.apache.poi.hssf.record.CommonObjectDataSubRecord; -import org.apache.poi.hssf.usermodel.HSSFClientAnchor; -import org.apache.poi.hssf.usermodel.HSSFComment; -import org.apache.poi.hssf.usermodel.HSSFPicture; -import org.apache.poi.hssf.usermodel.HSSFTextbox; - -/** - * - * @author Yegor Kozlov - */ -public final class TestShapes extends TestCase { - - /** - * Test generator of ids for the CommonObjectDataSubRecord record. - * - * See Bug 51332 - */ - @SuppressWarnings("deprecation") - public void testShapeId(){ - - HSSFClientAnchor anchor = new HSSFClientAnchor(); - AbstractShape shape; - CommonObjectDataSubRecord cmo; - - shape = new TextboxShape(new HSSFTextbox(null, anchor), 1025); - cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); - assertEquals(1, cmo.getObjectId()); - - shape = new PictureShape(new HSSFPicture(null, anchor), 1026); - cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); - assertEquals(2, cmo.getObjectId()); - - shape = new CommentShape(new HSSFComment(null, anchor), 1027); - cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); - assertEquals(1027, cmo.getObjectId()); - } -} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 7ccae676b..a65721151 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -51,6 +51,7 @@ import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.model.InternalSheet; import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.CellValueRecordInterface; +import org.apache.poi.hssf.record.CommonObjectDataSubRecord; import org.apache.poi.hssf.record.EmbeddedObjectRefSubRecord; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.Record; @@ -3009,4 +3010,29 @@ public final class TestBugs extends BaseTestBugzillaIssues { assertNotNull(newSheet); wb.close(); } + + /** + * Test generator of ids for the CommonObjectDataSubRecord record. + */ + @Test + public void test51332() { + HSSFClientAnchor anchor = new HSSFClientAnchor(); + HSSFSimpleShape shape; + CommonObjectDataSubRecord cmo; + + shape = new HSSFTextbox(null, anchor); + shape.setShapeId(1025); + cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); + assertEquals(1, cmo.getObjectId()); + + shape = new HSSFPicture(null, anchor); + shape.setShapeId(1026); + cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); + assertEquals(2, cmo.getObjectId()); + + shape = new HSSFComment(null, anchor); + shape.setShapeId(1027); + cmo = (CommonObjectDataSubRecord)shape.getObjRecord().getSubRecords().get(0); + assertEquals(1027, cmo.getObjectId()); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java index ac6507034..9e40695b4 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java @@ -16,6 +16,7 @@ ==================================================================== */ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.model.TestDrawingAggregate.decompress; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -26,8 +27,6 @@ import java.io.IOException; import org.apache.poi.ddf.EscherSpRecord; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.model.CommentShape; -import org.apache.poi.hssf.model.HSSFTestModelHelper; import org.apache.poi.hssf.record.CommonObjectDataSubRecord; import org.apache.poi.hssf.record.EscherAggregate; import org.apache.poi.hssf.record.NoteRecord; @@ -66,7 +65,7 @@ public final class TestHSSFComment extends BaseTestCellComment { * when matching cells and their cell comments. The correct algorithm is to map */ @Test - public void bug47924() { + public void bug47924() throws IOException { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("47924.xls"); HSSFSheet sheet = wb.getSheetAt(0); HSSFCell cell; @@ -95,6 +94,8 @@ public final class TestHSSFComment extends BaseTestCellComment { cell = sheet.getRow(5).getCell(2); comment = cell.getCellComment(); assertEquals("c6", comment.getString().getString()); + + wb.close(); } @Test @@ -202,7 +203,7 @@ public final class TestHSSFComment extends BaseTestCellComment { } @Test - public void resultEqualsToAbstractShape() throws IOException { + public void resultEqualsToNonExistingAbstractShape() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -212,59 +213,53 @@ public final class TestHSSFComment extends BaseTestCellComment { HSSFCell cell = row.createCell(0); cell.setCellComment(comment); - CommentShape commentShape = HSSFTestModelHelper.createCommentShape(1025, comment); - assertEquals(comment.getEscherContainer().getChildRecords().size(), 5); - assertEquals(commentShape.getSpContainer().getChildRecords().size(), 5); //sp record - byte[] expected = commentShape.getSpContainer().getChild(0).serialize(); + byte[] expected = decompress("H4sIAAAAAAAAAFvEw/WBg4GBgZEFSHAxMAAA9gX7nhAAAAA="); byte[] actual = comment.getEscherContainer().getChild(0).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = commentShape.getSpContainer().getChild(2).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPggxIANAABK4+laGgAAAA=="); actual = comment.getEscherContainer().getChild(2).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = commentShape.getSpContainer().getChild(3).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPzAAAQACl6c5QgAAAA="); actual = comment.getEscherContainer().getChild(3).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = commentShape.getSpContainer().getChild(4).serialize(); + expected = decompress("H4sIAAAAAAAAAGNg4P3AAAQA6pyIkQgAAAA="); actual = comment.getEscherContainer().getChild(4).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); ObjRecord obj = comment.getObjRecord(); - ObjRecord objShape = commentShape.getObjRecord(); - expected = obj.serialize(); - actual = objShape.serialize(); + expected = decompress("H4sIAAAAAAAAAItlMGEQZRBikGRgZBF0YEACvAxiDLgBAJZsuoU4AAAA"); + actual = obj.serialize(); assertEquals(expected.length, actual.length); //assertArrayEquals(expected, actual); TextObjectRecord tor = comment.getTextObjectRecord(); - TextObjectRecord torShape = commentShape.getTextObjectRecord(); - expected = tor.serialize(); - actual = torShape.serialize(); + expected = decompress("H4sIAAAAAAAAANvGKMQgxMSABgBGi8T+FgAAAA=="); + actual = tor.serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); NoteRecord note = comment.getNoteRecord(); - NoteRecord noteShape = commentShape.getNoteRecord(); - expected = note.serialize(); - actual = noteShape.serialize(); + expected = decompress("H4sIAAAAAAAAAJNh4GGAAEYWEAkAS0KXuRAAAAA="); + actual = note.serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); @@ -376,7 +371,7 @@ public final class TestHSSFComment extends BaseTestCellComment { } @Test - public void existingFileWithComment(){ + public void existingFileWithComment() throws IOException { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls"); HSSFSheet sheet = wb.getSheet("comments"); HSSFPatriarch drawing = sheet.getDrawingPatriarch(); @@ -386,6 +381,7 @@ public final class TestHSSFComment extends BaseTestCellComment { assertEquals(comment.getString().getString(), "evgeniy:\npoi test"); assertEquals(comment.getColumn(), 1); assertEquals(comment.getRow(), 2); + wb.close(); } @Test @@ -399,8 +395,6 @@ public final class TestHSSFComment extends BaseTestCellComment { HSSFCell cell = row.createCell(4); cell.setCellComment(comment); - HSSFTestModelHelper.createCommentShape(0, comment); - assertNotNull(sh.findCellComment(5, 4)); assertNull(sh.findCellComment(5, 5)); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java b/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java index bcaf47749..6174a5ff3 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestPolygon.java @@ -17,27 +17,22 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.model.TestDrawingAggregate.decompress; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.IOException; -import junit.framework.TestCase; - import org.apache.poi.ddf.EscherArrayProperty; -import org.apache.poi.ddf.EscherOptRecord; import org.apache.poi.ddf.EscherProperties; import org.apache.poi.ddf.EscherSpRecord; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.model.HSSFTestModelHelper; -import org.apache.poi.hssf.model.PolygonShape; import org.apache.poi.hssf.record.ObjRecord; +import org.junit.Test; -/** - * @author Evgeniy Berlog - * @date 28.06.12 - */ -public class TestPolygon extends TestCase{ - +public class TestPolygon { + @Test public void testResultEqualsToAbstractShape() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); @@ -46,42 +41,42 @@ public class TestPolygon extends TestCase{ HSSFPolygon polygon = patriarch.createPolygon(new HSSFClientAnchor()); polygon.setPolygonDrawArea( 100, 100 ); polygon.setPoints( new int[]{0, 90, 50}, new int[]{5, 5, 44} ); - PolygonShape polygonShape = HSSFTestModelHelper.createPolygonShape(1024, polygon); polygon.setShapeId(1024); assertEquals(polygon.getEscherContainer().getChildRecords().size(), 4); - assertEquals(polygonShape.getSpContainer().getChildRecords().size(), 4); //sp record - byte[] expected = polygonShape.getSpContainer().getChild(0).serialize(); + byte[] expected = decompress("H4sIAAAAAAAAAGNi4PrAwQAELEDMxcAAAAU6ZlwQAAAA"); byte[] actual = polygon.getEscherContainer().getChild(0).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = polygonShape.getSpContainer().getChild(2).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPggxIANAABK4+laGgAAAA=="); actual = polygon.getEscherContainer().getChild(2).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = polygonShape.getSpContainer().getChild(3).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPzAAAQACl6c5QgAAAA="); actual = polygon.getEscherContainer().getChild(3).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); ObjRecord obj = polygon.getObjRecord(); - ObjRecord objShape = polygonShape.getObjRecord(); - expected = obj.serialize(); - actual = objShape.serialize(); + expected = decompress("H4sIAAAAAAAAAItlkGIQZRBikGNgYBBMYEADAOAV/ZkeAAAA"); + actual = obj.serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); + + wb.close(); } - public void testPolygonPoints(){ + @Test + public void testPolygonPoints() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -90,31 +85,46 @@ public class TestPolygon extends TestCase{ polygon.setPolygonDrawArea( 100, 100 ); polygon.setPoints( new int[]{0, 90, 50, 90}, new int[]{5, 5, 44, 88} ); - PolygonShape polygonShape = HSSFTestModelHelper.createPolygonShape(0, polygon); - EscherArrayProperty verticesProp1 = polygon.getOptRecord().lookup(EscherProperties.GEOMETRY__VERTICES); - EscherArrayProperty verticesProp2 = ((EscherOptRecord)polygonShape.getSpContainer().getChildById(EscherOptRecord.RECORD_ID)) - .lookup(EscherProperties.GEOMETRY__VERTICES); - assertEquals(verticesProp1.getNumberOfElementsInArray(), verticesProp2.getNumberOfElementsInArray()); - assertEquals(verticesProp1.toXml(""), verticesProp2.toXml("")); + String expected = + ""+ + "[00, 00, 05, 00]"+ + "[5A, 00, 05, 00]"+ + "[32, 00, 2C, 00]"+ + "[5A, 00, 58, 00]"+ + "[00, 00, 05, 00]"+ + ""; + String actual = verticesProp1.toXml("").replaceAll("[\r\n\t]",""); + + assertEquals(verticesProp1.getNumberOfElementsInArray(), 5); + assertEquals(expected, actual); polygon.setPoints(new int[]{1,2,3}, new int[] {4,5,6}); assertArrayEquals(polygon.getXPoints(), new int[]{1, 2, 3}); assertArrayEquals(polygon.getYPoints(), new int[]{4, 5, 6}); - polygonShape = HSSFTestModelHelper.createPolygonShape(0, polygon); verticesProp1 = polygon.getOptRecord().lookup(EscherProperties.GEOMETRY__VERTICES); - verticesProp2 = ((EscherOptRecord)polygonShape.getSpContainer().getChildById(EscherOptRecord.RECORD_ID)) - .lookup(EscherProperties.GEOMETRY__VERTICES); - assertEquals(verticesProp1.getNumberOfElementsInArray(), verticesProp2.getNumberOfElementsInArray()); - assertEquals(verticesProp1.toXml(""), verticesProp2.toXml("")); + expected = + "" + + "[01, 00, 04, 00]" + + "[02, 00, 05, 00]" + + "[03, 00, 06, 00]" + + "[01, 00, 04, 00]" + + ""; + actual = verticesProp1.toXml("").replaceAll("[\r\n\t]",""); + + assertEquals(verticesProp1.getNumberOfElementsInArray(), 4); + assertEquals(expected, actual); + + wb.close(); } - public void testSetGetProperties(){ - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sh = wb.createSheet(); + @Test + public void testSetGetProperties() throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet sh = wb1.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); HSSFPolygon polygon = patriarch.createPolygon(new HSSFClientAnchor()); @@ -126,8 +136,9 @@ public class TestPolygon extends TestCase{ assertEquals(polygon.getDrawAreaHeight(), 101); assertEquals(polygon.getDrawAreaWidth(), 102); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + sh = wb2.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); polygon = (HSSFPolygon) patriarch.getChildren().get(0); @@ -144,8 +155,9 @@ public class TestPolygon extends TestCase{ assertEquals(polygon.getDrawAreaHeight(), 1011); assertEquals(polygon.getDrawAreaWidth(), 1021); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2); + wb2.close(); + sh = wb3.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); polygon = (HSSFPolygon) patriarch.getChildren().get(0); @@ -154,11 +166,14 @@ public class TestPolygon extends TestCase{ assertArrayEquals(polygon.getYPoints(), new int[]{41, 51, 61}); assertEquals(polygon.getDrawAreaHeight(), 1011); assertEquals(polygon.getDrawAreaWidth(), 1021); + + wb3.close(); } - public void testAddToExistingFile(){ - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sh = wb.createSheet(); + @Test + public void testAddToExistingFile() throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet sh = wb1.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); HSSFPolygon polygon = patriarch.createPolygon(new HSSFClientAnchor()); @@ -169,8 +184,9 @@ public class TestPolygon extends TestCase{ polygon1.setPolygonDrawArea( 103, 104 ); polygon1.setPoints( new int[]{11,12,13}, new int[]{14,15,16} ); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + sh = wb2.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); assertEquals(patriarch.getChildren().size(), 2); @@ -179,8 +195,9 @@ public class TestPolygon extends TestCase{ polygon2.setPolygonDrawArea( 203, 204 ); polygon2.setPoints( new int[]{21,22,23}, new int[]{24,25,26} ); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2); + wb2.close(); + sh = wb3.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); assertEquals(patriarch.getChildren().size(), 3); @@ -203,8 +220,11 @@ public class TestPolygon extends TestCase{ assertArrayEquals(polygon2.getYPoints(), new int[]{24,25,26}); assertEquals(polygon2.getDrawAreaHeight(), 204); assertEquals(polygon2.getDrawAreaWidth(), 203); + + wb3.close(); } + @Test public void testExistingFile() throws IOException { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls"); HSSFSheet sheet = wb.getSheet("polygon"); @@ -216,19 +236,23 @@ public class TestPolygon extends TestCase{ assertEquals(polygon.getDrawAreaWidth(), 3686175); assertArrayEquals(polygon.getXPoints(), new int[]{0, 0, 31479, 16159, 19676, 20502}); assertArrayEquals(polygon.getYPoints(), new int[]{0, 0, 36, 56, 34, 18}); + + wb.close(); } - public void testPolygonType(){ - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sh = wb.createSheet(); + @Test + public void testPolygonType() throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet sh = wb1.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); HSSFPolygon polygon = patriarch.createPolygon(new HSSFClientAnchor()); polygon.setPolygonDrawArea( 102, 101 ); polygon.setPoints( new int[]{1,2,3}, new int[]{4,5,6} ); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + sh = wb2.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); HSSFPolygon polygon1 = patriarch.createPolygon(new HSSFClientAnchor()); @@ -239,12 +263,14 @@ public class TestPolygon extends TestCase{ spRecord.setShapeType((short)77/**RANDOM**/); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wb3 = HSSFTestDataSamples.writeOutAndReadBack(wb2); + wb2.close(); + sh = wb3.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); assertEquals(patriarch.getChildren().size(), 2); assertTrue(patriarch.getChildren().get(0) instanceof HSSFPolygon); assertTrue(patriarch.getChildren().get(1) instanceof HSSFPolygon); + wb3.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestText.java b/src/testcases/org/apache/poi/hssf/usermodel/TestText.java index 51eede08f..c8203d8d4 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestText.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestText.java @@ -17,12 +17,13 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.model.TestDrawingAggregate.decompress; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import java.io.IOException; + import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.model.HSSFTestModelHelper; -import org.apache.poi.hssf.model.TextboxShape; import org.apache.poi.hssf.record.ObjRecord; import org.apache.poi.hssf.record.TextObjectRecord; import org.junit.Test; @@ -31,56 +32,54 @@ import org.junit.Test; * @author Evgeniy Berlog * @date 25.06.12 */ -@SuppressWarnings("deprecation") public class TestText { @Test - public void testResultEqualsToAbstractShape() throws Exception { + public void testResultEqualsToNonExistingAbstractShape() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor()); - TextboxShape textboxShape = HSSFTestModelHelper.createTextboxShape(1025, textbox); assertEquals(textbox.getEscherContainer().getChildRecords().size(), 5); - assertEquals(textboxShape.getSpContainer().getChildRecords().size(), 5); //sp record - byte[] expected = textboxShape.getSpContainer().getChild(0).serialize(); + byte[] expected = decompress("H4sIAAAAAAAAAFvEw/WBg4GBgZEFSHAxMAAA9gX7nhAAAAA="); byte[] actual = textbox.getEscherContainer().getChild(0).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = textboxShape.getSpContainer().getChild(2).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPggxIANAABK4+laGgAAAA=="); actual = textbox.getEscherContainer().getChild(2).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = textboxShape.getSpContainer().getChild(3).serialize(); + expected = decompress("H4sIAAAAAAAAAGNgEPzAAAQACl6c5QgAAAA="); actual = textbox.getEscherContainer().getChild(3).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); - expected = textboxShape.getSpContainer().getChild(4).serialize(); + expected = decompress("H4sIAAAAAAAAAGNg4P3AAAQA6pyIkQgAAAA="); actual = textbox.getEscherContainer().getChild(4).serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual); ObjRecord obj = textbox.getObjRecord(); - ObjRecord objShape = textboxShape.getObjRecord(); - expected = obj.serialize(); - actual = objShape.serialize(); + expected = decompress("H4sIAAAAAAAAAItlkGIQZRBiYGNgZBBMYEADAOdCLuweAAAA"); + actual = obj.serialize(); + assertEquals(expected.length, actual.length); + assertArrayEquals(expected, actual); + TextObjectRecord tor = textbox.getTextObjectRecord(); - TextObjectRecord torShape = textboxShape.getTextObjectRecord(); - expected = tor.serialize(); - actual = torShape.serialize(); + expected = decompress("H4sIAAAAAAAAANvGKMQgxMSABgBGi8T+FgAAAA=="); + actual = tor.serialize(); assertEquals(expected.length, actual.length); assertArrayEquals(expected, actual);