Thursday 18 August 2016

Oracle ADF Day to Day Code

1. How  to make a row current, programatically
public void onTableSelect(SelectionEvent selectionEvent) { // --- perform optional pre-processing here --- //RichTable _table = (RichTable ) selectionEvent.getSource();CollectionModel model = (CollectionModel ) _table.getValue(); JUCtrlHierBinding_binding = (JUCtrlHierBinding)model.getWrappedData();DCIteratorBinding iteratorBinding = _binding.getDCIteratorBinding();Object _selectedRowData = _table´.getSelectedRowData(); JUCtrlHierNodeBindingnode = (JUCtrlHierNodeBinding) _selectedRowData ;Key rwKey = node.getRowKey();iteratorBinding.setCurrentRowWithKey(rwKey.toStringFormat(true));// --- perform optional post-processing here --- //}


2. How  to access memory scopes.
ADFContext.getCurrent().getApplicationScope();ADFContext.getCurrent().getSessionScope();AdfFacesContext.getCurrentInstance().getPageFlowScope();ADFContext.getCurrent().getRequestScope();ADFContext.getCurrent().getViewScope();

FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("isTrainCompDisabled", "true");

Application module sesion:
getSession().getUserData().put("USER_LOC", locationId);
adf.userSession.
userData.USER_LOC

3. Invoke  popup programaticaaly

public

 void
someAcion(ActionEvent event){ ...FacesContext fctx = FacesContext.getCurrentInstance();UIComponent launcher = (UIComponent) event.getSource();//get the client id of the launching component to//add as a hint argument to the popupString alignId launcher.getClientId(fctx);//Assuming that the popup has a JSF component binding//to the managed bean. Use the "binding" attribute of//the af:popup to build this binding referenceRichPopup popup = getPopup();RichPopup.PopupHints hints =
new
RichPopup.PopupHints();//align the popup with the component launching ithints.add(RichPopup.PopupHints.HintTypes.HINT_ALIGN_ID, launcher)hints.add(RichPopup.PopupHints.HintTypes.HINT_LAUNCH_ID, launcher)hints.add(RichPopup.PopupHints.HintTypes.HINT_ALIGN,RichPopup.PopupHints.AlignTypes.ALIGN_AFTER_END);popup.show(hints);}

4. To insert a new row in table at last and scroll the tabble to display the  new row

public
String newRowAction() {
CollectionModel tableModel =(CollectionModel) table1.getValue();
JUCtrlHierBinding adfModel =(JUCtrlHierBinding) tableModel.getWrappedData();
DCIteratorBinding dciter = adfModel.getDCIteratorBinding();//get the last row for the index and create a new row for the//user to editRow
lastRow = dciter.getNavigatableRowIterator().last();
Row newRow = dciter.getNavigatableRowIterator().createRow();
newRow.setNewRowState(Row.STATUS_INITIALIZED);
int
lastRowIndex =dciter.getNavigatableRowIterator().getRangeIndexOf(lastRow);
dciter.getNavigatableRowIterator().insertRowAtRangeIndex(lastRowIndex+1, newRow);// make the new row the current row of the tabledciter.setCurrentRowWithKey(newRow.getKey().toStringFormat(
true
));//table should have its displayRow attribute set to//"selected"AdfFacesContext.getCurrentInstance().addPartialTarget(table1);
return

null
;}

5. Binding container
import oracle.adf.model.BindingContext;
import oracle.binding.BindingContainer;...

BindingContext bindingContext = BindingContext.getCurrent();
BindingContainer bindings =bindingContext.getCurrentBindingsEntry();

6. Operation binding code
BindingContext bctx = BindingContext.getCurrent();
  BindingContainer bindings = bctx.getCurrentBindingsEntry();
  OperationBinding operationBinding =
       bindings.getOperationBinding("name_of_method_binding");
  //optional
  operationBinding.getParamsMap().put("argumentName1",value1);
  operationBinding.getParamsMap().put("argumentName2",value2);
  //invoke method
  operationBinding.execute();
  if (!operationBinding.getErrors().isEmpty()) {
     //check errors
     List errors = operationBinding.getErrors();
     Iterator<oracle.jbo.JboException> iterator = errors.iterator();
          while (iterator.hasNext()) {
              FacesMessage fm =
                  new FacesMessage(FacesMessage.SEVERITY_ERROR, iterator.next().getMessage(),
                                   null);
              FacesContext fctx = FacesContext.getCurrentInstance();
              fctx.addMessage(null, fm);
          }
  }
  //optional
  Object methodReturnValue = operationBinding.getResult();


