Friday, 17 June 2016

ADF: Daily use code

1. How  to make a current row, programmatically

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);
        }


Source: Alok Ranjan

2 comments:

  1. Wow this article is very nice
    You are doing great job,keep it up!
    Interesting stuff to read it is really helpfull..
    Best BCA College in Meerut

    ReplyDelete
  2. Casino, Hotel and Spa - MapYRO
    Casino, Hotel and Spa is 대전광역 출장샵 located near 김해 출장마사지 the 서산 출장마사지 airport at the southern end of the 파주 출장안마 Las Vegas Strip in Las 천안 출장마사지 Vegas. Casino guests can enjoy free parking and the

    ReplyDelete