import java.text.SimpleDateFormat;

import java.util.Map;

import javax.el.ELContext;
import javax.el.ExpressionFactory;

import javax.el.MethodExpression;
import javax.el.ValueExpression;

import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIViewRoot;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import oracle.adf.model.BindingContext;

import oracle.adf.model.binding.DCBindingContainer;

import oracle.adf.model.binding.DCIteratorBinding;

import oracle.adf.share.ADFContext;
import oracle.adf.share.logging.ADFLogger;
import oracle.adf.view.rich.component.rich.RichPopup;

import oracle.adf.view.rich.event.QueryEvent;

import oracle.binding.AttributeBinding;
import oracle.binding.BindingContainer;

import oracle.binding.ControlBinding;
import oracle.binding.OperationBinding;

import oracle.jbo.ApplicationModule;

import org.apache.myfaces.trinidad.render.ExtendedRenderKitService;
import org.apache.myfaces.trinidad.util.Service;

public class AdfUtil {
public static final ADFLogger LOGGER = ADFLogger.createADFLogger(AdfUtil.class);
public AdfUtil() {
super();
}

public static String getCurrentUser(){
return ADFContext.getCurrent().getSecurityContext().getUserName();
}

public static String getCurrentUserDisplayName(){
return ADFContext.getCurrent().getSecurityContext().getUserProfile().getDisplayName();
}

public static BindingContext getBindingContext(){
return BindingContext.getCurrent();
}

public static BindingContainer getBindingContainer(){
return getBindingContext().getCurrentBindingsEntry();
}

public static DCBindingContainer getDCBindingContainer(){
return (DCBindingContainer)getBindingContainer();
}

public static DCIteratorBinding getDCIteratorBindingByName(String iteratorName){
return getDCBindingContainer().findIteratorBinding(iteratorName) ;
}

public static OperationBinding getOperationBinding(String operationName){
OperationBinding operation = getDCBindingContainer().getOperationBinding(operationName);
return operation;
}

public static oracle.jbo.domain.Date getCurrentDateTime(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.sql.Date currentDate = new java.sql.Date(System.currentTimeMillis());
String currentDateStr = simpleDateFormat.format(currentDate);
return new oracle.jbo.domain.Date(currentDateStr);
}

public static FacesContext getFacesContext(){
return FacesContext.getCurrentInstance();
}

public static void setExpressionValue(String expression,Object value){
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
Application application = facesContext.getApplication();
ExpressionFactory elFactory = application.getExpressionFactory();
ValueExpression valueExpression = elFactory.createValueExpression(elContext, expression, Object.class);
Class bindClass = valueExpression.getType(elContext);
if(bindClass.isPrimitive()||bindClass.isInstance(value)){
valueExpression.setValue(elContext, value);
}
}

public static Object getExpressionValue(String expressionStr){
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
Application application = facesContext.getApplication();
ExpressionFactory expressionFactory = application.getExpressionFactory();
ValueExpression valueExpression = expressionFactory.createValueExpression(elContext, expressionStr, Object.class);
return valueExpression.getValue(elContext);
}

public static void showPopup(RichPopup richPopup){
FacesContext facesContext = FacesContext.getCurrentInstance();
ExtendedRenderKitService kitService = Service.getRenderKitService(facesContext, ExtendedRenderKitService.class);
String scriptStr = "var popup; popup=AdfPage.PAGE.findComponent('"+richPopup.getClientId(facesContext)+"'); popup.show();";
kitService.addScript(facesContext, scriptStr);
return ;
}

public static void addFacesInfoMessage(String messageStr){
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot viewRoot = facesContext.getViewRoot();
String viewId = viewRoot.getViewId();
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO,messageStr,"");
facesContext.addMessage(viewId, facesMessage);
}

public static void addFacesWarmMessage(String messageStr){
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot viewRoot = facesContext.getViewRoot();
String viewId = viewRoot.getViewId();
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_WARN,messageStr,"");
facesContext.addMessage(viewId, facesMessage);
}

public static void addFacesErrorMessage(String messageStr){
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot viewRoot = facesContext.getViewRoot();
String viewId = viewRoot.getViewId();
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,messageStr,"");
facesContext.addMessage(viewId,facesMessage);
}

public static Object getRequestParameterByName(String paraName){
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
Map paraMap = externalContext.getInitParameterMap();
return paraMap.get(paraName);
}

public static void closeCurrentPage(){
FacesContext facesContext = FacesContext.getCurrentInstance();
ExtendedRenderKitService extendService = Service.getRenderKitService(facesContext, ExtendedRenderKitService.class);
String scriptStr = "window.opener=null;window.open('','_self');window.close();";
extendService.addScript(facesContext,scriptStr);
}

