ADF TaskFlowUtil.java 源码

  1. package view;  
  2.   
  3. import java.util.Collection;  
  4.   
  5. import java.util.HashMap;  
  6.   
  7. import java.util.Map;  
  8.   
  9. import javax.faces.application.Application;  
  10. import javax.faces.context.FacesContext;  
  11.   
  12. import oracle.adf.controller.ControllerContext;  
  13. import oracle.adf.controller.TaskFlowContext;  
  14. import oracle.adf.controller.TaskFlowId;  
  15. import oracle.adf.controller.ViewPortContext;  
  16. import oracle.adf.controller.metadata.MetadataService;  
  17. import oracle.adf.controller.metadata.model.DataControlScopeType;  
  18. import oracle.adf.controller.metadata.model.NamedParameter;  
  19. import oracle.adf.controller.metadata.model.TaskFlowDefinition;  
  20. import oracle.adf.controller.metadata.model.TaskFlowInputParameter;  
  21. import oracle.adf.controller.metadata.model.TransactionType;  
  22. import oracle.adf.model.BindingContext;  
  23. import oracle.adf.model.DataControlFrame;  
  24. import oracle.adf.model.binding.DCDataControl;  
  25. import oracle.adf.view.rich.context.AdfFacesContext;  
  26.   
  27. /** 
  28.  * ADF task flow utilities for use with JDev/ADF 11g+. 
  29.  *  
  30.  * Available under the Creative Commons Attribution 3.0 Unported License. 
  31.  * See: http://one-size-doesnt-fit-all.blogspot.com/p/terms-conditions.html 
  32.  *  
  33.  * Absolutely no warranty implied, *use*at*your*own*risk*.  This code has been mostly used 
  34.  * for checking task flow features and hasn't been used in a production environment. 
  35.  *  
  36.  * Author: Chris Muir @ Oracle.com 
  37.  * Date: 19th April 2012 
  38.  */  
  39. public class TaskFlowUtils {  
  40.   
  41.     public String getTaskFlowName() {  
  42.         MetadataService metadataService = MetadataService.getInstance();  
  43.         TaskFlowDefinition taskFlowDefinition = metadataService.getTaskFlowDefinition(getCurrentTaskFlowId());  
  44.         String taskFlowName = null;  
  45.         if (taskFlowDefinition != null) {  
  46.             TaskFlowId taskFlowId = taskFlowDefinition.getTaskFlowId();  
  47.   
  48.             if (taskFlowId != null)  
  49.                 taskFlowName = taskFlowDefinition.getTaskFlowId().getFullyQualifiedName();  
  50.             else  
  51.                 taskFlowName = "Null";  
  52.         } else  
  53.             taskFlowName = "Null";  
  54.   
  55.   
  56.         return taskFlowName;  
  57.     }  
  58.   
  59.     public String getTaskFlowControlScopeName() {  
  60.         MetadataService metadataService = MetadataService.getInstance();  
  61.         String controlScopeTypeString;  
  62.         TaskFlowDefinition taskFlowDefinition = metadataService.getTaskFlowDefinition(getCurrentTaskFlowId());  
  63.         if (taskFlowDefinition != null) {  
  64.             String taskFlowName = taskFlowDefinition.getTaskFlowId().getFullyQualifiedName();  
  65.             DataControlScopeType controlScopeType = taskFlowDefinition.getDataControlScopeType();  
  66.   
  67.             if (controlScopeType == null || controlScopeType == DataControlScopeType.SHARED)  
  68.                 controlScopeTypeString = "Shared Data Control Scope";  
  69.             else if (controlScopeType == DataControlScopeType.ISOLATED)  
  70.                 controlScopeTypeString = "Isolated Data Control Scope";  
  71.             else  
  72.                 controlScopeTypeString = "UNKNOWN Data Control Scope";  
  73.         } else  
  74.             controlScopeTypeString = "Null";  
  75.   
  76.         return controlScopeTypeString;  
  77.     }  
  78.   
  79.     public String getTaskFlowControlTransactionTypeName() {  
  80.         MetadataService metadataService = MetadataService.getInstance();  
  81.         String transactionTypeString;  
  82.         TaskFlowDefinition taskFlowDefinition = metadataService.getTaskFlowDefinition(getCurrentTaskFlowId());  
  83.         if (taskFlowDefinition != null) {  
  84.             String taskFlowName = taskFlowDefinition.getTaskFlowId().getFullyQualifiedName();  
  85.   
  86.             TransactionType transactionType = taskFlowDefinition.getTransactionType();  
  87.   
  88.             if (transactionType == null)  
  89.                 transactionTypeString = "-No Controller Transaction-";  
  90.             else if (transactionType == TransactionType.NEW_TRANSACTION)  
  91.                 transactionTypeString = "Always Begin New Transaction";  
  92.             else if (transactionType == TransactionType.REQUIRES_TRANSACTION)  
  93.                 transactionTypeString = "Use Existing Transaction if Possible";  
  94.             else if (transactionType == TransactionType.REQUIRES_EXISTING_TRANSACTION)  
  95.                 transactionTypeString = "Always Use Existing Transaction";  
  96.             else  
  97.                 transactionTypeString = "UNKNOWN Transaction Type";  
  98.         } else  
  99.             transactionTypeString = "Null";  
  100.   
  101.         return transactionTypeString;  
  102.     }  
  103.   
  104.     public HashMap formatTaskFlowParameters(Map btfParameters) {  
  105.         HashMap taskFlowParameterValues = new HashMap();  
  106.   
  107.         FacesContext facesContext = FacesContext.getCurrentInstance();  
  108.         Application application = facesContext.getApplication();  
  109.         AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();  
  110.         Map pageFlowScope = adfFacesContext.getPageFlowScope();  
  111.   
  112.         for (Object parameter : btfParameters.values()) {  
  113.             NamedParameter namedParameter = (NamedParameter)parameter;  
  114.             String parameterName = namedParameter.getName();  
  115.             String parameterExpression = namedParameter.getValueExpression();  
  116.             Object parameterValue;  
  117.             String stringValue;  
  118.   
  119.             if (parameterExpression == null) {  
  120.                 parameterValue = pageFlowScope.get(parameterName);  
  121.             } else {  
  122.                 parameterValue = application.evaluateExpressionGet(facesContext, parameterExpression, Object.class);  
  123.             }  
  124.   
  125.             if (parameterValue != null) {  
  126.                 try {  
  127.                     stringValue = parameterValue.toString();  
  128.                 } catch (Exception e) {  
  129.                     stringValue = "";  
  130.                 }  
  131.             } else {  
  132.                 stringValue = "";  
  133.             }  
  134.   
  135.             taskFlowParameterValues.put(parameterName, stringValue);  
  136.         }  
  137.         return taskFlowParameterValues;  
  138.     }  
  139.   
  140.     public TaskFlowId getCurrentTaskFlowId() {  
  141.         ControllerContext controllerContext = ControllerContext.getInstance();  
  142.         ViewPortContext currentViewPort = controllerContext.getCurrentViewPort();  
  143.         TaskFlowContext taskFlowContext = currentViewPort.getTaskFlowContext();  
  144.         TaskFlowId taskFlowId = taskFlowContext.getTaskFlowId();  
  145.   
  146.         return taskFlowId;  
  147.     }  
  148.   
  149.     public TaskFlowDefinition getTaskFlowDefinition(TaskFlowId taskFlowId) {  
  150.         MetadataService metadataService = MetadataService.getInstance();  
  151.         TaskFlowDefinition taskFlowDefinition = metadataService.getTaskFlowDefinition(taskFlowId);  
  152.   
  153.         return taskFlowDefinition;  
  154.     }  
  155.   
  156.     public Map getCurrentTaskFlowInputParameters() {  
  157.         return getInputParameters(getCurrentTaskFlowId());  
  158.     }  
  159.   
  160.     public Map getInputParameters(TaskFlowId taskFlowId) {  
  161.         TaskFlowDefinition taskFlowDefinition = getTaskFlowDefinition(taskFlowId);  
  162.         Map taskFlowInputParameters = taskFlowDefinition.getInputParameters();  
  163.   
  164.         return taskFlowInputParameters;  
  165.     }  
  166.   
  167.     public Map getCurrentTaskFlowReturnParameters() {  
  168.         return getReturnParameters(getCurrentTaskFlowId());  
  169.     }  
  170.   
  171.     public Map getReturnParameters(TaskFlowId taskFlowId) {  
  172.         TaskFlowDefinition taskFlowDefinition = getTaskFlowDefinition(taskFlowId);  
  173.         Map namedParameters = taskFlowDefinition.getReturnValues();  
  174.   
  175.         return namedParameters;  
  176.     }  
  177.   
  178.   
  179.     public String getDataControlFrameName() {  
  180.         BindingContext bindingContext = oracle.adf.controller.binding.BindingUtils.getBindingContext();  
  181.         String dataControlFrameName = bindingContext.getCurrentDataControlFrame();  
  182.   
  183.         return dataControlFrameName;  
  184.     }  
  185.   
  186.     public DataControlFrame getDataControlFrame() {  
  187.         BindingContext bindingContext = oracle.adf.controller.binding.BindingUtils.getBindingContext();  
  188.         String dataControlFrameName = bindingContext.getCurrentDataControlFrame();  
  189.         DataControlFrame dataControlFrame = bindingContext.findDataControlFrame(dataControlFrameName);  
  190.   
  191.         return dataControlFrame;  
  192.     }  
  193.   
  194.     public void commitTaskFlow() {  
  195.         getDataControlFrame().commit();  
  196.     }  
  197.   
  198.     public void rollbackTaskFlow() {  
  199.         getDataControlFrame().rollback();  
  200.     }  
  201.   
  202.     public boolean isTaskFlowTransactionDirty() {  
  203.         return getDataControlFrame().isTransactionDirty();  
  204.     }  
  205.   
  206.     public String getOpenTransactionName() {  
  207.         return getDataControlFrame().getOpenTransactionName();  
  208.     }  
  209.   
  210.     public String getDataControlNames() {  
  211.         BindingContext bindingContext = oracle.adf.controller.binding.BindingUtils.getBindingContext();  
  212.         String dataControlFrameName = bindingContext.getCurrentDataControlFrame();  
  213.         DataControlFrame dataControlFrame = bindingContext.findDataControlFrame(dataControlFrameName);  
  214.         Collection dataControls = dataControlFrame.datacontrols();  
  215.         String names = "";  
  216.         for (DCDataControl dc : dataControls) {  
  217.             names = names + "," + dc.getName() + dc.hashCode();  
  218.         }  
  219.   
  220.         return names;  
  221.     }  
  222. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值