/**
* 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.ambari.view.pig.resources.jobs.models;
import org.apache.ambari.view.pig.persistence.utils.PersonalResource;
import org.apache.commons.beanutils.BeanUtils;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
/**
* Bean to represent Pig job
*
* Job lifecycle:
* SUBMITTING
* |
* [POST to Templeton]
* | |
* SUBMITTED SUBMIT_FAILED
* |
* |
* [GET result from job/:job_id]
* | | |
* COMPLETED KILLED FAILED
*/
public class PigJob implements Serializable, PersonalResource {
public static final String PIG_JOB_STATE_UNKNOWN = "UNKNOWN";
// in progress
public static final String PIG_JOB_STATE_SUBMITTING = "SUBMITTING";
public static final String PIG_JOB_STATE_SUBMITTED = "SUBMITTED";
public static final String PIG_JOB_STATE_RUNNING = "RUNNING";
// finished
public static final String PIG_JOB_STATE_SUBMIT_FAILED = "SUBMIT_FAILED";
public static final String PIG_JOB_STATE_COMPLETED = "COMPLETED";
public static final String PIG_JOB_STATE_FAILED = "FAILED";
public static final String PIG_JOB_STATE_KILLED = "KILLED";
public PigJob() {
}
public PigJob(Map<String, Object> stringObjectMap) throws InvocationTargetException, IllegalAccessException {
BeanUtils.populate(this, stringObjectMap);
}
private String id = null;
private String scriptId = null;
// cloned script data
private String pigScript = null;
private String pythonScript = null;
private String title = null;
private String templetonArguments = null;
private String owner;
// job info
private String forcedContent = null;
/**
* jobType possible values:
* null - regular execute
* "explain"
* "syntax_check"
*/
private String jobType = null;
/**
* Additional file to use in Explain job
*/
private String sourceFile = null;
private String sourceFileContent = null;
private String statusDir;
private Long dateStarted = 0L;
private Long duration = 0L;
private String jobId = null;
// status fields (not reliable)
private String status = PIG_JOB_STATE_UNKNOWN;
private Integer percentComplete = null;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PigJob)) return false;
PigJob pigScript = (PigJob) o;
return id.equals(pigScript.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
public boolean isInProgress() {
return status.equals(PIG_JOB_STATE_SUBMITTED) || status.equals(PIG_JOB_STATE_SUBMITTING) ||
status.equals(PIG_JOB_STATE_RUNNING);
}
@Override
public String getId() {
return id;
}
@Override
public void setId(String id) {
this.id = id;
}
@Override
public String getOwner() {
return owner;
}
@Override
public void setOwner(String owner) {
this.owner = owner;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getScriptId() {
return scriptId;
}
public void setScriptId(String scriptId) {
this.scriptId = scriptId;
}
public String getTempletonArguments() {
return templetonArguments;
}
public void setTempletonArguments(String templetonArguments) {
this.templetonArguments = templetonArguments;
}
public String getPigScript() {
return pigScript;
}
public void setPigScript(String pigScript) {
this.pigScript = pigScript;
}
public String getJobId() {
return jobId;
}
public void setJobId(String jobId) {
this.jobId = jobId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public void setStatusDir(String statusDir) {
this.statusDir = statusDir;
}
public String getStatusDir() {
return statusDir;
}
public Long getDateStarted() {
return dateStarted;
}
public void setDateStarted(Long dateStarted) {
this.dateStarted = dateStarted;
}
public Long getDuration() {
return duration;
}
public void setDuration(Long duration) {
this.duration = duration;
}
public Integer getPercentComplete() {
return percentComplete;
}
public void setPercentComplete(Integer percentComplete) {
this.percentComplete = percentComplete;
}
public String getPythonScript() {
return pythonScript;
}
public void setPythonScript(String pythonScript) {
this.pythonScript = pythonScript;
}
public String getForcedContent() {
return forcedContent;
}
public void setForcedContent(String forcedContent) {
this.forcedContent = forcedContent;
}
public String getJobType() {
return jobType;
}
public void setJobType(String jobType) {
this.jobType = jobType;
}
public String getSourceFileContent() {
return sourceFileContent;
}
public void setSourceFileContent(String sourceFileContent) {
this.sourceFileContent = sourceFileContent;
}
public String getSourceFile() {
return sourceFile;
}
public void setSourceFile(String sourceFile) {
this.sourceFile = sourceFile;
}
@Override
public String toString() {
return new StringBuilder("PigJob{")
.append("id='").append(id)
.append(", scriptId='").append(scriptId)
.append(", owner='").append(owner)
.append(", jobId='").append(jobId)
.append('}')
.toString();
}
}