Overriding ViewObjectImpl::rowQualifies(...) for in memory filtering of child nodes of a tree component

You can override ViewObjectImpl::rowQualifies(ViewRowImpl vr) for filtering the uncommitted data rows based on some specific business use cases/conditions. This feature is pretty useful if you need to filter the child rows having uncommitted changes while executing the ViewLink(s). I'm sharing a simple example illustrating the usage of ViewObjectImpl::rowQualifies(ViewRowImpl vr) for filtering the rows in memory. Requirement is to not to show the Employee nodes of a 'Department-Employee Tree' component having status='DELETE'(even before committing the transaction). This example overrides rowQualifies(...) to restrict the employee entities with 'DELETED' status from adding to the query result.

 
/**  
 * Evaluates whether the view row qualifies the view object's row match  
 * and in-memory filter view criteria.  
 * <p>  
 *  
 * This method is invoked on new view rows as well as view rows coming  
 * from query to see if the view row should be added to the query collection.  
 *  
 * @param  vr  the view row to examine.  
 * @return a <code>boolean</code> value indicating whether the row qualifies  
 *     or not.  
 */  
 @Override  
 protected boolean rowQualifies(ViewRowImpl vr) {  
  Object attrValue =vr.getAttribute("StatusFlag");  
  if (attrValue != null) {  
   if ("DELETE".equals(attrValue))  
      return false;  
   else  
      return true;  
  }  
  return super.rowQualifies(vr);  
 }  

Download

You can download the sample workspace from here.
[Runs with Oracle JDeveloper 11g R1 PS3 + HR Schema]

How to run this sample?

Run test.jspx. This page may let you to update the status of the employee entities by selecting a value from the 'status' list. Please note that 'Department-Employee' tree doesn't displays employee entities with 'DELETE' status. This is controlled by EmployeesViewImpl::rowQualifies(ViewRowImpl vr) method.

Comments

subu said…
help me.
https://forums.oracle.com/forums/forum.jspa?forumID=83

i follow ur blog: for my scenario
in my senario all r fine. but for hide the row based on the status.
ok.

each and every time i want to refresh the url or else re - run the jspx file. for hiding the row. i did all as you said partial submit partial trigger.
subu said…
problem i leaved out in this link.
https://forums.oracle.com/forums/thread.jspa?threadID=2299005&tstart=15


for hide the row. each n every time i want re-run the jspx file. or else refresh the url. what i do.
subu said…
This comment has been removed by the author.
subu said…
@Override
protected boolean rowQualifies(ViewRowImpl viewRowImpl)
{
Object attrValue =viewRowImpl.getAttribute("GlalStatus");
if (attrValue != null) {
if ( ("A".equals(attrValue)) || ("N".equals(attrValue)) || ("C".equals(attrValue)) )
return false;

else
return true;

}
return super.rowQualifies(viewRowImpl);
}

this is my code.

i dont choose the select onchoice. in button code of bean. it automaticaly changed the value of select one choice.

and i want to say. so i make thing.

dciter.dccontrolrefresh(). i write this in the button.

while using the iterator refresh. but sometimes all works fine. but sometimes row is not hiding.

but you doesnot handle this.

am struggling.struggling. i can t undertud.
subu said…
This comment has been removed by the author.
subu said…
here some more codes.

Disclaimer

The views expressed on this blog are my own and do not necessarily reflect the views of my employer.