Get the current node of a tree in Oracle ADF | Techartifact

Requirement- To get the current selected node of tree and get value of that node.

We will be writing selectionListener for that tree in managed bean.first we invoke the default tree selection listener with the expression
#{bindings.Departments.treeModel.makeCurrent}. In order to do this, we use a helper method called invokeMethodExpression(). Then, we obtain the currently selected node from the tree by calling getRowData() on the oracle.adf.view.rich.component.rich.data.RichTree component (obtained earlier from the selection event).

    public void treeRowSelectionlistener(SelectionEvent selectionEvent) {
       
        invokeMethodExpression("#{bindings.checklistStructureVO1.treeModel.makeCurrent}", Object.class, SelectionEvent.class, selectionEvent);
        
        RichTree tree = (RichTree)selectionEvent.getSource(); // get the tree component from the event
           TreeModel model = (TreeModel)tree.getValue();    
           //get selected nodes
           RowKeySet rowKeySet = selectionEvent.getAddedSet();
        Iterator rksIterator = rowKeySet.iterator();
        //Validating for single select only. Need to check for multiselect
        while (rksIterator.hasNext()) {
            List key = (List)rksIterator.next();
            JUCtrlHierBinding treeBinding = null;
            CollectionModel collectionModel = (CollectionModel)tree.getValue();
            treeBinding = (JUCtrlHierBinding)collectionModel.getWrappedData();            
            JUCtrlHierNodeBinding nodeBinding = null;
            nodeBinding = treeBinding.findNodeByKeyPath(key);
            Row rw = nodeBinding.getRow();
           
            int seqId = ((BigDecimal)rw.getAttribute("ChecklistStructureId")).intValue(); // We can get the column name value from that node or row. 
            String elementId=((BigDecimal)rw.getAttribute("ElementId")).toString();
            String ChecklistStructureId=((BigDecimal)rw.getAttribute("ChecklistStructureId")).toString();
            String ElementName=(String)rw.getAttribute("ElementName"); 
           
           
            Object result = ob1.execute();
            //System.out.println("XXXXXXXXXXXX"+result.toString());
            if (!ob1.getErrors().isEmpty()){
                List errorList = ob1.getErrors();
                System.out.println("ERROR IN VC EXECUTION");
                // Capture and handle Error
            }   
        
     
    }
    }


        private Object invokeMethodExpression(String expr, Class returnType, Class[] argTypes, Object[] args){
           FacesContext fc = FacesContext.getCurrentInstance(); 
           ELContext elctx = fc.getELContext();
           ExpressionFactory elFactory = fc.getApplication().getExpressionFactory(); 
           MethodExpression methodExpr = elFactory.createMethodExpression(elctx,expr,returnType,argTypes);    
           return methodExpr.invoke(elctx,args); 
        }

Happy coding with Techartifact

getting current row of table in ADF

Requirment- Get the current row of table in ADF

         DCBindingContainer bindings = (DCBindingContainer)getBindings();                
        DCIteratorBinding dcIter = bindings.findIteratorBinding("IOOrderLinesVO4Iterator");
         RowSetIterator lineRSIter = dcIter.getRowSetIterator();
        Row r = lineRSIter.getCurrentRow();

programmatically navigate to particulart taskflow in ADF | Techartifact

Requirement-How to programmatically navigate to particulart taskflow in ADF.

Solution-

Following code show the sample code for navigating to particular taskflow using code.You can write it down in some managed bean

        TabContext tabContext = TabContext.getCurrentInstance();
        tabContext.setMainContent("/WEB-INF/flows/Global-Search.xml#Global-Search");// Global-Search is name of taskflow.

Import statement

import oracle.ui.pattern.dynamicShell.TabContext;
import oracle.ui.pattern.dynamicShell.TabContext.TabContentAreaDirtyException;

happy coding with techartifact ..This is end of 2012. Overall a great year. Lot of changes in Techartifact.

Note: this is only valid when you using Dynamic UI shell template.
Wishing you all a very prosperous Happy new Year enjoy …. 🙂