org.codehaus.groovy.grails.commons
Class DefaultGrailsDomainClassProperty

java.lang.Object
  extended by org.codehaus.groovy.grails.commons.DefaultGrailsDomainClassProperty
All Implemented Interfaces:
GrailsDomainClassProperty

public class DefaultGrailsDomainClassProperty
extends Object
implements GrailsDomainClassProperty

Represents a property of a domain class and contains meta information about the properties relationships, naming conventions and type.

Since:
0.1
Author:
Graeme Rocher

Field Summary
 
Fields inherited from interface org.codehaus.groovy.grails.commons.GrailsDomainClassProperty
BELONGS_TO, CLASS, CONSTRAINTS, DATE_CREATED, EMBEDDED, EVANESCENT, FETCH_EAGER, FETCH_LAZY, FETCH_MODE, HAS_MANY, HAS_ONE, IDENTITY, LAST_UPDATED, MAPPED_BY, MAPPING, MAPPING_STRATEGY, META_CLASS, NAMED_QUERIES, RELATES_TO_MANY, SORT, TRANSIENT, VERSION
 
Constructor Summary
DefaultGrailsDomainClassProperty(GrailsDomainClass domainClass, PropertyDescriptor descriptor)
          Constructor.
 
Method Summary
 boolean equals(Object o)
          Overriddent equals to take into account inherited properties e.g. childClass.propertyName is equal to parentClass.propertyName if the types match and childClass.property.isInherited
 GrailsDomainClass getComponent()
          If #isEmbedded returns true then this method can be called to obtain a reference to the embedded component, which implements the GrailsDomainClass interface.
 GrailsDomainClass getDomainClass()
          Returns the parent domain class of the property instance.
 int getFetchMode()
          Returns the configured fetch mode for the property
 String getFieldName()
          Returns the domain field name for this property.
 String getName()
          Returns the name of the property.
 String getNaturalName()
           
 GrailsDomainClassProperty getOtherSide()
          Returns the other side of a bidirectional association
 GrailsDomainClass getReferencedDomainClass()
          Returns the GrailsDomainClass of a relationship property or null, if the property is not a relationship property.
 String getReferencedPropertyName()
          Retrieves the name of property referenced by this property if it is an association and is known, otherwise null.
 Class getReferencedPropertyType()
          Returns the referenced property type.
 Class getType()
          Returns the type for the domain class
 String getTypePropertyName()
          Returns the class type as a property name representation.
 boolean isAssociation()
          Returns true if this property is a relationship property.
 boolean isBasicCollectionType()
          Return whether this is a collection of basic types like String, Integer etc.
 boolean isBidirectional()
          Returns true if the property is a bi-directional relationship.
 boolean isCircular()
          Whether the relationship is cirucular.
 boolean isEmbedded()
          Returns true if this propert is an embedded component.
 boolean isEnum()
          Returns true if this properties type is an enum.
 boolean isHasOne()
           
 boolean isIdentity()
          Returns true of the property is an identifier.
 boolean isInherited()
          Whether the property is inherited from a super class.
 boolean isManyToMany()
          Returns true if the property is a many-to-many relationship.
 boolean isManyToOne()
          Returns true if the property is a many-to-one relationship.
 boolean isOneToMany()
          Returns true if the property is a one-to-many relationship.
 boolean isOneToOne()
          Returns true if the property is a one-to-one relationship.
 boolean isOptional()
          Returns true if the property is required.
 boolean isOwningSide()
          Whether this side of the association is the "owning" side.
 boolean isPersistent()
          Returns true if the domain class property is a persistent property.
 void setBasicCollectionType(boolean b)
           
protected  void setBidirectional(boolean bidirectional)
          Sets whether the relationship is bidirectional or not
 void setEmbedded(boolean isEmbedded)
           
protected  void setHasOne(boolean isHasOne)
          Set whether the foreign key is stored in the parent or child in a one-to-one
protected  void setManyToMany(boolean manyToMany)
           
protected  void setManyToOne(boolean manyToOne)
           
protected  void setOneToMany(boolean oneToMany)
           
protected  void setOneToOne(boolean oneToOne)
           
 void setOtherSide(GrailsDomainClassProperty property)
          Sets the other side of an associative property.
 void setOwningSide(boolean b)
           
protected  void setPersistant(boolean persistant)
           
 void setReferencedDomainClass(GrailsDomainClass referencedDomainClass)
          Sets the references domain class on the property.
protected  void setReferencedPropertyType(Class<?> referencedPropertyType)
          Sets the referenced property type of this property
 void setReferencePropertyName(String name)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DefaultGrailsDomainClassProperty

