/* * Copyright (c) 2012-2014 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.runtime; import java.io.Serializable; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import javax.batch.runtime.JobExecution; import javax.batch.runtime.JobInstance; import org.jberet.job.model.Job; public final class JobInstanceImpl implements JobInstance, Serializable { private static final long serialVersionUID = -933284750735124427L; private long id; private long version; private String jobName; private String applicationName; transient Job unsubstitutedJob; private final List<JobExecution> jobExecutions = new CopyOnWriteArrayList<JobExecution>(); public JobInstanceImpl(final Job unsubstitutedJob, final String applicationName, final String jobName) { //unsubstitutedJob may be null, so cannot get jobId from unsubstitutedJob this.jobName = jobName; this.applicationName = applicationName; this.unsubstitutedJob = unsubstitutedJob; } public void setId(final long id) { this.id = id; } @Override public String getJobName() { return this.jobName; } public String getApplicationName() { return this.applicationName; } @Override public long getInstanceId() { return this.id; } public List<JobExecution> getJobExecutions() { return jobExecutions; } public void addJobExecution(final JobExecution jobExecution) { this.jobExecutions.add(jobExecution); } public Job getUnsubstitutedJob() { return unsubstitutedJob; } public void setUnsubstitutedJob(final Job unsubstitutedJob) { this.unsubstitutedJob = unsubstitutedJob; } @Override public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final JobInstanceImpl that = (JobInstanceImpl) o; if (id != that.id) return false; return true; } @Override public int hashCode() { return (int) (id ^ (id >>> 32)); } }