This trait represents a Bridge between TheCrudType and the Crudify trait.
A generic representation of a field.
A generic representation of a field. For example, this represents the abstract "name" field and is used along with an instance of TheCrudType to compute the BaseField that is the "name" field on the specific instance of TheCrudType
The type of records we're manipulating
The type of records we're manipulating
o != arg0
is the same as !(o == (arg0))
.
o != arg0
is the same as !(o == (arg0))
.
the object to compare against this object for dis-equality.
false
if the receiver object is equivalent to the argument; true
otherwise.
o == arg0
is the same as if (o eq null) arg0 eq null else o.equals(arg0)
.
o == arg0
is the same as if (o eq null) arg0 eq null else o.equals(arg0)
.
the object to compare against this object for equality.
true
if the receiver object is equivalent to the argument; false
otherwise.
o == arg0
is the same as o.equals(arg0)
.
o == arg0
is the same as o.equals(arg0)
.
the object to compare against this object for equality.
true
if the receiver object is equivalent to the argument; false
otherwise.
The core template for creating.
The core template for creating. Does not include any page wrapping
The core template for deleting.
The core template for deleting. Does not include any page wrapping
The core template for editting.
The core template for editting. Does not include any page wrapping
The core template for showing record.
The core template for showing record. Does not include any page wrapping
The core template for viewing.
The core template for viewing. Does not include any page wrapping
If there are any Loc.
If there are any Loc.LocParams that need to be added to every menu (e.g., a guard for access control of the Crudify screens)
This method is used to cast the receiver object to be of type T0
.
This method is used to cast the receiver object to be of type T0
.
Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression1.asInstanceOf[String]
will throw a ClassCastException
at runtime, while the expressionList(1).asInstanceOf[List[String]]
will not. In the latter example, because the type argument is erased as
part of compilation it is not possible to check whether the contents of the list are of the requested typed.
the receiver object.
This method will instantiate a bridge from TheCrudType so that the appropriate logical operations can be performed on TheCrudType
This method will instantiate a bridge from TheCrudType so that the appropriate logical operations can be performed on TheCrudType
Based on a FieldPointer, build a FieldPointerBridge
Based on a FieldPointer, build a FieldPointerBridge
What's the prefix for this CRUD.
What's the prefix for this CRUD. Typically the table name
This method creates and returns a copy of the receiver object.
This method creates and returns a copy of the receiver object.
The default implementation of the clone
method is platform dependent.
a copy of the receiver object.
Given an instance of TheCrudType and FieldPointerType, convert that to an actual instance of a BaseField on the instance of TheCrudType
Given an instance of TheCrudType and FieldPointerType, convert that to an actual instance of a BaseField on the instance of TheCrudType
Vend a new instance of TheCrudType
Vend a new instance of TheCrudType
The menu item for creating items (make this "Empty" to disable)
The menu item for creating items (make this "Empty" to disable)
Override to include new Params for the create menu
Override to include new Params for the create menu
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
Override this method to change how the next link is generated
Override this method to change how the next link is generated
Override this method to change how the previous link is generated
Override this method to change how the previous link is generated
Override this method to change how the delete screen is built
Override this method to change how the delete screen is built
The menu item for deleting an item (make this "Empty" to disable)
The menu item for deleting an item (make this "Empty" to disable)
Override to include new Params for the delete menu
Override to include new Params for the delete menu
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
Customize the display of records for view menu loc
Customize the display of records for view menu loc
Override this method if you want to change the behavior of displaying records via the crud.
Override this method if you want to change the behavior of displaying records via the crud.all snippet
Override this method to customize how header items are treated
Override this method to customize how header items are treated
Override this method to customize how a crudAll line is generated
Override this method to customize how a crudAll line is generated
Override this method to determine how all the rows on a crud page are displayed
Override this method to determine how all the rows on a crud page are displayed
Override this method to change how fields are displayed for delete
Override this method to change how fields are displayed for delete
Override this method to change the behavior of deleting an item
Override this method to change the behavior of deleting an item
Customize the display of a row for displayRecord
Customize the display of a row for displayRecord
The menu item for editing an item (make this "Empty" to disable)
The menu item for editing an item (make this "Empty" to disable)
Override to include new Params for the edit menu
Override to include new Params for the edit menu
The String displayed for menu editing
The String displayed for menu editing
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This method is used to test whether the argument (arg0
) is a reference to the
receiver object (this
).
This method is used to test whether the argument (arg0
) is a reference to the
receiver object (this
).
The eq
method implements an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence relation] on
non-null instances of AnyRef
:
* It is reflexive: for any non-null instance x
of type AnyRef
, x.eq(x)
returns true
.
* It is symmetric: for any non-null instances x
and y
of type AnyRef
, x.eq(y)
returns true
if and
only if y.eq(x)
returns true
.
* It is transitive: for any non-null instances x
, y
, and z
of type AnyRef
if x.eq(y)
returns true
and y.eq(z)
returns true
, then x.eq(z)
returns true
.
Additionally, the eq
method has three other properties.
* It is consistent: for any non-null instances x
and y
of type AnyRef
, multiple invocations of
x.eq(y)
consistently returns true
or consistently returns false
.
* For any non-null instance x
of type AnyRef
, x.eq(null)
and null.eq(x)
returns false
.
* null.eq(null)
returns true
.
When overriding the equals
or hashCode
methods, it is important to ensure that their behavior is
consistent with reference equality. Therefore, if two objects are references to each other (o1 eq o2
), they
should be equal to each other (o1 == o2
) and they should hash to the same value (o1.hashCode == o2.hashCode
).
the object to compare against this object for reference equality.
true
if the argument is a reference to the receiver object; false
otherwise.
This method is used to compare the receiver object (this
) with the argument object (arg0
) for equivalence.
This method is used to compare the receiver object (this
) with the argument object (arg0
) for equivalence.
The default implementations of this method is an [http://en.wikipedia.org/wiki/Equivalence_relation equivalence
relation]:
* It is reflexive: for any instance x
of type Any
, x.equals(x)
should return true
.
* It is symmetric: for any instances x
and y
of type Any
, x.equals(y)
should return true
if and
only if y.equals(x)
returns true
.
* It is transitive: for any instances x
, y
, and z
of type AnyRef
if x.equals(y)
returns true
and
y.equals(z)
returns true
, then x.equals(z)
should return true
.
If you override this method, you should verify that your implementation remains an equivalence relation.
Additionally, when overriding this method it is often necessary to override hashCode
to ensure that objects
that are "equal" (o1.equals(o2)
returns true
) hash to the same
scala.Int
(o1.hashCode.equals(o2.hashCode)
).
the object to compare against this object for equality.
true
if the receiver object is equivalent to the argument; false
otherwise.
When displaying a record, what fields do we display
When displaying a record, what fields do we display
The list of fields to present on a form form editting
The list of fields to present on a form form editting
The fields displayed on the list page.
The fields displayed on the list page. By default all the displayed fields, but this list can be shortened.
This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.
This method is called by the garbage collector on the receiver object when garbage collection determines that there are no more references to the object.
The details of when and if the finalize
method are invoked, as well as the interaction between finalize
and non-local returns and exceptions, are all platform dependent.
Given a range, find the records.
Given a range, find the records. Your implementation of this method should enforce ordering (e.g., on primary key)
Given a String that represents the primary key, find an instance of TheCrudType
Given a String that represents the primary key, find an instance of TheCrudType
Returns a representation that corresponds to the dynamic class of the receiver object.
Returns a representation that corresponds to the dynamic class of the receiver object.
The nature of the representation is platform dependent.
a representation that corresponds to the dynamic class of the receiver object.
Returns a hash code value for the object.
Returns a hash code value for the object.
The default hashing algorithm is platform dependent.
Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)
) yet
not be equal (o1.equals(o2)
returns false
). A degenerate implementation could always return 0
.
However, it is required that if two objects are equal (o1.equals(o2)
returns true
) that they have
identical hash codes (o1.hashCode.equals(o2.hashCode)
). Therefore, when overriding this method, be sure
to verify that the behavior is consistent with the equals
method.
the hash code value for the object.
This method is used to test whether the dynamic type of the receiver object is T0
.
This method is used to test whether the dynamic type of the receiver object is T0
.
Note that the test result of the test is modulo Scala's erasure semantics. Therefore the expression1.isInstanceOf[String]
will return false
, while the expression List(1).isInstanceOf[List[String]]
will
return true
. In the latter example, because the type argument is erased as part of compilation it is not
possible to check whether the contents of the list are of the requested typed.
true
if the receiver object is an instance of erasure of type T0
; false
otherwise.
o.ne(arg0)
is the same as !(o.eq(arg0))
.
o.ne(arg0)
is the same as !(o.eq(arg0))
.
the object to compare against this object for reference dis-equality.
false
if the argument is not a reference to the receiver object; true
otherwise.
Wakes up a single thread that is waiting on the receiver object's monitor.
Wakes up a single thread that is waiting on the receiver object's monitor.
Wakes up all threads that are waiting on the receiver object's monitor.
Wakes up all threads that are waiting on the receiver object's monitor.
This method can be used to obscure the primary key.
This method can be used to obscure the primary key. This is more secure
because end users will not have access to the primary key. This method
actually does the obfuscation. You can use Mapper's KeyObfuscator class
to implement a nice implementation of this method for session-by-session
obfuscation.
By default, there's no obfuscation. Note that if you obfuscate the primary key, you need to update the findForParam method to accept the obfuscated keys (and translate them back.)
This method can be used to obscure the primary key.
This method can be used to obscure the primary key. This is more secure because end users will not have access to the primary key.
This method defines how many rows are displayed per page.
This method defines how many rows are displayed per page. By default, it's hard coded at 20, but you can make it session specific or change the default by overriding this method
The menu item for listing items (make this "Empty" to disable)
The menu item for listing items (make this "Empty" to disable)
Override to include new Params for the show all menu
Override to include new Params for the show all menu
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
Returns a string representation of the object.
Returns a string representation of the object.
The default representation is platform dependent.
a string representation of the object.
The menu item for viewing an item (make this "Empty" to disable)
The menu item for viewing an item (make this "Empty" to disable)
Override to include new Params for the view menu
Override to include new Params for the view menu
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
This is the template that's used to render the page after the optional wrapping of the template in the page wrapper
As the field names are being displayed for editting, this method is called with the XHTML that will be displayed as the field name an a flag indicating that the field is required (or not).
As the field names are being displayed for editting, this method is called with the XHTML that will be displayed as the field name an a flag indicating that the field is required (or not). You can wrap the fieldName in a span with a css class indicating that the field is required or otherwise do something to update the field name indiciating to the user that the field is required. By default the method wraps the fieldName in a span with the class attribute set to "required_field"
This trait automatically adds CRUD (Create, read, update and delete) operations to an existing persistence mechanism. Various methods can be overridden to customize which operations are available to a user and how things are displayed. For example, you can disable deletion of entities by overriding deleteMenuLoc to Empty.