poi/src/java/org/apache/poi/ddf/EscherSimpleProperty.java

104 lines
2.9 KiB
Java
Raw Normal View History

package org.apache.poi.ddf;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.HexDump;
/**
* A simple property is of fixed length and as a property number in addition
* to a 32-bit value. Properties that can't be stored in only 32-bits are
* stored as EscherComplexProperty objects.
*
* @author Glen Stampoultzis (glens at apache.org)
*/
public class EscherSimpleProperty extends EscherProperty
{
protected int propertyValue;
/**
* The id is distinct from the actual property number. The id includes the property number the blip id
* flag and an indicator whether the property is complex or not.
*/
public EscherSimpleProperty( short id, int propertyValue )
{
super( id );
this.propertyValue = propertyValue;
}
/**
* Constructs a new escher property. The three parameters are combined to form a property
* id.
*/
public EscherSimpleProperty( short propertyNumber, boolean isComplex, boolean isBlipId, int propertyValue )
{
super( propertyNumber, isComplex, isBlipId );
this.propertyValue = propertyValue;
}
/**
* Serialize the simple part of the escher record.
*
* @return the number of bytes serialized.
*/
public int serializeSimplePart( byte[] data, int offset )
{
LittleEndian.putShort(data, offset, getId());
LittleEndian.putInt(data, offset + 2, propertyValue);
return 6;
}
/**
* Escher properties consist of a simple fixed length part and a complex variable length part.
* The fixed length part is serialized first.
*/
public int serializeComplexPart( byte[] data, int pos )
{
return 0;
}
/**
* @return Return the 32 bit value of this property.
*/
public int getPropertyValue()
{
return propertyValue;
}
/**
* Returns true if one escher property is equal to another.
*/
public boolean equals( Object o )
{
if ( this == o ) return true;
if ( !( o instanceof EscherSimpleProperty ) ) return false;
final EscherSimpleProperty escherSimpleProperty = (EscherSimpleProperty) o;
if ( propertyValue != escherSimpleProperty.propertyValue ) return false;
if ( getId() != escherSimpleProperty.getId() ) return false;
return true;
}
/**
* Returns a hashcode so that this object can be stored in collections that
* require the use of such things.
*/
public int hashCode()
{
return propertyValue;
}
/**
* @return the string representation of this property.
*/
public String toString()
{
return "propNum: " + getPropertyNumber()
+ ", propName: " + EscherProperties.getPropertyName( getPropertyNumber() )
+ ", complex: " + isComplex()
+ ", blipId: " + isBlipId()
+ ", value: " + propertyValue + " (0x" + HexDump.toHex(propertyValue) + ")";
}
}