public interface JdapiObject
This interface represents the supertype and common behaviours for all Forms objects, and can be used to build and modify Forms applications generically, that is, without referring to the specific object types.
All Jdapi Forms object classes implement the JdapiObject interface, which is also the fundamental type of all objects. As a result, they have access to these useful methods:
getStringProperty
,
setStringProperty
,
getIntegerProperty
,
setIntegerProperty
, and so on.
Use these methods when you need to get and set Forms object properties generically.
The only specific property accessor supported by the JdapiObject interface
is getName
.createSubclassedchild
and
setSubclassParent
. The first method will
create a new instance of the given object which is subclassed from it. The second
method will change the subclassing source of a
given Forms object.
Additional methods in the interface that support subclassing are:
isSubClassed
and
getSubClassedParent
.hasOverriddenProperty
, hasInheritedProperty
,
hasDefaultedProperty
, getPropertyState
, and
inheritProperty
.
Each real object type is identified by a single unique constant.
This constant is returned by the getTypeId
. Many of the
methods in this class take a property type ID constant as a parameter (propertyTypeId).
These constants represent specific Forms object properties.
Modifier and Type | Field and Description |
---|---|
static int |
PROPERTY_DEFAULT_VALUE
Constant for default property state
|
static int |
PROPERTY_INHERITED_VALUE
Constant for inherited property state
|
static int |
PROPERTY_OVERRIDDEN_DEFAULT_VALUE
Constant for overridden default property state
|
static int |
PROPERTY_OVERRIDDEN_INHERITED_VALUE
Constant for overridden inherited property state
|
static int |
PROPERTY_STATE_UNKNOWN
Constant for unknown property state
|
Modifier and Type | Method and Description |
---|---|
void |
changeOwner(JdapiObject newOwner)
Assigns a new owner to the referred object.
|
JdapiObject |
clone(JdapiObject parent,
java.lang.String newName)
Creates a clone of the specified object, creating a new
object with the given name and owner.
|
JdapiObject |
createSubclassedChild(JdapiObject childOwner,
java.lang.String childName)
Subclass the referred object.
|
void |
destroy()
Destroys the specified Forms object and all the other
objects it owns.
|
boolean |
equals(JdapiObject object)
Compares two objects and determines if they are equal.
|
boolean |
getBooleanProperty(int propertyTypeId)
Retrieves a boolean property from the referred object.
|
JdapiIterator |
getChildObjectProperty(int propertyTypeId)
Retrieves child objects for a given property value.
|
java.lang.String |
getClassName()
Returns the class name of the object.
|
java.lang.Object |
getClientInfo()
Returns the client info object associated with this Object.
|
int |
getIntegerProperty(int propertyTypeId)
Retrieves an integer property from the referred object.
|
java.lang.String |
getIntegerPropertyString(int propertyTypeId)
Gets a numeric (
long ) property value's text
representation. |
JdapiMetaObject |
getJdapiMetaObject()
Gets the metadata object for the specified object.
|
JdapiIterator |
getMetaProperties()
Return an iterator over the meta properties in object referred.
|
JdapiObject |
getModule()
Returns the module object that the current object refers to.
|
java.lang.String |
getName()
Returns the name of this object.
|
JdapiObject |
getObjectProperty(int propertyTypeId)
Retrieves a JdapiObject property from the referred object.
|
JdapiIterator |
getOwnedObjects()
Returns an iterator over the list of objects that the referred object owns.
|
JdapiObject |
getOwner()
Returns the owner of the referred object.
|
Blob |
getPersistentClientInfoBlob()
Returns the persistent client info Blob associated with this
object.
|
java.lang.Object |
getPersistentClientInfoObject()
Returns the persistent client info Java object associated with this
object.
|
int |
getPropertyState(int propertyTypeId)
A property can be in one of the 4 states.
DEFAULT_VALUE : has its default value DEFAULT_VALUE_OVERRIDEN : locally overrides its default value INHERITED_VALUE : inherits its ancestor's value INHERITED_VALUE_OVERRIDDEN : locally overrides its ancestor's value |
java.lang.String |
getPropertyValueName(int propertyTypeId,
int val)
Gets the string representation of a given property's value.
|
java.lang.String |
getQualifiedName(boolean includeModule)
Determines whether the fully-qualified name of the object is returned.
|
int |
getStringIDProperty(int propertyTypeId)
Retrieves a special String ID (integer) property from the referred object.
|
java.lang.String |
getStringProperty(int propertyTypeId)
Retrieves a string property from the referred object.
|
JdapiObject |
getSubclassParent()
Returns the subclassing parent of the specified object.
|
int |
getTypeId()
Returns the integer Forms object type that represents this object.
|
boolean |
hasDefaultedProperty(int propertyTypeId)
Checks if a property is set to it's default value.
|
boolean |
hasInheritedProperty(int propertyTypeId)
Checks if a property is inherited.
|
boolean |
hasOverriddenProperty(int propertyTypeId)
Determine whether the object referred has a property of
the given type id with an overridden value.
|
boolean |
hasProperty(int propertyTypeId)
Determines if the referred object has the specified property.
|
void |
inheritProperty(int propertyTypeId)
Resets a property to it's default value (confusing name eh?).
|
boolean |
isSubclassed()
Determines whether the specified object
has a subclassing parent.
|
boolean |
isValidFormsObject()
Determines whether this Java instance references a valid Forms object.
|
void |
move(JdapiObject nextObject)
Reorders an object with respect to its siblings in
the collection it belongs to.
|
int |
queryType()
Returns the FormAPI object type ID (x_OTID in
JdapiTypes ). |
void |
reattach()
Reattaches subclassed object.
|
void |
setBooleanProperty(int propertyTypeId,
boolean propertyValue)
Sets the value of the specified boolean property belonging to the referred object.
|
void |
setClientInfo(java.lang.Object clientInfo)
Sets the client information.
|
void |
setIntegerProperty(int propertyTypeId,
int propertyValue)
Sets the value of the specified integer property belonging to the referred object.
|
void |
setObjectProperty(int propertyTypeId,
JdapiObject propertyValue)
Sets the value of the specified object property value for the object.
|
void |
setPersistentClientInfo(Blob val)
Sets persistent client info for this object.
|
void |
setPersistentClientInfo(java.io.Serializable val)
Serializes any Java object which supports the Serializable
interface to this object's Persistent Client Info.
|
void |
setStringProperty(int propertyTypeId,
java.lang.String propertyValue)
Sets the value of the specified string property for the object.
|
void |
setSubclassParent(JdapiObject parent)
Change the subclassing parent of the object referred.
|
java.lang.String |
toString()
Converts and returns the object properties to string format.
|
static final int PROPERTY_STATE_UNKNOWN
static final int PROPERTY_DEFAULT_VALUE
static final int PROPERTY_OVERRIDDEN_DEFAULT_VALUE
static final int PROPERTY_INHERITED_VALUE
static final int PROPERTY_OVERRIDDEN_INHERITED_VALUE
void destroy()
The following code sample creates a Forms module containing a block and items, then destroys the entire module by a single call to destroy().
// create a module from scratch FormModule fmd = new FormModule("MODULE_ONE"); Block blockA = new Block(fmd, "EMP"); Item itemA = new Item(blockA, "ID"); Item itemB = new Item(blockA, "NAME"); Item itemC = new Item(blockA, "LOCATION"); fmd.save("D:/work/Module_One.fmb"); fmd.destroy();
JdapiObject clone(JdapiObject parent, java.lang.String newName)
The new object is the same as the original object in that it has the same property values. However, subclassing information is discarded, and the inherited property values "flattened" into local values in the new object.
parent
- owner of the new object.newName
- name of the new object.void move(JdapiObject nextObject)
Pass null to this method to move the object to the end of the list. If the specified object and the next_object do not share the same owner, or do not have the same type, the method throws an exception.
You cannot use this method to move objects between parents. For example, it cannot be used to move an Item from one Block to another. If you want to move an object from one parent to another you will have to do something like:
// to move 'itmA' to be positioned before 'itmB' in block // 'blkB' (when 'itmA' is in another block) // copy itmA into a new parent (blkB) using same name Item newItmA = itmA.clone(blkB, itmA.getName()); newItmA.move(itmB); // move new item relative to itmB itmA.destroy(); // delete original object itmA = newItmA;
nextObject
- the object next to which the specified object
is to be moved.JdapiException
- if you attempt to
move an object next to an object that does not share the same owner or
is not of the same type.int getTypeId()
queryType
int queryType()
JdapiTypes
). This should always be the
same value as returned for getTypeId
. The difference between the two methods is that
queryType calls down to the API itself; this ensures that the correct type
is returned. Because this method calls down to the API, you might find it
a little faster to use getTypeID instead.JdapiTypes
.java.lang.String getClassName()
java.lang.String getName()
JdapiTypes
) of this object. For example,
calling this method on a block:
String blockName = myBlock.getName()could return a name such as "EMPLOYEES".
Note that not all Forms objects have names. If you call this method on one of these objects, then the string "<none>" is returned.
java.lang.String getQualifiedName(boolean includeModule)
If includeModule is false, then this method returns the name for the object in the format: OBJECT.CHILD.CHILD... where the name of the module is dropped.
includeModule
- true to include the module name with the object's
fully-qualified name false to drop the module name.JdapiObject getModule()
The object returned by this method is synonymous to the MODULE_PTID object property in
JdapiTypes
.
boolean equals(JdapiObject object)
object
- object to be compared.JdapiObject getOwner()
If the referred object has no owner, then this method returns null.
void changeOwner(JdapiObject newOwner)
Set newOwner to null if you want the object to have no owner.
The only restriction on this method is that the new owner must be in the same module
as the referred object. If you attempt to assign a new owner that is in a different
module, then a JdapiException
will be thrown.
Note: If you want to assign the object to a new owner in a different module, then you will have to clone or subclass the object.
newOwner
- the new owner of referred object; specify null if you want the object to have no owner.JdapiException
- if newOwner is in a different
module.JdapiIterator getOwnedObjects()
void setClientInfo(java.lang.Object clientInfo)
This client info object is not persistent and will be lost when the session ends.
clientInfo
- client info to be associated with the object.java.lang.Object getClientInfo()
setClientObject
.Blob getPersistentClientInfoBlob()
Blob
containing client info.java.lang.Object getPersistentClientInfoObject()
void setPersistentClientInfo(Blob val)
Like the non-persistent client info methods, the client info can be any information that you want to save with the form. Unlike the non-persistent client info methods, the persistent info is saved as part of the form and will not be lost when the session is ended.
val
- a Blob
object containing client info.void setPersistentClientInfo(java.io.Serializable val)
Like the non-persistent client info methods, the client info can be any information that you want to save with the form. Unlike the non-persistent client info methods, the persistent info is saved as part of the form and will not be lost when the session is ended.
val
- any Serializable object containing client info.boolean isValidFormsObject()
For example, assume that you have a reference to a block.
If you call destroy()
on its owning module, then the module and all of its blocks
should be deleted from memory. The reference that you have no longer
refers to a valid Forms object. A call to isValidFormsObject() on the
block should return false.
java.lang.String toString()
toString
in class java.lang.Object
boolean getBooleanProperty(int propertyTypeId)
propertyTypeId
- property type ID for which a boolean value is returned.int getIntegerProperty(int propertyTypeId)
... if(propClass.hasProperty(propNumber) && propClass.allowGet(propNumber)) { int propValue = propClass.getIntegerProperty(propNum); } ...
propertyTypeId
- property type ID for which an integer value is returned.java.lang.String getStringProperty(int propertyTypeId)
propertyTypeId
- property type ID for which a string value is returned.int getStringIDProperty(int propertyTypeId)
This method is intended for use with the TranslationTable
object only. For a given property ID it retrieves the integer that indexes the string
property in the table for the current language.
propertyTypeId
- property type ID for which a String ID value is returned.JdapiObject getObjectProperty(int propertyTypeId)
propertyTypeId
- property type ID for which a JdapiObject value is returned.JdapiIterator getChildObjectProperty(int propertyTypeId)
For example:
... // get the actual values for the current child object type, // for example, get the Items on a Block iter = jo.getChildObjectProperty(prop.getPropertyId()); ...Note, it should be (slightly) faster to call the specific method on the object, for example getBlocks() on the FormModule, as it involves fewer API calls. However, getChildObjectProperty should be sufficient if you only have a propertyTypeId available.
This method also differs from the direct accessors in that null is returned if there are no objects, not an empty iterator.
propertyTypeId
- number identifying the child object property.void setBooleanProperty(int propertyTypeId, boolean propertyValue)
propertyTypeId
- property type ID of the property for which you want to set the boolean value.propertyValue
- the boolean value for the property.void setIntegerProperty(int propertyTypeId, int propertyValue)
propertyTypeId
- property type ID of the property for which you want to set the integer value.propertyValue
- the integer value for the property.void setStringProperty(int propertyTypeId, java.lang.String propertyValue)
propertyTypeId
- property type ID of the property for which you want to set the string value.propertyValue
- the string value for the property.void setObjectProperty(int propertyTypeId, JdapiObject propertyValue)
propertyTypeId
- property type ID of the property for which you want to set the object property.propertyValue
- the object value for the property.boolean hasProperty(int propertyTypeId)
... if(!pc.hasProperty(propertyId)) { continue; // this property is not in the set } ...
propertyTypeId
- the number identifying the property.boolean isSubclassed()
JdapiObject getSubclassParent()
void setSubclassParent(JdapiObject parent)
The metadata associated with each object describes the types of objects that can become its subclassing parent. If the subclassing metadata associated with the refrred object doesn't indicate the objects of the given parent's type are allowed, then this method will throw an exception.
parent
- The parent object. If this is null, the child
the referred object will become an orphan. This is the
way to unset the subclassing parent of an object.JdapiObject createSubclassedChild(JdapiObject childOwner, java.lang.String childName)
childOwner
- The object that will own
the newly created subclassed child object.childName
- The name to be given to the newly
created child.void reattach()
boolean hasOverriddenProperty(int propertyTypeId)
propertyTypeId
- The type id of the property to
be queried.boolean hasInheritedProperty(int propertyTypeId)
propertyTypeId
- Number that identified the propertyboolean hasDefaultedProperty(int propertyTypeId)
propertyTypeId
- Number that identified the propertyint getPropertyState(int propertyTypeId)
A property can be in one of the 4 states.
DEFAULT_VALUE : has its default value
DEFAULT_VALUE_OVERRIDEN : locally overrides its default value
INHERITED_VALUE : inherits its ancestor's value
INHERITED_VALUE_OVERRIDDEN : locally overrides its ancestor's value
Return integer 1 through 4 representing one of the states.
propertyTypeId
- The type id of the property.java.lang.String getPropertyValueName(int propertyTypeId, int val)
propertyTypeId
- Property numberval
- Value of propertyjava.lang.String getIntegerPropertyString(int propertyTypeId)
long
) property value's text
representation.propertyTypeId
- Number identifying the propertyvoid inheritProperty(int propertyTypeId)
propertyTypeId
- Number that identified the propertyJdapiMetaObject getJdapiMetaObject()
JdapiIterator getMetaProperties()
The various property type ids and the object-property mapping are defined by the specific implementation in the respective Constants file.