Monday, March 6, 2017

OAF - Dynamically adding view attribute, Dynamically creating view object


In this article, we shall see code snippets in OAF, on
1.       How to dynamically add view attribute to existing VO
2.       How to create view object dynamically and get values by executing the query

How to dynamically add view attribute to existing VO

Following code can be used for dynamically adding new view attribute to existing standard VO

OAViewObject stdVO = (OAViewObject)am.findViewObject("OracleStdVO");
        if (stdVO != null) {
            try {
                String transientAttr =
                    stdVO.findAttributeDef("AdditionalInfo").toString();
            } catch (Exception e) {
                 stdVO.addDynamicAttribute("AdditionalInfo");
  pageContext.writeDiagnostics(this,"<<<Added dynamic transient  attribute>>>",OAFwkConstants.STATEMENT);
            }
               }

How to dynamically create query based view object

String requisitionLineId = 123;              // Need to pull up dynamically
String requisitionHeaderId = 234;           // Need to pull dynamically
       
// Create view object(only if doesnot exist) for getting ATTRIBUTE11 from PO_REQUISITION_LINES_ALL table
oracle.jbo.server.ViewObjectImpl customVO = (ViewObjectImpl)am.findViewObject("POReqVO");
if(customVO==null){
                pageContext.writeDiagnostics(this,"<<<Inside customVO is null>>>",OAFwkConstants.STATEMENT);
                // Define query.
                 String retnSqlStr = "select ATTRIBUTE11 from  PO_REQUISITION_LINES_ALL WHERE REQUISITION_LINE_ID =:1 AND REQUISITION_HEADER_ID = :2";
                customVO = (ViewObjectImpl)am.createViewObjectFromQueryStmt("POReqVO", retnSqlStr);
}
String attribute11  = null;
pageContext.writeDiagnostics(this,"<<<Created customVO>>>"+customVO,OAFwkConstants.STATEMENT);
customVO.setWhereClause(null);
customVO.setWhereClauseParams(null);
// Execute Query for this Requisition line
customVO.setWhereClauseParam(0,requisitionLineId);
customVO.setWhereClauseParam(1,requisitionHeaderId);
customVO.executeQuery();

int rowCnt = customVO.getRowCount();
pageContext.writeDiagnostics(this,"<<<Executed Retention Query RowCount = >>>"+rowCnt,OAFwkConstants.STATEMENT);
customVO.setRangeSize(rowCnt);
Row retnRows[] = customVO.getAllRowsInRange(); //there will be only one row but will loop

// Get  value after query execution
for(Row retnRow:retnRows){
                attribute11  = (String)retnRow.getAttribute(0);
                pageContext.writeDiagnostics(this,"<<<Inside retention query row loop retention = >>>"+retention,OAFwkConstants.STATEMENT);

}

No comments:

Post a Comment