// The code below should be in a Utility clas

public 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);
}

/**
* invokeMethodExpression("#{bindings.ProcessInstanceVO1Query.processQuery}",Object.class, QueryEvent.class, queryEvent);
* @param expr
* @param returnType
* @param argType
* @param argument
* @return
*/
public Object invokeMethodExpression(String expr, Class returnType,
Class argType, Object argument) {
return invokeMethodExpression(expr, returnType,
new Class[] { argType },
new Object[] { argument });
}

public static ApplicationModule getApplicationModuleForDataControl(String name) {
return (ApplicationModule)getExpressionValue("#{data." + name +
".dataProvider}");
}

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;
}

public static AttributeBinding findControlBinding(String attributeName) {
return findControlBinding(getBindingContainer(), attributeName);
}

public static void makeCurrent(SelectionEvent selectionEvent) {
RichTable _table = (RichTable)selectionEvent.getSource();
CollectionModel _tableModel = (CollectionModel)_table.getValue();
JUCtrlHierBinding _adfTableBinding =
(JUCtrlHierBinding)_tableModel.getWrappedData();
DCIteratorBinding _tableIteratorBinding =
_adfTableBinding.getDCIteratorBinding();
Object _selectedRowData = _table.getSelectedRowData();
JUCtrlHierNodeBinding _nodeBinding =
(JUCtrlHierNodeBinding)_selectedRowData;
Key _rwKey = _nodeBinding.getRowKey();
if (_rwKey != null) {

_tableIteratorBinding.setCurrentRowWithKey(_rwKey.toStringFormat(true));

}
}

}

ADFUtils的更多相关文章

  1. adf常用方法总结

    1.使用clientAttribute传值.获取值 或组件上面放客户端属性 <af:selectBooleanCheckbox text="" label="&qu ...

  2. ADF 入门帮助

    本文是由英文帮助翻译所得: 1>task flows “任务流 task flows”可以包括非可视化的组件,比如方法调用.“页片段 page fragment”可以运行在一个页面的某个局部区域 ...

  3. adf笔记

    1>jsf页面js调试,手动添加debugger调试 方案:在页面中添加debugger,然后打开“开发者工具”(必须打开),直接运行页面自动跳转到debugger处. 2>jdevelo ...

  4. AM使用指南:如何在Managed Bean中获取AM实例?

    AM是放置服务方法的地方,有时我们需要在Managed Bean中调用这些方法.要调用这些方法,首先要在Managed Bean中获取AM实例.这里要用到<ADF工具类:ADFUtil.java ...

随机推荐

  1. Restful的理解,Restful 优缺点

    写一下我对restful的理解,最近换工作面试的时候有问到我restful api的东西,工作中以前很多项目也是webapi + js前台控件的形式构建系统.实际上感觉restful太“理想化”,用起 ...

  2. js 常用脚本

    1.判断电话号码和手机号码 var tel = $("#tel").val(); if (isNotBlank($.trim(tel))) { //不为空的情况下判断符合手机号码标 ...

  3. Vue指令(二)--数组的变动

    1.数组更新数据,引起视图更新 数据驱动:数据发生变化,引起视图的变化 Vue在检测数组变化的时候,并不是直接重新渲染整个列表,而是最大化的复用Dom元素. 替换的数组中,含有相同元素的项是不会被重新 ...

  4. Vue-Render函数理解示例

    对应文档节点: https://vuefe.cn/v2/guide/render-function.html#Slots <body> <div id="app" ...

  5. 自己玩虚拟机上mongo备份

    rs.initiate({_id:"shard1RS",members:[{_id:1,host:"127.0.0.1:27018",priority:2},{ ...

  6. poj 1700 Crossing River 过河问题。贪心

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9887   Accepted: 3737 De ...

  7. java利用直方图实现图片对比

    需求 实现两张图对比,找出其中不同的部分. 分析 首先将大图切片,分成许多小图片.然后进行逐个对比,并设定相似度阈值,判断是否是相同.最后整理,根据生成数组标记不同部分.如果切片足够小,便越能精确找出 ...

  8. C# javascript 全选按钮

    function selectAll(checkbox) {                  $('input[type=checkbox]').attr('checked', $(checkbox ...

  9. Redis学习笔记(一) ---- Linux系统中部署Redis存储系统

    Redis 一.Redis简介 1.Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...

  10. 01_Nginx入门

    [Nginx概述] Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-Like协议下发行.其特点是占有内存少,并发能力强,事实上Nginx ...