Wednesday 18 September 2013

ADF Tree table component

How to show the Master -child data in Tree structure in ADF.?

ADF provides one simple component by ADF Tree Table component, using this this component we can show the data in Tree structure.

Consider Employee Department relationship. We will show the list of employes for a department.

1) Create the view link between Department and employee, then you can see the viewlink AM Data Model.

First move the DepartmentVo to right side, and then move the View link under the DepartmentVo, it will look like below screen shot.



  
Now you can see this master-child relationship in the data-control.

2) Drag and drop the Deprtment table from the data-control to the jsff page as ADF Tree Table as shown below.

Once you drag and drop as ADF Tree Table, Add the Employee to the Department as shown below. At the beginning the Target Data Source is blank for both Department and Employee, we need to add the iterator into the bindings and then we need to add the Target Data Source.




3) Go to the Bindings and go to the Executables Add the iterator for the Child entity  ie Employee



4) Now go the bindings, edit the Department, and add the target Data Source using EL pIcker as shown in below image. Similarly add the Target Data Source for the Employee.



Now run the page and see the UI , you will see the Employee Name under each Department.





Thursday 5 September 2013

Switche the componenets between list of components in ADF


Switcher component is used to switch the components between the list of two or more components.

For example i have 2 Graphs(Bar Graph and Pie Chart) and i want to switch between the two graphs.

I have drop down with the with two options 1) Bar Graph 2) Pie Chart

By default Bar graph is shown, and when the user selects Pie chart, the corresponding chart will be shown.

First create drop down with the with two options, Bar Graph and Pie Chart

 <af:selectOneChoice label="Choose Graph" id="soc1"
                        binding="#{HeadersTableTaskFlowBean.chooseChart}"
                        autoSubmit="true">
      <af:selectItem label="Bar Graph" value="BarGraph"
                     id="si2"/>
      <af:selectItem label="Pie Chart" value="PieChart" id="si1"/>
    </af:selectOneChoice>



1) Add one Switcher component into the fragment, and insert two facet(f : facet) inside the Switcher, name each with the proper names.

2) Insert panelBox into the each facet. drag and drop the VO from the data control and create bar graph into the 1st panel box, and drag and drop the VO, create the pie chart into another panelBox.
    The Structure of the fragment looks like below image.



3) Go to the property inspector and select the DefaultFacet from the Drop down as shown in the below image.



4) Add Bindings to the Switcher components , it will create setter and getter methods in the managed bean, so that we can change the default Facet dynamically.


the below code gets create in the managed bean

  private UIXSwitcher graphSwitcher;

    public void setGraphSwitcher(UIXSwitcher graphSwitcher) {
        this.graphSwitcher = graphSwitcher;
    }

    public UIXSwitcher getGraphSwitcher() {
        return graphSwitcher;
    }


 

4) Add valueChangeListener to the selectOneChoice, in the same managed bean.

 <af:selectOneChoice label="Choose Graph" id="soc1"
                        binding="#{HeadersTableTaskFlowBean.chooseChart}"
                        autoSubmit="true"
                        valueChangeListener="#{HeadersTableTaskFlowBean.changeGraphs}">

 changeGraphs is the method created in the managed bean.  In the valueChangeListener method get the new value from the drop down, set the defaultfacet and Facetname, and add the partial triggers.
 
 Below is the code 

 public void changeGraphs(ValueChangeEvent graph) {
        // Add event code here...
        String str = (String)graph.getNewValue();
        this.graphSwitcher.setDefaultFacet(str);
        this.graphSwitcher.setFacetName(str);
        AdfFacesContext ctx = AdfFacesContext.getCurrentInstance();
        ctx.addPartialTarget(graphSwitcher);      
    }


By default it will show the bar graph, as we have choosen the defaultFacet as BarGraph



And when we select the pie Chart from the drop down, it will show the pie chart.





Tuesday 3 September 2013

How to generated default values for the PK's

If we want to generate the default values for the PK's, there are many options to do that. I will show in 2 ways to generate the PK's


1) Open the Entity Object, and select the unique option and Primary Key option as show in the below image
It will generate the Random numbers, starting from 1.


2) If you want to generate the numbers sequentially not randomly, use sequences. Follow below steps to generate default values for PK using sequences.

i) Go to the SQL Developer, expand the DB and right click on the Sequncee to create new sequence as in shown below image.
ii) In the opened sequence pop-up, specify the values as you want . Press OK to complete.







iii) Now create a trigger fro the sequence which you have created.

CREATE OR REPLACE TRIGGER department_pk
       BEFORE INSERT
        ON Department
              FOR EACH ROW
                  BEGIN
                        SELECT SAMPLE_SEQ.nextval
                        INTO :new.Department_id
                  FROM dual;
                  END;



department_pk is the trigger name, Department is the table name , SAMPLE_SEQ is the sequence we have created. Department_id is the PK column name

iv) Now go to the Entity Object. open the attribute, and select the data type as DBSequence, then you can see the option to enter the Sequence name which you have created at the DB side. Enter the DB sequence name and press Ok.




And you can start using it.