public DefaultGrailsDomainClassProperty(GrailsDomainClass domainClass,
                                        PropertyDescriptor descriptor)
Constructor.

Parameters:
domainClass -
descriptor -
Method Detail

getName

public String getName()
Description copied from interface: GrailsDomainClassProperty
Returns the name of the property.

Specified by:
getName in interface GrailsDomainClassProperty
Returns:
The property name

getType

public Class getType()
Description copied from interface: GrailsDomainClassProperty
Returns the type for the domain class

Specified by:
getType in interface GrailsDomainClassProperty
Returns:
The property type

isPersistent

public boolean isPersistent()
Description copied from interface: GrailsDomainClassProperty
Returns true if the domain class property is a persistent property.

Specified by:
isPersistent in interface GrailsDomainClassProperty
Returns:
Whether the property is persistent

isOptional

public boolean isOptional()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is required.

Specified by:
isOptional in interface GrailsDomainClassProperty
Returns:
Whether the property is optional

isIdentity

public boolean isIdentity()
Description copied from interface: GrailsDomainClassProperty
Returns true of the property is an identifier.

Specified by:
isIdentity in interface GrailsDomainClassProperty
Returns:
Whether the property is the identifier

isOneToMany

public boolean isOneToMany()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is a one-to-many relationship.

Specified by:
isOneToMany in interface GrailsDomainClassProperty
Returns:
Whether it is a oneToMany

isManyToOne

public boolean isManyToOne()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is a many-to-one relationship.

Specified by:
isManyToOne in interface GrailsDomainClassProperty
Returns:
Whether it is a manyToOne

getFieldName

public String getFieldName()
Description copied from interface: GrailsDomainClassProperty
Returns the domain field name for this property.

Specified by:
getFieldName in interface GrailsDomainClassProperty

isOneToOne

public boolean isOneToOne()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is a one-to-one relationship.

Specified by:
isOneToOne in interface GrailsDomainClassProperty
Returns:
True if it is a one-to-one relationship

getDomainClass

public GrailsDomainClass getDomainClass()
Description copied from interface: GrailsDomainClassProperty
Returns the parent domain class of the property instance.

Specified by:
getDomainClass in interface GrailsDomainClassProperty
Returns:
The parent domain class

isManyToMany

public boolean isManyToMany()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is a many-to-many relationship.

Specified by:
isManyToMany in interface GrailsDomainClassProperty
Returns:
True if it is a manyToMany

setManyToMany

protected void setManyToMany(boolean manyToMany)
Parameters:
manyToMany - The manyToMany to set.

setOneToMany

protected void setOneToMany(boolean oneToMany)
Parameters:
oneToMany - The oneToMany to set.

setManyToOne

protected void setManyToOne(boolean manyToOne)
Parameters:
manyToOne - The manyToOne to set.

setOneToOne

protected void setOneToOne(boolean oneToOne)
Parameters:
oneToOne - The oneToOne to set.

setHasOne

protected void setHasOne(boolean isHasOne)
Set whether the foreign key is stored in the parent or child in a one-to-one

Parameters:
isHasOne - True if its stored in the parent

isHasOne

public boolean isHasOne()
Specified by:
isHasOne in interface GrailsDomainClassProperty
Returns:
True if the foreign key in a one-to-one is stored in the parent

setPersistant

protected void setPersistant(boolean persistant)
Parameters:
persistant - The persistant to set.

setBidirectional

protected void setBidirectional(boolean bidirectional)
Sets whether the relationship is bidirectional or not


getTypePropertyName

public String getTypePropertyName()
Description copied from interface: GrailsDomainClassProperty
Returns the class type as a property name representation.

Specified by:
getTypePropertyName in interface GrailsDomainClassProperty
Returns:
The property name representation

getReferencedPropertyType

public Class getReferencedPropertyType()
Description copied from interface: GrailsDomainClassProperty
Returns the referenced property type. This differs from getType() in that in the case of an Association it will return the type of the elements contained within the Collection, otherwise it will delegate to getType();

Specified by:
getReferencedPropertyType in interface GrailsDomainClassProperty
Returns:
The referenced type

isBidirectional

public boolean isBidirectional()
Description copied from interface: GrailsDomainClassProperty
Returns true if the property is a bi-directional relationship.

Specified by:
isBidirectional in interface GrailsDomainClassProperty
Returns:
A boolean value

setReferencedPropertyType

protected void setReferencedPropertyType(Class<?> referencedPropertyType)
Sets the referenced property type of this property


getReferencedDomainClass