7. Exception error in bean
public void onToolBarButtonAction(ActionEvent actionEvent) {
   JboException ex = new JboException("Just to tease you !!!!!");
   BindingContext bctx = BindingContext.getCurrent();
   ((DCBindingContainer)bctx.getCurrentBindingsEntry()).reportException(ex);
}

8. Redirect to another view programatically
public static void redirectToView(String viewId) {
    FacesContext fCtx = FacesContext.getCurrentInstance();
    ExternalContext eCtx = fCtx.getExternalContext();

    String activityUrl = ControllerContext.getInstance().getGlobalViewActivityURL(viewId);
    try {
        eCtx.redirect(activityUrl);
    } catch (IOException e) {
        e.printStackTrace();
        JSFUtils.addFacesErrorMessage("Exception when redirect to " + viewId);
    }
}

9.Getting the current row value

BindingContext ctx = BindingContext.getCurrent();
DCBindingContainer bc = (DCBindingContainer)ctx.getCurrentBindingsEntry();
DCIteratorBinding iterator = bc.findIteratorBinding("ViewObjectIterator");
Row r = iterator.getCurrentRow();
String empNameValue = (String)r.getAttribute("EmpName");

10.You can use the below code to refresh ADF page programatically

FacesContext context = FacesContext.getCurrentInstance()
String viewId = context.getViewRoot().getViewId()

ViewHandler vh = context.getApplication().getViewHandler()
UIViewRoot page = vh.createView(context, viewId);

context.setViewRoot(page);

Import the following classes

import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;


11. Operation binding code
            BindingContext ctx = BindingContext.getCurrent();
            DCBindingContainer bindings =
                (DCBindingContainer)ctx.getCurrentBindingsEntry();

            OperationBinding operation =
                bindings.getOperationBinding("addWhereClauseToOrderTypeVO");

            operation.getParamsMap().put("ou", valueChangeEvent.getNewValue());

            operation.execute();

            if (operation.getResult() != null) {
                Boolean result =
                    (Boolean)operation.getResult(); // cast to the expected result type
            }

12. Invoke CreateInsert from bean
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
        OperationBinding operationBinding = bindings.getOperationBinding("CreateInsert");
        Object result = operationBinding.execute();
        if (!operationBinding.getErrors().isEmpty()) {
            return null;
        }
        DCIteratorBinding dciter =(DCIteratorBinding) bindings.get("YourView1Iterator");
        Row row=dciter.getCurrentRow();
        row.setAttribute("Attribute 0", "value0");
        row.setAttribute("Attribute 1", "value1");
        row.setAttribute("Attribute 2", "value2");
        row.setAttribute("Attribute 3", "value3");



13. Click a button frm bean
        FacesContext fctx = FacesContext.getCurrentInstance();
                    UIViewRoot uiViewRoot = fctx.getViewRoot();
                    UIComponent comp = getEditBtn();
                    if (comp != null && (comp instanceof UIXCommand)) {
                        String clientId = comp.getClientId(fctx);
                      
                        StringBuffer scriptBuffer = new StringBuffer();
                        scriptBuffer.append("var button = AdfPage.PAGE.findComponentByAbsoluteId('" + clientId + "');");
                        scriptBuffer.append("if (button != null){");
                        scriptBuffer.append("AdfActionEvent.queue(button);}");
                      
                        writeJavaScriptToClient(scriptBuffer.toString());
                    } else {
                        //log.severe("Component not Found !!!");
                    }

    private void writeJavaScriptToClient(String script) {
            FacesContext fctx = FacesContext.getCurrentInstance();
            ExtendedRenderKitService erks = null;
            erks =
              Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
            erks.addScript(fctx, script);

        }

Another approach:
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot root = facesContext.getViewRoot(); 
//cb1 is the fully qualified name of the button
RichCommandButton button = (RichCommandButton) root.findComponent(“cb1?); // cb1 will be id of invisible button
ActionEvent actionEvent = new ActionEvent(button);
actionEvent.queue();   


3rd Approach:

UIComponent component = null;
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext != null) {
  UIComponent root = facesContext.getViewRoot();
  component = findComponent(root, "button_id");  // button_id will be id of invisible button
}

RichCommandButton button = (RichCommandButton)component;
ActionEvent actionEvent = new ActionEvent(button);
actionEvent.queue();   // we are queuing the all action programmaticly



