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);
}