Oracle® Application Development Framework Developer's Guide For Forms/4GL Developers 10g (10.1.3.1.0) Part Number B25947-01 |
|
|
View PDF |
You can override the isAttributeUpdateable()
method in your entity object class to programmatically determine whether a given attribute is updatable or not at runtime based on appropriate conditions. Example 9-19 shows how the ServiceHistory
entity object in the SRDemo application overrides this method to enforce that its SvhType
attribute is updatable only if the current authenticated user is a staff member. Notice that when the entity object fires this method, it passes in the integer attribute index whose updatability is being considered. You implement your conditional updatability logic for a particular attribute inside an if
or switch
statement based on the attribute index. Here SVHTYPE
is referencing the integer attribute index constants that JDeveloper automatically maintains in your entity object custom Java class.
Example 9-19 Conditionally Determining an Attribute's Updatability at Runtime
// In ServiceHistoryImpl.java public boolean isAttributeUpdateable(int index) { if (index == SVHTYPE) { if (!currentUserIsStaffMember()) { return super.isAttributeUpdateable(index); } return CUSTOMER_TYPE.equals(getSvhType()) ? false : true; } return super.isAttributeUpdateable(index); }
Note: Entity-based view objects inherit this conditional updatability as they do everything else encapsulated in your entity objects. Should you need to implement this type of conditional updatability logic in a way that is specific to a transient view object attribute, or to enforce some condition that involves data from multiple entity objects participating in the view object, you can override this same method in a view object's view row class to achieve the desired result. |