14. Sequence EL
(new oracle.jbo.server.SequenceImpl("MOCA_BATCH_ID",
object.getDBTransaction())).getSequenceNumber()


15. Duplicate Check
        ViewObjectImpl portalAcc = IwePortalUserVO();

        portalAcc.setApplyViewCriteriaName("CheckActiveUser");
        portalAcc.setNamedWhereClauseParam("email", emailID);
        portalAcc.executeQuery();

        if (portalAcc != null & portalAcc.getRowCount() > 0) {
          
                //record found
Return duplicate
            }
Else {
Return no duplicate.
}


16. Validation and reading from resource bundle

    public void it2_validator(FacesContext facesContext,
                              UIComponent uIComponent, Object object) {
        // Add event code here...
    private static final String RESOURCE_BUNDLE_NAME =
    "com.nintendo.moca.view.MocaViewControllerBundle";
        String value = (String)object;
        if ((value == null) || (value.length() == 0)) {
            return;
        }

        DCBindingContainer bc = ADFUtil.getBindingContainer();
        OperationBinding operation =
            bc.getOperationBinding("checkForDuplicateBatchId");
        operation.getParamsMap().put("batchId", value);

        operation.execute();

        if (operation.getResult() != null) {
            Boolean result =
                (Boolean)operation.getResult(); // cast to the expected result type
            if (result) {
                /////Reading from property file////

                ResourceBundle resourceBundle =
                    BundleFactory.getBundle(RESOURCE_BUNDLE_NAME);
                String duplication=null;;
                String duplicationMsg=null;
                if (resourceBundle != null) {

                     duplication =
                        resourceBundle.getString("ERR_DUPLICATION");
                    duplicationMsg =
                       resourceBundle.getString("ERR_DUPLICATION_MSG");

                }

                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                              duplication,
                                                              duplicationMsg));
            }


        }
    }

17.
Print the roles of the current user
for ( String role : ADFContext.getCurrent().getSecurityContext().getUserRoles() ) {
  System.out.println("role "+role);
}

Retrieving the ADF security context and test if the user has the role 'users'     
SecurityContext sec = ADFContext.getCurrent().getSecurityContext();
if ( sec.isUserInRole("users") ) {
}

Verify if the user is authenticated
public boolean isAuthenticated() {
return ADFContext.getCurrent().getSecurityContext().isAuthenticated();
}

Getting the current user
public String getCurrentUser() {
return ADFContext.getCurrent().getSecurityContext().getUserName();
}

Getting the binding container
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();

Getting ADF attribute value from an ADF page definition
AttributeBinding attr = (AttributeBinding)bindings.getControlBinding("test");
attr.setInputValue("test");

Executing a  MethodAction
OperationBinding method = bindings.getOperationBinding("methodAction1");
method.execute();
List errors = method.getErrors();
method = bindings.getOperationBinding("methodAction2");
Map paramsMap = method.getParamsMap();
paramsMap.put("param","value")  ; 
method.execute();

Getting data from an ADF tree or table
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
FacesCtrlHierBinding treeData = (FacesCtrlHierBinding) dcBindings  .getControlBinding("tree");
Row[] rows = treeData.getAllRowsInRange();

Getting an attribute value from the current row of an iterator
DCIteratorBinding iterBind= (DCIteratorBinding)dcBindings.get("testIterator");
String attribute = (String)iterBind.getCurrentRow().getAttribute("field1");


Getting the current row of a iterator (another way)
FacesContext ctx = FacesContext.getCurrentInstance();
ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#bindings.testIter.currentRow.dataProvider}", TestHead.class);
TestHead test = (TestHead)ve.getValue(ctx.getELContext());


Getting the errors of an iterator
String error = iterBind.getError().getMessage();

Refresh an iterator
bindings.refreshControl();
iterBind.executeQuery();
iterBind.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);

All the rows of an iterator
Row[] rows = iterBind.getAllRowsInRange();
TestData dataRow = null;
for (Row row : rows) {
 dataRow = (TestData)((DCDataRow)row).getDataProvider();
}

Getting a session bean
FacesContext ctx = FacesContext.getCurrentInstance();
ExpressionFactory ef = ctx.getApplication().getExpressionFactory();
ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{testSessionBean}", TestSession.class);
TestSession test = (TestSession)ve.getValue(ctx.getELContext());

