blob: 45b31292fb91a28d57c78bc6a2853704079691ad [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.oodt.cas.webcomponents.workflow;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.oodt.cas.workflow.structs.Workflow;
import org.apache.oodt.cas.workflow.structs.WorkflowCondition;
import org.apache.oodt.cas.workflow.structs.WorkflowInstance;
import org.apache.oodt.cas.workflow.structs.WorkflowInstancePage;
import org.apache.oodt.cas.workflow.structs.WorkflowTask;
import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
/**
*
* Describe your class here.
*
* @author mattmann
* @version $Revision$
*
*/
public class WorkflowMgrConn implements Serializable {
private static final long serialVersionUID = -9081117871702614402L;
private static final Logger LOG = Logger.getLogger(WorkflowMgrConn.class
.getName());
private XmlRpcWorkflowManagerClient wm;
public WorkflowMgrConn(String wmUrlStr) {
try {
this.wm = new XmlRpcWorkflowManagerClient(new URL(wmUrlStr));
} catch (MalformedURLException e) {
LOG.log(Level.SEVERE, "Unable to contact Workflow Manager at URL: ["
+ wmUrlStr + "]: Message: " + e.getMessage());
this.wm = null;
}
}
public WorkflowTask safeGetTaskById(String taskId) {
try {
return new SerializableWorkflowTask(this.wm.getTaskById(taskId));
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow task with ID: ["
+ taskId + "]: Message: " + e.getMessage());
return null;
}
}
public WorkflowCondition safeGetConditionById(String conditionId) {
try {
return new SerializableWorkflowCondition(this.wm
.getConditionById(conditionId));
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow condition with ID: ["
+ conditionId + "]: Message: " + e.getMessage());
return null;
}
}
public Workflow safeGetWorkflowById(String workflowId) {
try {
return this.wm.getWorkflowById(workflowId);
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow with ID: ["
+ workflowId + "]: Message: " + e.getMessage());
return null;
}
}
public List<Workflow> safeGetWorkflowsByEvent(String eventName) {
try {
return this.wm.getWorkflowsByEvent(eventName);
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflows by event: ["
+ eventName + "]: Message: " + e.getMessage());
return new Vector<Workflow>();
}
}
public List<String> safeGetRegisteredEvents() {
try {
return this.wm.getRegisteredEvents();
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain registered events: Message: "
+ e.getMessage());
return new Vector<String>();
}
}
public List<Workflow> safeGetWorkflows() {
try {
return this.wm.getWorkflows();
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflows: Message: "
+ e.getMessage());
return new Vector<Workflow>();
}
}
public List<WorkflowInstance> safeGetWorkflowInsts() {
try {
return this.wm.getWorkflowInstances();
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow instances: Message: "
+ e.getMessage());
return new Vector<WorkflowInstance>();
}
}
public List<WorkflowInstance> safeGetWorkflowInstsByStatus(String status) {
try {
return this.wm.getWorkflowInstancesByStatus(status);
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow instances by status: ["
+ status + "]: Message: " + e.getMessage());
return new Vector<WorkflowInstance>();
}
}
public WorkflowInstancePage safeGetWorkflowInstPageByStatus(int pageNum,
String status) {
try {
return this.wm.paginateWorkflowInstances(pageNum, status);
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow instance page: ["
+ pageNum + "] by status: [" + status + "]: Message: "
+ e.getMessage());
return null;
}
}
public WorkflowInstancePage safeGetWorkflowInstPageByStatus(int pageNum) {
try {
return this.wm.paginateWorkflowInstances(pageNum);
} catch (Exception e) {
LOG.log(Level.WARNING, "Unable to obtain workflow instance page: ["
+ pageNum + "]: Message: " + e.getMessage());
return null;
}
}
public double safeGetWorkflowWallClockMinutes(WorkflowInstance inst) {
try {
return this.wm.getWorkflowWallClockMinutes(inst.getId());
} catch (Exception e) {
LOG.log(Level.WARNING,
"Unable to obtain workflow wall clock mins: inst id: ["
+ inst.getId() + "]: Message: " + e.getMessage());
return -999.0;
}
}
public double safeGetWorkflowCurrentTaskWallClockMinutes(WorkflowInstance inst) {
try {
return this.wm.getWorkflowCurrentTaskWallClockMinutes(inst.getId());
} catch (Exception e) {
LOG.log(Level.WARNING,
"Unable to obtain workflow current task wall clock mins: inst id: ["
+ inst.getId() + "]: Message: " + e.getMessage());
return -999.0;
}
}
public XmlRpcWorkflowManagerClient getWM() {
return this.wm;
}
class SerializableWorkflowTask extends WorkflowTask implements Serializable {
private static final long serialVersionUID = 6859678680008137795L;
public SerializableWorkflowTask(WorkflowTask task) {
this.taskName = task.getTaskName();
this.taskId = task.getTaskId();
this.taskInstanceClassName = task.getTaskInstanceClassName();
this.preConditions = task.getPreConditions();
this.postConditions = task.getPostConditions();
this.order = task.getOrder();
this.requiredMetFields = task.getRequiredMetFields();
this.taskConfig = task.getTaskConfig();
}
}
class SerializableWorkflowCondition extends WorkflowCondition implements
Serializable {
private static final long serialVersionUID = 909843381568743621L;
public SerializableWorkflowCondition(WorkflowCondition cond) {
this.setConditionName(cond.getConditionName());
this.conditionInstanceClassName = cond.getConditionInstanceClassName();
this.order = cond.getOrder();
this.condConfig = cond.getTaskConfig();
}
}
}