/*
* Copyright (c) 2015 Red Hat, Inc. and/or its affiliates.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cheng Fang - Initial API and implementation
*/
package org.jberet.rest.entity;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.batch.runtime.JobExecution;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* Represents a job execution, which includes fields such as its href,
* job execution id, job name (id), create time, last update time,
* job parameters, job instance id, and those fields inherited from
* {@link AbstractExecutionEntity} (start time, end time, batch status, and exit status).
*
* @see AbstractExecutionEntity
*
* @since 1.3.0
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
//@XmlType(propOrder =
// {"executionId", "href", "jobName", "jobInstanceId", "jobParameters", "batchStatus", "exitStatus", "createTime", "startTime", "lastUpdatedTime", "endTime"})
public final class JobExecutionEntity extends AbstractExecutionEntity implements JobExecution, Serializable {
private static final long serialVersionUID = -8566764098276314827L;
@XmlElement
private long executionId;
@XmlElement
private String href;
@XmlElement
private Date createTime;
@XmlElement
private Date lastUpdatedTime;
@XmlElement
private Properties jobParameters;
@XmlElement
private String jobName;
@XmlElement
private long jobInstanceId;
@XmlTransient
private List<StepExecutionEntity> stepExecutions = new ArrayList<StepExecutionEntity>();
public JobExecutionEntity() {
}
public JobExecutionEntity(final JobExecution jobExecution, final long jobInstanceId) {
super(jobExecution.getStartTime(), jobExecution.getEndTime(),
jobExecution.getBatchStatus(), jobExecution.getExitStatus());
this.executionId = jobExecution.getExecutionId();
this.createTime = jobExecution.getCreateTime();
this.lastUpdatedTime = jobExecution.getLastUpdatedTime();
this.jobName = jobExecution.getJobName();
this.jobParameters = jobExecution.getJobParameters();
this.jobInstanceId = jobInstanceId;
}
public static JobExecutionEntity[] fromJobExecutions(final List<JobExecution> jobExecutions, final long instanceId) {
final int len = jobExecutions.size();
JobExecutionEntity[] result = new JobExecutionEntity[len];
for (int i = len - 1; i >= 0; i--) {
result[len - 1 - i] = new JobExecutionEntity(jobExecutions.get(i), instanceId);
}
return result;
}
public long getExecutionId() {
return executionId;
}
public void setExecutionId(long executionId) {
this.executionId = executionId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getLastUpdatedTime() {
return lastUpdatedTime;
}
public void setLastUpdatedTime(Date lastUpdatedTime) {
this.lastUpdatedTime = lastUpdatedTime;
}
public Properties getJobParameters() {
return jobParameters;
}
public void setJobParameters(Properties jobParameters) {
this.jobParameters = jobParameters;
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public List<StepExecutionEntity> getStepExecutions() {
return stepExecutions;
}
public void setStepExecutions(List<StepExecutionEntity> stepExecutions) {
this.stepExecutions = stepExecutions;
}
public String getHref() {
return href;
}
public void setHref(final String href) {
this.href = href;
}
public long getJobInstanceId() {
return jobInstanceId;
}
public void setJobInstanceId(final long jobInstanceId) {
this.jobInstanceId = jobInstanceId;
}
}