Main jsf page binding
DCBindingContainer dc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
Taskflow binding
DCTaskFlowBinding tf = (DCTaskFlowBinding)dc.findExecutableBinding("dynamicRegion1");
Page fragment's pagedef
JUFormBinding form = (JUFormBinding) tf.findExecutableBinding("regions_employee_regionPageDef");

Return a methodExpression like a control flow case action or ADF pagedef action
private MethodExpression getMethodExpression(String name) {
Class [] argtypes = new Class[1];
argtypes[0] = ActionEvent.class;
FacesContext facesCtx = FacesContext.getCurrentInstance();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = facesCtx.getELContext();
return elFactory.createMethodExpression(elContext,name,null,argtypes);
}

Adding Action and Action Listener to a command component
RichCommandMenuItem menuPage1 = new RichCommandMenuItem();
menuPage1.setId("page1");
menuPage1.setText("Page 1");
menuPage1.setActionExpression(getMethodExpression("page1"));
RichCommandButton button = new RichCommandButton();
button.setValueExpression("disabled",getValueExpression("#{!bindings."+item+".enabled}"));
button.setId(item);
button.setText(item);
MethodExpression me = getMethodExpression("#{bindings."+item+".execute}");
button.addActionListener(new MethodExpressionActionListener(me));
footer.getChildren().add(button);

Getting a ValueExpression
private ValueExpression getValueExpression(String name) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
Application app = facesCtx.getApplication();
ExpressionFactory elFactory = app.getExpressionFactory();
ELContext elContext = facesCtx.getELContext();
return  elFactory.createValueExpression(elContext, name, Object.class);
}

Adding Groovy expression to a component's attribute
RichInputText input = new RichInputText();
input.setValueExpression("value",getValueExpression("#{bindings."+item+".inputValue}"));
input.setValueExpression("label",getValueExpression("#{bindings."+item+".hints.label}"));
input.setId(item);
panelForm.getChildren().add(input);


Catch an exception and show it in the jsf page
catch(Exception e) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, msg);
}

FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, msgHead , msgDetail);
facesContext.addMessage(uiComponent.getClientId(facesContext), msg);                                                                 

Reset all the children's value of an UIComponent
private void resetValueInputItems(AdfFacesContext adfFacesContext,
                                UIComponent component){
  List items = component.getChildren();
  for ( UIComponent item : items ) {

      resetValueInputItems(adfFacesContext,item);

      if ( item instanceof RichInputText  ) {
          RichInputText input = (RichInputText)item;
          if ( !input.isDisabled() ) {
              input.resetValue() ;
              adfFacesContext.addPartialTarget(input);
          };
      } else if ( item instanceof RichInputDate ) {
          RichInputDate input = (RichInputDate)item;
          if ( !input.isDisabled() ) {
              input.resetValue() ;
              adfFacesContext.addPartialTarget(input);
          };
      }
  }
}

Redirect to an other url
ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
String url = ectx.getRequestContextPath()+"/adfAuthentication?logout=true&end_url=/faces/start.jspx";
try {
 response.sendRedirect(url);
} catch (Exception ex) {
 ex.printStackTrace();
}

PPR refresh a ADFcomponent
AdfFacesContext.getCurrentInstance().addPartialTarget(UIComponent);

Find a jsf component 
private UIComponent getUIComponent(String name) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
return facesCtx.getViewRoot().findComponent(name) ;
}

Getting an application module
private OEServiceImpl getAm(){
  FacesContext fc = FacesContext.getCurrentInstance();
  Application app = fc.getApplication();
  ExpressionFactory elFactory = app.getExpressionFactory();
  ELContext elContext = fc.getELContext();
  ValueExpression valueExp =
  elFactory.createValueExpression(elContext, "#{data.OEServiceDataControl.dataProvider}",
                                      Object.class);
  return   (OEServiceImpl)valueExp.getValue(elContext);
}

Change the locale
Locale newLocale = new Locale(this.language);
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(newLocale);


Getting stacktrace of an unhandled exception
private ControllerContext cc = ControllerContext.getInstance();
public String getStacktrace() {
  if ( cc.getCurrentViewPort().getExceptionData()!=null ) {
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      cc.getCurrentViewPort().getExceptionData().printStackTrace(pw);
      return sw.toString();       
  }
  return null;
}

Getting the selected rows from a table component

RowKeySet rks = table.getSelectedRowKeys();
Iterator it = rks.iterator();
while (it.hasNext()) {
 List selectedRowKeyPath = (List)it.next();         
 Row row = ((JUCtrlHierNodeBinding)table.getRowData(selectedRowKeyPath)).getRow();
}

