blob: df266e779f771fdf27b20087578585e65bc60545 [file] [log] [blame]
/*
* 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.impl;
import javax.batch.runtime.BatchStatus;
import javax.batch.runtime.Metric;
import javax.batch.runtime.context.StepContext;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
public class StepContextImpl implements StepContext {
private String stepId = null;
private BatchStatus batchStatus = null;
private String exitStatus = null;
private Object transientUserData = null;
private Serializable persistentUserData = null;
private Exception exception = null;
private Timestamp starttime = null;
private Timestamp endtime = null;
private long stepExecID = Integer.MIN_VALUE;
private long stepInternalExecID = 0;
private final Properties properties = new Properties();
private String batchletProcessRetVal = null;
private final ConcurrentHashMap<String, Metric> metrics = new ConcurrentHashMap<String, Metric>();
public StepContextImpl(String stepId) {
this.stepId = stepId;
}
@Override
public BatchStatus getBatchStatus() {
return batchStatus;
}
@Override
public Exception getException() {
// TODO Auto-generated method stub
return exception;
}
public void setException(Exception exception) {
this.exception = exception;
}
@Override
public String getExitStatus() {
return exitStatus;
}
@Override
public String getStepName() {
return stepId;
}
@Override
public Metric[] getMetrics() {
final Collection<Metric> values = metrics.values();
return values.toArray(new Metric[values.size()]);
}
public Map<String, Metric> metricsAsMap() {
for (final Metric.MetricType type : Metric.MetricType.values()) {
metrics.putIfAbsent(type.name(), new MetricImpl(type, 0));
}
return Collections.unmodifiableMap(metrics);
}
public MetricImpl getMetric(MetricImpl.MetricType metricType) {
return (MetricImpl) metrics.get(metricType.name());
}
public void addMetric(MetricImpl.MetricType metricType, long value) {
metrics.putIfAbsent(metricType.name(), new MetricImpl(metricType, value));
}
@Override
public Serializable getPersistentUserData() {
return persistentUserData;
}
@Override
public Properties getProperties() {
return properties;
}
public Object getTransientUserData() {
return transientUserData;
}
@Override
public void setExitStatus(String status) {
this.exitStatus = status;
}
public void setBatchStatus(BatchStatus status) {
this.batchStatus = status;
}
@Override
public void setPersistentUserData(Serializable data) {
persistentUserData = data;
}
public void setTransientUserData(Object data) {
transientUserData = data;
}
@Override
public String toString() {
return (" stepId: " + stepId) + ", batchStatus: " + batchStatus + ", exitStatus: " + exitStatus
+ ", batchletProcessRetVal: " + batchletProcessRetVal + ", transientUserData: " + transientUserData + ", persistentUserData: " + persistentUserData;
}
@Override
public long getStepExecutionId() {
return stepExecID;
}
public long getStepInternalExecID() {
return stepInternalExecID;
}
public void setStepExecutionId(long stepExecutionId) {
if (stepExecID == Integer.MIN_VALUE) {
stepExecID = stepExecutionId;
}
}
public void setInternalStepExecutionId(long stepExecutionId) {
stepInternalExecID = stepExecutionId;
}
public void setStartTime(Timestamp startTS) {
starttime = startTS;
}
public void setEndTime(Timestamp endTS) {
endtime = endTS;
}
public Timestamp getStartTimeTS() {
return starttime;
}
public Timestamp getEndTimeTS() {
return endtime;
}
public String getBatchletProcessRetVal() {
return batchletProcessRetVal;
}
public void setBatchletProcessRetVal(String batchletProcessRetVal) {
this.batchletProcessRetVal = batchletProcessRetVal;
}
}