ADF工具类:ADFUtil.java 源代码

来源:互联网 发布:三级网络技术题库软件 编辑:程序博客网 时间:2024/06/03 16:30
package com.javaneverdie.adfdemo.table.view.util;import java.util.ArrayList;import java.util.List;import javax.faces.model.SelectItem;import oracle.adf.model.BindingContext;import oracle.adf.model.binding.DCBindingContainer;import oracle.adf.model.binding.DCIteratorBinding;import oracle.adf.model.binding.DCParameter;import oracle.adf.share.logging.ADFLogger;import oracle.binding.AttributeBinding;import oracle.binding.BindingContainer;import oracle.binding.ControlBinding;import oracle.binding.OperationBinding;import oracle.jbo.ApplicationModule;import oracle.jbo.Key;import oracle.jbo.Row;import oracle.jbo.uicli.binding.JUCtrlValueBinding;/** * A series of convenience functions for dealing with ADF Bindings. * Note: Updated for JDeveloper 11 * * @author Duncan Mills * @author Steve Muench * * $Id: ADFUtils.java 2513 2007-09-20 20:39:13Z ralsmith $. */public class ADFUtils {    public static final ADFLogger LOGGER =        ADFLogger.createADFLogger(ADFUtils.class);    /**     * Get application module for an application module data control by name.     * @param name application module data control name     * @return ApplicationModule     */    public static ApplicationModule getApplicationModuleForDataControl(String name) {        return (ApplicationModule)JSFUtils.resolveExpression("#{data." + name +                                                             ".dataProvider}");    }    /**     * A convenience method for getting the value of a bound attribute in the     * current page context programatically.     * @param attributeName of the bound value in the pageDef     * @return value of the attribute     */    public static Object getBoundAttributeValue(String attributeName) {        return findControlBinding(attributeName).getInputValue();    }    /**     * A convenience method for setting the value of a bound attribute in the     * context of the current page.     * @param attributeName of the bound value in the pageDef     * @param value to set     */    public static void setBoundAttributeValue(String attributeName,                                              Object value) {        findControlBinding(attributeName).setInputValue(value);    }    /**     * Returns the evaluated value of a pageDef parameter.     * @param pageDefName reference to the page definition file of the page with the parameter     * @param parameterName name of the pagedef parameter     * @return evaluated value of the parameter as a String     */    public static Object getPageDefParameterValue(String pageDefName,                                                  String parameterName) {        BindingContainer bindings = findBindingContainer(pageDefName);        DCParameter param =            ((DCBindingContainer)bindings).findParameter(parameterName);        return param.getValue();    }    /**     * Convenience method to find a DCControlBinding as an AttributeBinding     * to get able to then call getInputValue() or setInputValue() on it.     * @param bindingContainer binding container     * @param attributeName name of the attribute binding.     * @return the control value binding with the name passed in.     *     */    public static AttributeBinding findControlBinding(BindingContainer bindingContainer,                                                      String attributeName) {        if (attributeName != null) {            if (bindingContainer != null) {                ControlBinding ctrlBinding =                    bindingContainer.getControlBinding(attributeName);                if (ctrlBinding instanceof AttributeBinding) {                    return (AttributeBinding)ctrlBinding;                }            }        }        return null;    }    /**     * Convenience method to find a DCControlBinding as a JUCtrlValueBinding     * to get able to then call getInputValue() or setInputValue() on it.     * @param attributeName name of the attribute binding.     * @return the control value binding with the name passed in.     *     */    public static AttributeBinding findControlBinding(String attributeName) {        return findControlBinding(getBindingContainer(), attributeName);    }    /**     * Return the current page's binding container.     * @return the current page's binding container     */    public static BindingContainer getBindingContainer() {        return (BindingContainer)JSFUtils.resolveExpression("#{bindings}");    }    /**     * Return the Binding Container as a DCBindingContainer.     * @return current binding container as a DCBindingContainer     */    public static DCBindingContainer getDCBindingContainer() {        return (DCBindingContainer)getBindingContainer();    }    /**     * Get List of ADF Faces SelectItem for an iterator binding.     *     * Uses the value of the 'valueAttrName' attribute as the key for     * the SelectItem key.     *     * @param iteratorName ADF iterator binding name     * @param valueAttrName name of the value attribute to use     * @param displayAttrName name of the attribute from iterator rows to display     * @return ADF Faces SelectItem for an iterator binding     */    public static List selectItemsForIterator(String iteratorName,                                                          String valueAttrName,                                                          String displayAttrName) {        return selectItemsForIterator(findIterator(iteratorName),                                      valueAttrName, displayAttrName);    }    /**     * Get List of ADF Faces SelectItem for an iterator binding with description.     *     * Uses the value of the 'valueAttrName' attribute as the key for     * the SelectItem key.     *     * @param iteratorName ADF iterator binding name     * @param valueAttrName name of the value attribute to use     * @param displayAttrName name of the attribute from iterator rows to display     * @param descriptionAttrName name of the attribute to use for description     * @return ADF Faces SelectItem for an iterator binding with description     */    public static List selectItemsForIterator(String iteratorName,                                                          String valueAttrName,                                                          String displayAttrName,                                                          String descriptionAttrName) {        return selectItemsForIterator(findIterator(iteratorName),                                      valueAttrName, displayAttrName,                                      descriptionAttrName);    }    /**     * Get List of attribute values for an iterator.     * @param iteratorName ADF iterator binding name     * @param valueAttrName value attribute to use     * @return List of attribute values for an iterator     */    public static List attributeListForIterator(String iteratorName,                                                String valueAttrName) {        return attributeListForIterator(findIterator(iteratorName),                                        valueAttrName);    }    /**     * Get List of Key objects for rows in an iterator.     * @param iteratorName iterabot binding name     * @return List of Key objects for rows     */    public static List keyListForIterator(String iteratorName) {        return keyListForIterator(findIterator(iteratorName));    }    /**     * Get List of Key objects for rows in an iterator.     * @param iter iterator binding     * @return List of Key objects for rows     */    public static List keyListForIterator(DCIteratorBinding iter) {        List attributeList = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            attributeList.add(r.getKey());        }        return attributeList;    }    /**     * Get List of Key objects for rows in an iterator using key attribute.     * @param iteratorName iterator binding name     * @param keyAttrName name of key attribute to use     * @return List of Key objects for rows     */    public static List keyAttrListForIterator(String iteratorName,                                                   String keyAttrName) {        return keyAttrListForIterator(findIterator(iteratorName), keyAttrName);    }    /**     * Get List of Key objects for rows in an iterator using key attribute.     *     * @param iter iterator binding     * @param keyAttrName name of key attribute to use     * @return List of Key objects for rows     */    public static List keyAttrListForIterator(DCIteratorBinding iter,                                                   String keyAttrName) {        List attributeList = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            attributeList.add(new Key(new Object[] { r.getAttribute(keyAttrName) }));        }        return attributeList;    }    /**     * Get a List of attribute values for an iterator.     *     * @param iter iterator binding     * @param valueAttrName name of value attribute to use     * @return List of attribute values     */    public static List attributeListForIterator(DCIteratorBinding iter,                                                String valueAttrName) {        List attributeList = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            attributeList.add(r.getAttribute(valueAttrName));        }        return attributeList;    }    /**     * Find an iterator binding in the current binding container by name.     *     * @param name iterator binding name     * @return iterator binding     */    public static DCIteratorBinding findIterator(String name) {        DCIteratorBinding iter =            getDCBindingContainer().findIteratorBinding(name);        if (iter == null) {            throw new RuntimeException("Iterator '" + name + "' not found");        }        return iter;    }    /**     * @param bindingContainer     * @param iterator     * @return     */    public static DCIteratorBinding findIterator(String bindingContainer,                                                 String iterator) {        DCBindingContainer bindings =            (DCBindingContainer)JSFUtils.resolveExpression("#{" +                                                           bindingContainer +                                                           "}");        if (bindings == null) {            throw new RuntimeException("Binding container '" +                                       bindingContainer + "' not found");        }        DCIteratorBinding iter = bindings.findIteratorBinding(iterator);        if (iter == null) {            throw new RuntimeException("Iterator '" + iterator +                                       "' not found");        }        return iter;    }    /**     * @param name     * @return     */    public static JUCtrlValueBinding findCtrlBinding(String name) {        JUCtrlValueBinding rowBinding =            (JUCtrlValueBinding)getDCBindingContainer().findCtrlBinding(name);        if (rowBinding == null) {            throw new RuntimeException("CtrlBinding " + name + "' not found");        }        return rowBinding;    }    /**     * Find an operation binding in the current binding container by name.     *     * @param name operation binding name     * @return operation binding     */    public static OperationBinding findOperation(String name) {        OperationBinding op =            getDCBindingContainer().getOperationBinding(name);        if (op == null) {            throw new RuntimeException("Operation '" + name + "' not found");        }        return op;    }    /**     * Find an operation binding in the current binding container by name.     *     * @param bindingContianer binding container name     * @param opName operation binding name     * @return operation binding     */    public static OperationBinding findOperation(String bindingContianer,                                                 String opName) {        DCBindingContainer bindings =            (DCBindingContainer)JSFUtils.resolveExpression("#{" +                                                           bindingContianer +                                                           "}");        if (bindings == null) {            throw new RuntimeException("Binding container '" +                                       bindingContianer + "' not found");        }        OperationBinding op = bindings.getOperationBinding(opName);        if (op == null) {            throw new RuntimeException("Operation '" + opName + "' not found");        }        return op;    }    /**     * Get List of ADF Faces SelectItem for an iterator binding with description.     *     * Uses the value of the 'valueAttrName' attribute as the key for     * the SelectItem key.     *     * @param iter ADF iterator binding     * @param valueAttrName name of value attribute to use for key     * @param displayAttrName name of the attribute from iterator rows to display     * @param descriptionAttrName name of the attribute for description     * @return ADF Faces SelectItem for an iterator binding with description     */    public static List selectItemsForIterator(DCIteratorBinding iter,                                                          String valueAttrName,                                                          String displayAttrName,                                                          String descriptionAttrName) {        List selectItems = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            selectItems.add(new SelectItem(r.getAttribute(valueAttrName),                                           (String)r.getAttribute(displayAttrName),                                           (String)r.getAttribute(descriptionAttrName)));        }        return selectItems;    }    /**     * Get List of ADF Faces SelectItem for an iterator binding.     *     * Uses the value of the 'valueAttrName' attribute as the key for     * the SelectItem key.     *     * @param iter ADF iterator binding     * @param valueAttrName name of value attribute to use for key     * @param displayAttrName name of the attribute from iterator rows to display     * @return ADF Faces SelectItem for an iterator binding     */    public static List selectItemsForIterator(DCIteratorBinding iter,                                                          String valueAttrName,                                                          String displayAttrName) {        List selectItems = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            selectItems.add(new SelectItem(r.getAttribute(valueAttrName),                                           (String)r.getAttribute(displayAttrName)));        }        return selectItems;    }    /**     * Get List of ADF Faces SelectItem for an iterator binding.     *     * Uses the rowKey of each row as the SelectItem key.     *     * @param iteratorName ADF iterator binding name     * @param displayAttrName name of the attribute from iterator rows to display     * @return ADF Faces SelectItem for an iterator binding     */    public static List selectItemsByKeyForIterator(String iteratorName,                                                               String displayAttrName) {        return selectItemsByKeyForIterator(findIterator(iteratorName),                                           displayAttrName);    }    /**     * Get List of ADF Faces SelectItem for an iterator binding with discription.     *     * Uses the rowKey of each row as the SelectItem key.     *     * @param iteratorName ADF iterator binding name     * @param displayAttrName name of the attribute from iterator rows to display     * @param descriptionAttrName name of the attribute for description     * @return ADF Faces SelectItem for an iterator binding with discription     */    public static List selectItemsByKeyForIterator(String iteratorName,                                                               String displayAttrName,                                                               String descriptionAttrName) {        return selectItemsByKeyForIterator(findIterator(iteratorName),                                           displayAttrName,                                           descriptionAttrName);    }    /**     * Get List of ADF Faces SelectItem for an iterator binding with discription.     *     * Uses the rowKey of each row as the SelectItem key.     *     * @param iter ADF iterator binding     * @param displayAttrName name of the attribute from iterator rows to display     * @param descriptionAttrName name of the attribute for description     * @return ADF Faces SelectItem for an iterator binding with discription     */    public static List selectItemsByKeyForIterator(DCIteratorBinding iter,                                                               String displayAttrName,                                                               String descriptionAttrName) {        List selectItems = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            selectItems.add(new SelectItem(r.getKey(),                                           (String)r.getAttribute(displayAttrName),                                           (String)r.getAttribute(descriptionAttrName)));        }        return selectItems;    }    /**     * Get List of ADF Faces SelectItem for an iterator binding.     *     * Uses the rowKey of each row as the SelectItem key.     *     * @param iter ADF iterator binding     * @param displayAttrName name of the attribute from iterator rows to display     * @return List of ADF Faces SelectItem for an iterator binding     */    public static List selectItemsByKeyForIterator(DCIteratorBinding iter,                                                               String displayAttrName) {        List selectItems = new ArrayList();        for (Row r : iter.getAllRowsInRange()) {            selectItems.add(new SelectItem(r.getKey(),                                           (String)r.getAttribute(displayAttrName)));        }        return selectItems;    }    /**     * Find the BindingContainer for a page definition by name.     *     * Typically used to refer eagerly to page definition parameters. It is     * not best practice to reference or set bindings in binding containers     * that are not the one for the current page.     *     * @param pageDefName name of the page defintion XML file to use     * @return BindingContainer ref for the named definition     */    private static BindingContainer findBindingContainer(String pageDefName) {        BindingContext bctx = getDCBindingContainer().getBindingContext();        BindingContainer foundContainer =            bctx.findBindingContainer(pageDefName);        return foundContainer;    }    /**     * @param opList     */    public static void printOperationBindingExceptions(List opList) {        if (opList != null && !opList.isEmpty()) {            for (Object error : opList) {                LOGGER.severe(error.toString());            }        }    }}
http://maping930883.blogspot.com/2010/04/adf053adfutiljava.html
0 0
原创粉丝点击