18. Logging
    private static final ADFLogger _logger =
                ADFLogger.createADFLogger(Search.class);
-Djbo.debugoutput=adflogger -Djbo.adflogger.level=FINE
LOG.entering(this.getClass().getName(), "uploadArtifact()");
LOG.exiting(this.getClass().getName(), "uploadArtifact()");

19. Execute query against ROW
//This is done against the rows in the cache(no DB hit)
vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS);
ViewCriteria vc = vo.createViewCriteria();
ViewCriteriaRow vcr1 = vc.createViewCriteriaRow();
vcr1.setAttribute("LastName", "LIKE 'P%'");
vc.setCriteriaMode(ViewCriteria.CRITERIA_MODE_CACHE);//ViewCriteria.CRITERIA_MODE_QUERY | ViewCriteria.CRITERIA_MODE_
CACHE
vc.add(vcr1);
vo.applyViewCriteria(vc);
vo.executeQuery();
//1. ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES
//2. ViewObject.QUERY_MODE_SCAN_VIEW_ROWS
//3. ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS
ViewObject employeeVO = findViewObject("EmployeeDetails");
//Combine both database mode and entity cache query mode
employeeVO.setQueryMode(
ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES |
ViewObject.QUERY_MODE_SCAN_ENTITY_ROWS);
//Execute query
employeeVO.executeQuery();

20. Create and set where clause
ViewObject vo = findViewObject("EmployeeDetails");
//Append WHERE cluase
vo.setWhereClause("FirstName = :bindVarFirstName");
//Define the bind variable
vo.defineNamedWhereClauseParam("bindVarFirstName", null,
null);
//Set the bind param value
vo.setNamedWhereClauseParam("bindVarFirstName","Tom");
vo.executeQuery();
//Define WHERE clause with JDB style bind var :NNN
String whereClause = "EmployeeEO.EMPLOYEE_ID = :1";
ViewObject employeeVO =findViewObject("Employees");
employeeVO.setWhereClause(whereClause);
employeeVO.setWhereClauseParam(1,empId);
employeeVO.executeQuery();

/////How to remove VC\\
ViewObjectImpl vo = (ViewObjectImpl)findViewObject
("EmployeeDetails");
vo.removeApplyViewCriteriaName
(viewCriteriaCNameToBeRemoved);



21.Programaticaly setting the filter

//For transient
ViewObject vo = findViewObject("EmployeeDetails");
//FullName is a transient attribute
vo.setSortBy("FullName desc");
vo.executeQuery();

//for persistent
ViewObject vo = findViewObject("EmployeeDetails");
vo.setOrderByClause("EmployeeEO.FIRST_NAME ASC");
vo.executeQuery();

