Changing the WHERE clause or VO Query at runtime in Oracle ADF

Requirement- To change the WHERE clause of a query at run time:

Create a String containing the new WHERE clause. Do not include the word “WHERE”. If you do want to remove the WHERE clause entirely, use null. For example, either of the following could be appropriate definitions:

Pass this string into setWhereClause(). For example, if OrdVO is a variable containing the view object instance to be changed, you would call:

String whereClause = “ORDER_TOTAL > 500”;
String whereClause = null;
ordVO.setWhereClause(whereClause);

You can write this method in AmImpl.Java.For example

    public void executeSearchInstanceNoExp(String instanceNo) {
    String whereClause="instance_status = 'EXPIRED'";
    ViewObjectImpl searchVO = this.getEmployeeVo(); //relaventVO
    searchVO.setWhereClause(whereClause);
    searchVO.executeQuery(); //executeVO with Criteria

    }

you can add ORDER BY clauses of a query at runtime by calling setOrderByClause() on the view object.

String orderByClause = "ORDER_TOTAL";
ordVO.setOrderByClause(orderByClause);

Change the VO query at runtime or changing the Table or view at runtime

createViewObjectFromQueryStmt is used to change the query .You can write this method in AmImpl.Java

    public void executeSearchVoExp() {
       String sqlStatement= "select * from EMP";
        ViewObject dynamicVO = this.findViewObject("SearchByCustomerVo1");  
        dynamicVO.remove();  
        dynamicVO = this.createViewObjectFromQueryStmt("SearchByCustomerVo1", sqlStatement);  
        dynamicVO.executeQuery(); //executeVO with Criteria

    }

creating a basic skeleton to invoke an AM in Java Class in Oracle ADF

Here is a very cool way of quickly creating a basic skeleton to invoke an AM :

1) Create a Test java class.

2) Inside the mail class, type in keyword ‘bc4jclient’ :

package model;

public class Class1 {
public Class1() {
super();
}

public static void main(String[] args) {
Class1 class1 = new Class1();

bc4jclient
}
}</blockquote>
<div></div>
<blockquote>

3) Press Ctrl + Enter.4) Voila!! A small skeleton to invoke AM gets created:

package model;

import oracle.jbo.*;
import oracle.jbo.client.Configuration;
import oracle.jbo.domain.*;
import oracle.jbo.domain.Number;

public class Class1 {
public Class1() {
super();
}

public static void main(String[] args) {
Class1 class1 = new Class1();

String amDef = "test.TestModule";
String config = "TestModuleLocal";
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
ViewObject vo = am.findViewObject("TestView");
// Work with your appmodule and view object here
Configuration.releaseRootApplicationModule(am, true);
}
}

show af:message programatically in ADF | Techartifact

Requirment- To show the message in ADF

ADF Faces uses the standard JSF messaging API. JSF supports a built-in framework for messaging by allowing FacesMessage instances to be added to the FacesContext object using the addMessage(java.lang.String clientId, FacesMessage message) method. You can set the type of message like – error, fatal,info,warning.

            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage("NoRecordsFound", 
                                    new FacesMessage(FacesMessage.SEVERITY_INFO,
                                                     "No Records Found", 
                                                     "No Orders matching searched criteria"));
            facesContext.renderResponse(); 

Happy coding with Techartifact