get object of ApplicationModule in managed bean in ADF | Techartifact

Requirment- Need an object of Application module in managed bean

Sometime we required to get an object of ApplicationModule in managed bean.May be we want to play with some VO object which we can get from
ApplicationModuleImpl Object only.

There are two ways.

First way-

        FacesContext context = FacesContext.getCurrentInstance();
        BindingContext bindingContext = BindingContext.getCurrent();
        DCDataControl dc  = bindingContext.findDataControl("AppModuleAMDataControl"); // Name of application module in datacontrolBinding.cpx
        AppModuleAMImpl appM = (AppModuleAMImpl)dc.getDataProvider();
     

Above AppModuleAMDataControl is name of application module in datacontrolBinding.cpx,open datacontrol and check the ID in tag. See below for reference.

 <BC4JDataControl id="AppModuleAMDataControl" Package="oper.model.module"
                     FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl" SupportsTransactions="true"
                     SupportsFindMode="true" SupportsRangesize="true" SupportsResetState="true"
                     SupportsSortCollection="true" Configuration="AppModuleAMLocalWeb" syncMode="Immediate"
                     xmlns="http://xmlns.oracle.com/adfm/datacontrol"/>

Now you got the application module you can get the object of any ViewObjectImpl.

Second Way-

You can get the object of applicationModuleImpl by writing this line-

AppModuleAMImpl am = (AppModuleAMImpl)resolvElDC(AppModuleAMDataControl)

resolvElDC method is described below


private Object resolvElDC(String data) {
        FacesContext fc = FacesContext.getCurrentInstance();
        Application app = fc.getApplication();
        ExpressionFactory elFactory = app.getExpressionFactory();
        ELContext elContext = fc.getELContext();
        ValueExpression valueExp =
            elFactory.createValueExpression(elContext, #{data. + data + .dataProvider}, Object.class);
        return valueExp.getValue(elContext);
    }

Happy coding with Techartifact . 🙂

Display data for last 15 days and next 30 days in af:calendar in ADF | Techartifact.

Requirment – In calendar component , we need to show data for last 15 days and next 30 days in list mode.

Solution-Seems little tricky. But not much.Let check out in calendar property.

Well there is property called ActiveDay and ListCount. We will be binding the ActiveDay with a managed bean and setting ActiveDay from that bean.

Create a varible like “private Date currentDate;” and generate getter setter method of it in myCalendarBean. Override the getter method of current Date.

    public void setCurrentDate(Date currentDate) {
        this.currentDate = currentDate;
    }

    public Date getCurrentDate() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -15);
        Date date = calendar.getTime();
        
        return date;
    }


And we need to show last 15 days and next 30 days. that mean total 45 days. We will putting 45 in ListCount.

See in below screenshot.Today is 18 nov. And we getting date range from 3 nov to 17 Dec. 🙂

And that all. nothing to do.

Happy Coding with Techartifact.

Executing bind variable from Application module in ADF – Techartifact

Requirment- To execute the bind variable from application module- Or executing view criteria on page load

Solution- Assumption that you created a view object and view criteria .Now you have bind variable in view criteria.
You are passing the value using some managed bean stored in some scope.

Open the application module and go to data model .Select the the view object in which view criteria is this.Click on edit.

In the edit view instance dialog box.select the view criteria and shuttle to the right.now in the bind parameter value ,open the expression builder
and put right value like – “adf.context.sessionScope.LabelTemplate.taskId” .Here LabelTemplate is managed bean stored in session scope.

That all. Now run the page where you using view object.and page will load with result of bind variable.But note you cant use this VO anywhere where you don’t need a bind variable.

Enjoy coding with techaritfact