22. Check for the duplication
//Get row to be checked from employee view object
ViewObject vo = findViewObject("EmployeeDetails");
Row row = vo.getCurrentRow();
//Set the condition for in memory filtering
RowMatch rm = new RowMatch("FirstName = 'William'");
// alternatively use rm.setWhereClause( condition );
if (rm.rowQualifies(row)) {
//Row exists with William as first name

ViewObject vo = findViewObject("EmployeeDetails");
RowMatch rm = new RowMatch("LastName = :bvLastName");
vo.getVariableManager().setVariableValue("bvLastName", "Grant");

23, Add multiple VC row
ViewObject vo = findViewObject("EmployeeDetails");
ViewCriteria vc = vo.createViewCriteria();
ViewCriteriaRow vcRow1 = vc.createViewCriteriaRow();
vcRow1.setAttribute("JobId", "IT_PROG");
vc.addElement(vcRow1);
ViewCriteriaRow vcRow2 = vc.createViewCriteriaRow();
vcRow2.setAttribute("DepartmentId", "= 10");
vcRow2.setConjunction(ViewCriteriaRow.VC_CONJ_AND |
ViewCriteriaRow.VC_CONJ_NOT);
vc.addElement(vcRow2);
vo.applyViewCriteria(vc);
vo.executeQuery();

24. Create a new row
//Get the view object
ViewObject countries = findViewObject("CountryVO");
// Create a row and fill in the columns.
Row row = countries.createRow();
row.setAttribute("CountryId", "IN");
row.setAttribute("RegionId", 3);
//Insert row in to the default row set
countries.insertRow(row);

25. Default time out web.xml
<context-param>
<description>Chooses how many tokens should be preserved at any one time.</description>
<param-name>org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS</param-name>
<param-value>50</param-value>
</context-param>


26.To dump SOAP messages on the client side, use the following system property:

-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

27. Always insert new row at top, irrespective of selection of row.
        DCIteratorBinding dcib =
            (DCIteratorBinding)this.getBindings().get("VOIterator");
        RowSetIterator iter = dcib.getRowSetIterator();
        Row newRow = iter.createRow();
        iter.insertRowAtRangeIndex(0, newRow);
        iter.closeRowSetIterator();

28.
//In managed bean class
public void createInsertAction(ActionEvent actevnt) {
//Call row create routine defined in AM using binding API
BindingContext bc = BindingContext.getCurrent();
DCBindingContainer dcb =
(DCBindingContainer)bc.getCurrentBindingsEntry();
OperationBinding op = dcb.getOperationBinding
("createDeptRow");
Row row = (Row)op.execute();
if (op.getErrors().size() == 0) {
//On success, keep the new row as active
ArrayList lst = new ArrayList(1);
lst.add(row.getKey());
getDataTable().setActiveRowKey(lst);
}
}

29. custom query listener
public void queryPerfromed(QueryEvent queryEvent) {
DCBindingContainer bc = (DCBindingContainer)BindingContext.
getCurrent().getCurrentBindingsEntry();
DCBindingContainer searchBinding = (DCBindingContainer)bc.
findExecutableBinding("DeptViewCriteriaQuery");
String criteriaName = JUSearchBindingCustomizer.
getCriteriaName(searchBinding);
ViewCriteria vc = JUSearchBindingCustomizer.
getViewCriteria(searchBinding, criteriaName);
ViewCriteriaRow vcr1 = vc.createViewCriteriaRow();
vcr1.setAttribute("DepartmentId","10");
vc.addRow(vcr1);
invokeQueryEventMethodExpression
("#{bindings.DeptViewCriteriaQuery.processQuery}",
queryEvent);
}
/**
* Invoke Query EL
*/
private void invokeQueryEventMethodExpression(String expression,
QueryEvent queryEvent) {
FacesContext fctx = FacesContext.getCurrentInstance();
ELContext elctx = fctx.getELContext();
ExpressionFactory efactory =
fctx.getApplication().getExpressionFactory();
MethodExpression me =
efactory.createMethodExpression(elctx, expression,
Object.class, new Class[] { QueryEvent.class });
me.invoke(elctx, new Object[] { queryEvent });

30. Requirement-How to programmatically navigate to next jsf page in taskflow.
Solution-
Following code show the sample code for navigating one jsf to another using code.
FacesContext context = FacesContext.getCurrentInstance();

context.getApplication().getNavigationHandler().handleNavigation(context,null,"controlflowcase");

31. Increase the  memory of server
MEM_ARGS="-Xms2024m -Xmx3036m"
export MEM_ARGS
MEM_PERM_SIZE="-XX:PermSize=128m"
export MEM_PERM_SIZE
MEM_MAX_PERM_SIZE="-XX:MaxPermSize=512m"
export MEM_MAX_PERM_SIZE

32. code to apply VC through row
        EnrolleeRosterVOImpl vo = getEnrolleeRosterVO1();
        ViewCriteria vc1 =
            vo.getViewCriteriaManager().getViewCriteria("EnrolleeRosterVOCriteria");
        ViewCriteriaRow vcrow4 = vc1.createViewCriteriaRow();

        Calendar cal = Calendar.getInstance();
        cal.setTime((Date)criteriaMap.get("Birthdate"));
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(criteriaMap.get("Birthdate"));
        // Ouput "Wed Sep 26 14:23:28 EST 2012"
        String formatted = format1.format(cal.getTime());
        System.out.println(formatted);
        // Output "2012-09-26"
        // System.out.println(format1.parse(formatted));
        // Output "Wed Sep 26 00:00:00 EST 2012"*/
        ViewCriteriaItem vci4 = vcrow4.ensureCriteriaItem("Birthdate");
        vci4.setOperator(JboCompOper.OPER_CONTAINS);
        vci4.setValue(formatted);
        vcrow4.setConjunction(ViewCriteriaRow.VC_CONJ_AND);

        vc1.add(vcrow4);
        vo.applyViewCriteria(vc1);

33. Code to remove row
        EnrolleeRosterVOImpl vo = getEnrolleeRosterVO1();

        ViewCriteria v =
            vo.getViewCriteriaManager().getViewCriteria("EnrolleeRosterVOCriteria");
        String criteriaItemName = "Birthdate";
        if (v != null) {
            boolean found = false;
            while (v.hasNext() && !found) {
                ViewCriteriaRow vcr = (ViewCriteriaRow)v.next();
                if (vcr != null) {
                    ViewCriteriaItem[] vcis = vcr.getCriteriaItemArray();
                    if (vcis != null && vcis.length > 0) {
                        for (int j = 0; j < vcis.length && !found; j++) {
                            ViewCriteriaItem vci = vcis[j];
                            if (vci != null && criteriaItemName != null &&
                                criteriaItemName.equals(vci.getName())) {
                                found = true;
                                vci.setRemovable(true);
                                v.removeRow(vcr);
                                //  vci.setProperty( ViewCriteriaItemHints.CRITERIA_RENDERED_MODE_NEVER, true);
                                v.saveState();
                            }
                        }
                    }
                }
            }
        }

34. Java script to autopopulate value at specific pos
function filterForDates(evt) {
    var inputField = evt.getCurrentTarget();
    var oldValue = inputField.getSubmittedValue();
    var key = String.fromCharCode(evt.getKeyCode());
    var newValue = null;
    if (oldValue != null)
     newValue = oldValue + key;
    else
     newValue = key;
    if (newValue.length == 2){
     inputField.setValue(newValue + '/');
    }
    if (newValue.length == 5){
         inputField.setValue(newValue + '/');
    }
}
<af:clientListener method="filterForDates" type="keyDown"/>

35. Disabling key input in input date
<af:resource>
  function disableEntry(evt){ 
    evt.cancel();
  }
 </af:resource>

<af:inputDate label="Label 1" id="id1" readOnly="false"
  contentStyle="background-color:lightgray;">
  <af:clientListener method="disableEntry" type="keyDown"/>
</af:inputDate>

36. Exception error in model
    private void reportException(String errorMsg) {
        BindingContext bctx = BindingContext.getCurrent();
        ((DCBindingContainer)bctx.getCurrentBindingsEntry()).reportException(new Exception(errorMsg));
    }
37. Code to get multiple selected values:
JUCtrlListBinding listBindings = (JUCtrlListBinding)getBindings().get("DepartmentsView1");
        Object str[] = listBindings.getSelectedValues();
        StringBuilder saveMsg =
            new StringBuilder("<html><body><b><p style='color:red'>Selected Departments are-</p></b>");

        saveMsg.append("<ul>");
        for (int i = 0; i < str.length; i++) {
            System.out.println(str[i]);
            saveMsg.append("<li> <b>" + str[i].toString() + "</b></li>");
        }

        saveMsg.append("</ul><br>");
        saveMsg.append("</body></html>");
        FacesMessage msg = new FacesMessage(saveMsg.toString());
        FacesContext.getCurrentInstance().addMessage(null, msg);

38. Code to rest selcted value in shuttle
BindingContainer bc = this.getBindings();
        JUCtrlListBinding listBindings = (JUCtrlListBinding)bc.get("DepartmentsView1");
        listBindings.clearSelectedIndices();

38. Long running query
function longRunningTask(evt) {
            var popup = AdfPage.PAGE.findComponentByAbsoluteId('longRunningPopup');
            if (popup != null) {
                AdfPage.PAGE.addBusyStateListener(popup, busyStateListener);
                evt.preventUserInput();
            }
        }

<af:popup childCreation="deferred" autoCancel="disabled"
                  id="longRunningPopup" contentDelivery="immediate"
                  binding="#{pageFlowScope.EmaHomeDynamicRegionManagedBean.longRunningPopup}">
          <af:dialog id="dialog1" closeIconVisible="false" type="none"
                     title="Loading Please Wait..."
                     binding="#{pageFlowScope.EmaHomeDynamicRegionManagedBean.dialog1}"
                     inlineStyle="width:200px; text-align:center;">
            <af:image source="wait_animation.gif"
                      id="i1"/>
          </af:dialog>
</af:popup>
39. Support for enter key
function onFieldEnterKey(inputEvent){
    if (event.getKeyCode() == AdfKeyStroke.ENTER_KEY) {
      //get the input text component from the event           
      var inputTextField = inputEvent.getSource();
      //the button is relative to the input text field so
      //relative search will do with no worrying about naming
      //containers
      var defaultButton = inputTextField.findComponent('cb1');
      //perform a partial submot
      var partialSubmit = true;
      AdfActionEvent.queue(defaultButton,partialSubmit);
      //Enter key does not need to go to server as we
      //queued a new event
       event.cancel();
   }
}
<af:panelFormLayout id="pfl1">
  <f:facet name="footer">
     <af:commandButton text="Print Field Value" id="cb1" partialSubmit="true"                                           
                       clientComponent="true" action="#{View1Bean.onButtonPressed}"/>
   </f:facet>
   <af:inputText label="Enter Field" id="it1" binding="#{View1Bean.inputTextField}">
      <af:clientListener method="onFieldEnterKey" type="keyUp"/>
   </af:inputText> 
</af:panelFormLayout>

40.  How to invoke a servlet using goLink
            String serverNport = JsfUtils.getServerNPort();
            String contextPath = JsfUtils.getContextPath();
            internalUrl = serverNport + contextPath + "/pcpredirectservlet?";
  public static String getServerNPort()
  {
    ExternalContext ectx = getFacesContext().getExternalContext();
    HttpServletRequest request = (HttpServletRequest) ectx.getRequest();
    String s = request.getRequestURL().toString();
    String[] s1 = s.split("/");
    String s2 = s1[0] + "//" + s1[2];
    return s2;
  }
  public static String getContextPath()
  {
    ExternalContext ectx = getFacesContext().getExternalContext();
    HttpServletRequest request = (HttpServletRequest) ectx.getRequest();
    return request.getContextPath().toString();
  }

41. Binding refernce from bean
org.apache.myfaces.trinidad.util.ComponentReference
ComponentReference Usage:

private ComponentReference someUICompReference;

public UIComponent getSomeUIComponent(){
   return someUICompReference == null ?
            null : someUICompReference.getComponent();
}

public void setSomeUIComponent(UIComponent component) {
    someUICompReference =
        ComponentReference.newUIComponentReference(component);
}

42. Action event queue:
public void callAceVCE(ValueChangeEvent vce) {
if (vce.getNewValue() != null) {
//Code to call ActionEvent
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot root = facesContext.getViewRoot();
/**Pass cb1(buttonId) if page is not in taskflow, else if page is inside region then pass rgionid:buttonId*/
RichCommandButton button = (RichCommandButton)root.findComponent("r1:cb1");
ActionEvent  actionEvent = new ActionEvent (button);
actionEvent.queue();
}
}

43: Set the VO bind variable using view accessor
@Override
    public void prepareRowSetForQuery(ViewRowSetImpl viewRowSetImpl) {
        RowSetIterator[] masterRows = viewRowSetImpl.getMasterRowSetIterators();
        if (masterRows != null && masterRows.length > 0 && masterRows[0].getCurrentRow() != null &&
            masterRows[0].getCurrentRow().getAttribute("ManagerId") != null) {
            Integer managerId = (Integer) masterRows[0].getCurrentRow().getAttribute("ManagerId");
            viewRowSetImpl.ensureVariableManager().setVariableValue("BindManagerId", managerId);
            System.out.println("ManagerID in bind Var-" + managerId);

        }
        super.prepareRowSetForQuery(viewRowSetImpl);
    }

44. Get binding container of different page
/**
     * @param data
     * @return
     */
    public Object resolvEl(String data) {
        FacesContext fc = FacesContext.getCurrentInstance();
        Application app = fc.getApplication();
        ExpressionFactory elFactory = app.getExpressionFactory();
        ELContext elContext = fc.getELContext();
        ValueExpression valueExp = elFactory.createValueExpression(elContext, data, Object.class);
        Object Message = valueExp.getValue(elContext);
        return Message;
    }
  
    /**Method to get BindingContainer of Another page ,pageUsageId is the usageId of page defined in DataBindings.cpx file
     * @param pageUsageId
     * @return
     */
    public BindingContainer getBindingsContOfOtherPage(String pageUsageId) {
        return (BindingContainer) resolvEl("#{data." + pageUsageId + "}");
    }
45. PPR The page using Apache utility class
        //refresh the Dashboard. ComponentUtils is a utility class of Apache MyFaces Trinidad
        //that performs an efficient relative search for components. Naming containers can be
        //navigated by leading colons ":". E.g. "::" means that the search is performed in the
        //parent of the component the search is started from. pd1 is the ID of the parent
        //componen, ae is the actionListner event object
        UIComponent dashBoard = ComponentUtils.findRelativeComponent(ae.getComponent(), "::pd1");
        if (dashBoard != null) {
            //PPR
            AdfFacesContext.getCurrentInstance().addPartialTarget(dashBoard);
        }