public GrailsDomainClass getReferencedDomainClass()
Description copied from interface: GrailsDomainClassProperty
Returns the GrailsDomainClass of a relationship property or null, if the property is not a relationship property.

Specified by:
getReferencedDomainClass in interface GrailsDomainClassProperty
Returns:
The GrailsDomainClass

setReferencedDomainClass

public void setReferencedDomainClass(GrailsDomainClass referencedDomainClass)
Description copied from interface: GrailsDomainClassProperty
Sets the references domain class on the property.

Specified by:
setReferencedDomainClass in interface GrailsDomainClassProperty

isAssociation

public boolean isAssociation()
Description copied from interface: GrailsDomainClassProperty
Returns true if this property is a relationship property.

Specified by:
isAssociation in interface GrailsDomainClassProperty
Returns:
True if it is an associative property

isEnum

public boolean isEnum()
Description copied from interface: GrailsDomainClassProperty
Returns true if this properties type is an enum.

Specified by:
isEnum in interface GrailsDomainClassProperty
Returns:
True if it is

getNaturalName

public String getNaturalName()
Specified by:
getNaturalName in interface GrailsDomainClassProperty
Returns:
The natural name representation of the property (eg. 'lastName' becomes 'Last Name'

toString

public String toString()
Overrides:
toString in class Object

getOtherSide

public GrailsDomainClassProperty getOtherSide()
Description copied from interface: GrailsDomainClassProperty
Returns the other side of a bidirectional association

Specified by:
getOtherSide in interface GrailsDomainClassProperty
Returns:
The other side of the relationship or null if not known

setOtherSide

public void setOtherSide(GrailsDomainClassProperty property)
Description copied from interface: GrailsDomainClassProperty
Sets the other side of an associative property.

Specified by:
setOtherSide in interface GrailsDomainClassProperty

isInherited

public boolean isInherited()
Description copied from interface: GrailsDomainClassProperty
Whether the property is inherited from a super class.

Specified by:
isInherited in interface GrailsDomainClassProperty
Returns:
True if its inherited

getFetchMode

public int getFetchMode()
Description copied from interface: GrailsDomainClassProperty
Returns the configured fetch mode for the property

Specified by:
getFetchMode in interface GrailsDomainClassProperty

isOwningSide

public boolean isOwningSide()
Description copied from interface: GrailsDomainClassProperty
Whether this side of the association is the "owning" side.

Specified by:
isOwningSide in interface GrailsDomainClassProperty
Returns:
True if it is the owning side

setOwningSide

public void setOwningSide(boolean b)
Specified by:
setOwningSide in interface GrailsDomainClassProperty

isCircular

public boolean isCircular()
Description copied from interface: GrailsDomainClassProperty
Whether the relationship is cirucular.

Specified by:
isCircular in interface GrailsDomainClassProperty
Returns:
True if it is

setReferencePropertyName

public void setReferencePropertyName(String name)

getReferencedPropertyName

public String getReferencedPropertyName()
Description copied from interface: GrailsDomainClassProperty
Retrieves the name of property referenced by this property if it is an association and is known, otherwise null.

Specified by:
getReferencedPropertyName in interface GrailsDomainClassProperty
Returns:
The name of the prop

isEmbedded

public boolean isEmbedded()
Description copied from interface: GrailsDomainClassProperty
Returns true if this propert is an embedded component.

Specified by:
isEmbedded in interface GrailsDomainClassProperty
Returns:
True if it is, false otherwise

getComponent

public GrailsDomainClass getComponent()
Description copied from interface: GrailsDomainClassProperty
If #isEmbedded returns true then this method can be called to obtain a reference to the embedded component, which implements the GrailsDomainClass interface.

Specified by:
getComponent in interface GrailsDomainClassProperty
Returns:
The component or null if it is not an embedded component
See Also:
GrailsDomainClass, GrailsDomainClassProperty.isEmbedded()

setEmbedded

public void setEmbedded(boolean isEmbedded)

equals

public boolean equals(Object o)
Overriddent equals to take into account inherited properties e.g. childClass.propertyName is equal to parentClass.propertyName if the types match and childClass.property.isInherited

Overrides:
equals in class Object
Parameters:
o - the Object to compare this property to
Returns:
boolean indicating equality of the two objects

setBasicCollectionType

public void setBasicCollectionType(boolean b)

isBasicCollectionType

public boolean isBasicCollectionType()
Description copied from interface: GrailsDomainClassProperty
Return whether this is a collection of basic types like String, Integer etc.

Specified by:
isBasicCollectionType in interface GrailsDomainClassProperty
Returns:
True if it is a collection of basic types