001 /** 002 * Copyright (c) 2010 Yahoo! Inc. All rights reserved. 003 * Licensed under the Apache License, Version 2.0 (the "License"); 004 * you may not use this file except in compliance with the License. 005 * You may obtain a copy of the License at 006 * 007 * http://www.apache.org/licenses/LICENSE-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, software 010 * distributed under the License is distributed on an "AS IS" BASIS, 011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 * See the License for the specific language governing permissions and 013 * limitations under the License. See accompanying LICENSE file. 014 */ 015 package org.apache.oozie.executor.jpa; 016 017 import java.util.List; 018 019 import javax.persistence.EntityManager; 020 import javax.persistence.Query; 021 022 import org.apache.oozie.ErrorCode; 023 import org.apache.oozie.WorkflowActionBean; 024 import org.apache.oozie.util.ParamChecker; 025 026 /** 027 * Load the WorkflowAction into a Bean and return it. 028 */ 029 public class WorkflowActionGetJPAExecutor implements JPAExecutor<WorkflowActionBean> { 030 031 private String wfActionId = null; 032 033 public WorkflowActionGetJPAExecutor(String wfActionId) { 034 ParamChecker.notNull(wfActionId, "wfActionId"); 035 this.wfActionId = wfActionId; 036 } 037 038 /* (non-Javadoc) 039 * @see org.apache.oozie.executor.jpa.JPAExecutor#getName() 040 */ 041 @Override 042 public String getName() { 043 return "WorkflowActionGetJPAExecutor"; 044 } 045 046 /* (non-Javadoc) 047 * @see org.apache.oozie.executor.jpa.JPAExecutor#execute(javax.persistence.EntityManager) 048 */ 049 @Override 050 @SuppressWarnings("unchecked") 051 public WorkflowActionBean execute(EntityManager em) throws JPAExecutorException { 052 List<WorkflowActionBean> waBeans; 053 try { 054 Query q = em.createNamedQuery("GET_ACTION"); 055 q.setParameter("id", wfActionId); 056 waBeans = q.getResultList(); 057 } 058 catch (Exception e) { 059 throw new JPAExecutorException(ErrorCode.E0603, e); 060 } 061 WorkflowActionBean bean = null; 062 if (waBeans != null && waBeans.size() > 0) { 063 bean = waBeans.get(0); 064 bean = getBeanForRunningAction(bean); 065 return bean; 066 } 067 else { 068 throw new JPAExecutorException(ErrorCode.E0605, wfActionId); 069 } 070 } 071 072 private WorkflowActionBean getBeanForRunningAction(WorkflowActionBean a) { 073 if (a != null) { 074 WorkflowActionBean action = new WorkflowActionBean(); 075 action.setId(a.getId()); 076 action.setConf(a.getConf()); 077 action.setConsoleUrl(a.getConsoleUrl()); 078 action.setData(a.getData()); 079 action.setErrorInfo(a.getErrorCode(), a.getErrorMessage()); 080 action.setExternalId(a.getExternalId()); 081 action.setExternalStatus(a.getExternalStatus()); 082 action.setName(a.getName()); 083 action.setCred(a.getCred()); 084 action.setRetries(a.getRetries()); 085 action.setTrackerUri(a.getTrackerUri()); 086 action.setTransition(a.getTransition()); 087 action.setType(a.getType()); 088 action.setEndTime(a.getEndTime()); 089 action.setExecutionPath(a.getExecutionPath()); 090 action.setLastCheckTime(a.getLastCheckTime()); 091 action.setLogToken(a.getLogToken()); 092 if (a.getPending() == true) { 093 action.setPending(); 094 } 095 action.setPendingAge(a.getPendingAge()); 096 action.setSignalValue(a.getSignalValue()); 097 action.setSlaXml(a.getSlaXml()); 098 action.setStartTime(a.getStartTime()); 099 action.setStatus(a.getStatus()); 100 action.setJobId(a.getWfId()); 101 return action; 102 } 103 return null; 104 } 105 106 }