commonj.sdo.Property Maven / Gradle / Ivy
/**
*
*
* Service Data Objects
* Version 2.1.0
* Licensed Materials
*
* (c) Copyright BEA Systems, Inc., International Business Machines Corporation,
* Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software, SAP AG.,
* Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
* 2005, 2006. All rights reserved.
*
*
*
*/
package commonj.sdo;
import java.util.List;
/**
* A representation of a Property in the {@link Type type} of a
* {@link DataObject data object}.
*/
public interface Property {
/**
* Returns the name of the Property.
*
* @return the Property name.
*/
String getName();
/**
* Returns the type of the Property.
*
* @return the Property type.
*/
Type getType();
/**
* Returns whether the Property is many-valued.
*
* @return true
if the Property is many-valued.
*/
boolean isMany();
/**
* Returns whether the Property is containment, i.e., whether it represents
* by-value composition.
*
* @return true
if the Property is containment.
*/
boolean isContainment();
/**
* Returns the containing type of this Property.
*
* @return the Property's containing type.
* @see Type#getProperties()
*/
Type getContainingType();
/**
* Returns the default value this Property will have in a {@link DataObject
* data object} where the Property hasn't been set.
*
* @return the default value.
*/
Object getDefault();
/**
* Returns true if values for this Property cannot be modified using the SDO
* APIs. When true, DataObject.set(Property property, Object value) throws an
* exception. Values may change due to other factors, such as services
* operating on DataObjects.
*
* @return true if values for this Property cannot be modified.
*/
boolean isReadOnly();
/**
* Returns the opposite Property if the Property is bi-directional or null
* otherwise.
*
* @return the opposite Property if the Property is bi-directional or null
*/
Property getOpposite();
/**
* Returns a list of alias names for this Property.
*
* @return a list of alias names for this Property.
*/
List getAliasNames();
/**
* Returns whether or not instances of this property can be set to null. The
* effect of calling set(null) on a non-nullable property is not specified by
* SDO.
*
* @return true if this property is nullable.
*/
boolean isNullable();
/**
* Returns whether or not this is an open content Property.
*
* @return true if this property is an open content Property.
*/
boolean isOpenContent();
/**
* Returns a read-only List of instance Properties available on this Property.
*
* This list includes, at a minimum, any open content properties (extensions)
* added to the object before
* {@link commonj.sdo.helper.TypeHelper#define(DataObject) defining the
* Property's Type}. Implementations may, but are not required to in the 2.1
* version of SDO, provide additional instance properties.
*
* @return the List of instance Properties on this Property.
*/
List /* Property */getInstanceProperties();
/**
* Returns the value of the specified instance property of this Property.
*
* @param property
* one of the properties returned by {@link #getInstanceProperties()}
* .
* @return the value of the specified property.
* @see DataObject#get(Property)
*/
Object get(Property property);
}