/* | |
* Copyright 2012 International Business Machines Corp. | |
* | |
* See the NOTICE file distributed with this work for additional information | |
* regarding copyright ownership. Licensed 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.batchee.container.status; | |
import org.apache.batchee.container.exception.BatchContainerRuntimeException; | |
import org.apache.batchee.container.impl.controller.chunk.PersistentDataWrapper; | |
import org.apache.batchee.container.util.TCCLObjectInputStream; | |
import javax.batch.runtime.BatchStatus; | |
import java.io.ByteArrayInputStream; | |
import java.io.Serializable; | |
public class StepStatus implements Serializable { | |
/** | |
* | |
*/ | |
private static final long serialVersionUID = 1L; | |
private long stepExecutionId; | |
private BatchStatus batchStatus; | |
private String exitStatus; | |
private int startCount; | |
private PersistentDataWrapper persistentUserData; | |
private Integer numPartitions; | |
private long lastRunStepExecutionId; | |
public StepStatus(final long stepExecutionId, final int startCount) { | |
this.startCount = startCount; | |
this.stepExecutionId = stepExecutionId; | |
this.lastRunStepExecutionId = stepExecutionId; | |
this.batchStatus = BatchStatus.STARTING; | |
} | |
public StepStatus(final long stepExecutionId) { | |
this(stepExecutionId, 1); | |
} | |
public void setBatchStatus(BatchStatus batchStatus) { | |
this.batchStatus = batchStatus; | |
} | |
public BatchStatus getBatchStatus() { | |
return batchStatus; | |
} | |
@Override | |
public String toString() { | |
return ("stepExecutionId: " + stepExecutionId) | |
+ ",batchStatus: " + batchStatus | |
+ ",exitStatus: " + exitStatus | |
+ ",startCount: " + startCount | |
+ ",persistentUserData: " + persistentUserData | |
+ ",numPartitions: " + numPartitions; | |
} | |
public long getStepExecutionId() { | |
return stepExecutionId; | |
} | |
public int getStartCount() { | |
return startCount; | |
} | |
public void incrementStartCount() { | |
startCount++; | |
} | |
public void setExitStatus(String exitStatus) { | |
this.exitStatus = exitStatus; | |
} | |
public String getExitStatus() { | |
return exitStatus; | |
} | |
public void setPersistentUserData(final PersistentDataWrapper persistentUserData) { | |
this.persistentUserData = persistentUserData; | |
} | |
public byte[] getRawPersistentUserData() { | |
if (this.persistentUserData != null) { | |
return persistentUserData.getPersistentDataBytes(); | |
} | |
return null; | |
} | |
public Serializable getPersistentUserData() { | |
if (this.persistentUserData != null) { | |
final byte[] persistentToken = this.persistentUserData.getPersistentDataBytes(); | |
final ByteArrayInputStream persistentByteArrayInputStream = new ByteArrayInputStream(persistentToken); | |
TCCLObjectInputStream persistentOIS; | |
Serializable persistentObject; | |
try { | |
persistentOIS = new TCCLObjectInputStream(persistentByteArrayInputStream); | |
persistentObject = Serializable.class.cast(persistentOIS.readObject()); | |
} catch (final Exception e) { | |
throw new BatchContainerRuntimeException(e); | |
} | |
return persistentObject; | |
} | |
return null; | |
} | |
public Integer getNumPartitions() { | |
return numPartitions; | |
} | |
public void setNumPartitions(Integer numPartitions) { | |
this.numPartitions = numPartitions; | |
} | |
public void setStepExecutionId(long stepExecutionId) { | |
this.stepExecutionId = stepExecutionId; | |
this.lastRunStepExecutionId = this.stepExecutionId; | |
} | |
public long getLastRunStepExecutionId() { | |
return lastRunStepExecutionId; | |
} | |
public void setLastRunStepExecutionId(long lastRunStepExecutionId) { | |
this.lastRunStepExecutionId = lastRunStepExecutionId; | |
} | |
} |