All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.jbatch.container.jobinstance.StepExecutionImpl Maven / Gradle / Ivy

/*
 * 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 com.ibm.jbatch.container.jobinstance;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;

import jakarta.batch.api.partition.PartitionPlan;
import jakarta.batch.runtime.BatchStatus;
import jakarta.batch.runtime.Metric;
import jakarta.batch.runtime.StepExecution;

import com.ibm.jbatch.container.context.impl.MetricImpl;
import com.ibm.jbatch.container.context.impl.StepContextImpl;

public class StepExecutionImpl implements StepExecution, Serializable {
    
    private long commitCount = 0;
    private Timestamp endTime = null;
    private String exitStatus = null;
    private BatchStatus batchStatus = null;
    
    private long filterCount = 0;
    private long jobExecutionId = 0;
    private Timestamp lastUpdateTime = null;
    private long processSkipCount = 0;
    private long readCount = 0;
    private long readSkipCount = 0;
    private long rollbackCount = 0;
    private Timestamp startTime = null;
    private long stepExecutionId = 0;
    private String stepName = null;
    
    private long writeCount = 0;
    private long writeSkipCount = 0;
    
    private PartitionPlan plan = null;
    
    private Serializable persistentUserData = null;
    
    private StepContextImpl stepContext = null;
    
    public StepExecutionImpl(long jobExecutionId, long stepExecutionId) {
    	this.jobExecutionId = jobExecutionId;
    	this.stepExecutionId = stepExecutionId;
    }
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public long getStepExecutionId() {
        return this.stepExecutionId;
    }
    
    @Override
    public Date getEndTime() {
    	if (stepContext != null){
    		return this.stepContext.getEndTimeTS();
    	}
    	else {
    		if (endTime != null) {
    			return new Date(endTime.getTime());
    		} else {
    			return null;
    		}
    	}
    }

    // Not a spec API but for internal use.
    public long getJobExecutionId(){
    	return this.jobExecutionId;
    }
    
    @Override
    public String getExitStatus() {
    	if (stepContext != null){
    		return this.stepContext.getExitStatus();
    	}
    	else {
    		return exitStatus;
    	}
    }

    @Override
    public Date getStartTime() {
        if (stepContext != null){
    		return this.stepContext.getStartTimeTS();
        }
        else {
			if (startTime != null) {
				return new Date(startTime.getTime());
			} else {
				return null;
			}
		}
	}

	@Override
	public String toString() {
		StringBuffer buf = new StringBuffer();
		buf.append("---------------------------------------------------------------------------------");
		buf.append("getStepName(): " + this.getStepName() + "\n");
		buf.append("getStepExecutionId(): " + this.stepExecutionId + "\n");
		buf.append("getJobExecutionId(): " + this.jobExecutionId + "\n");
		// buf.append("getCommitCount(): " + this.getCommitCount() + "\n");
		// buf.append("getFilterCount(): " + this.getFilterCount() + "\n");
		// buf.append("getProcessSkipCount(): " + this.getProcessSkipCount() + "\n");
		// buf.append("getReadCount(): " + this.getReadCount() + "\n");
		// buf.append("getReadSkipCount(): " + this.getReadSkipCount() + "\n");
		// buf.append("getRollbackCount(): " + this.getRollbackCount() + "\n");
		// buf.append("getWriteCount(): " + this.getWriteCount() + "\n");
		// buf.append("getWriteSkipCount(): " + this.getWriteSkipCount() + "\n");
		buf.append("getStartTime(): " + this.getStartTime() + "\n");
		buf.append("getEndTime(): " + this.getEndTime() + "\n");
		// buf.append("getLastUpdateTime(): " + this.getLastUpdateTime() + "\n");
		buf.append("getBatchStatus(): " + this.getBatchStatus().name() + "\n");
		buf.append("getExitStatus(): " + this.getExitStatus());
		buf.append("---------------------------------------------------------------------------------");
		return buf.toString();
	}

	@Override
	public Metric[] getMetrics() {

		
		if (stepContext != null) {
			return stepContext.getMetrics();
		}
		else {
			Metric[] metrics = new MetricImpl[8];
			metrics[0] = new MetricImpl(MetricImpl.MetricType.READ_COUNT, readCount);
			metrics[1] = new MetricImpl(MetricImpl.MetricType.WRITE_COUNT, writeCount);
			metrics[2] = new MetricImpl(MetricImpl.MetricType.COMMIT_COUNT, commitCount);
			metrics[3] = new MetricImpl(MetricImpl.MetricType.ROLLBACK_COUNT, rollbackCount);
			metrics[4] = new MetricImpl(MetricImpl.MetricType.READ_SKIP_COUNT, readSkipCount);
			metrics[5] = new MetricImpl(MetricImpl.MetricType.PROCESS_SKIP_COUNT, processSkipCount);
			metrics[6] = new MetricImpl(MetricImpl.MetricType.FILTER_COUNT, filterCount);
			metrics[7] = new MetricImpl(MetricImpl.MetricType.WRITE_SKIP_COUNT, writeSkipCount);
			
			return metrics;
		}
	}

	@Override
	public BatchStatus getBatchStatus() {

		if (stepContext != null) {
			return this.stepContext.getBatchStatus();
		}
		else {
			return batchStatus;
		}
	}

	@Override
	public Serializable getPersistentUserData() {
		if (stepContext != null) {
			return this.stepContext.getPersistentUserData();
		}
		else {
			return this.persistentUserData;
		}
	}
    
	
	// impl specific setters
	public void setFilterCount(long filterCnt) {
		this.filterCount = filterCnt;
	}

	public void setLastUpdateTime(Timestamp lastUpdateTime) {
		this.lastUpdateTime = lastUpdateTime;
	}

	public void setProcessSkipCount(long processSkipCnt) {
		this.processSkipCount = processSkipCnt;
	}

	public void setReadCount(long readCnt) {
		this.readCount = readCnt;
	}

	public void setReadSkipCount(long readSkipCnt) {
		this.readSkipCount = readSkipCnt;
	}

	public void setRollbackCount(long rollbackCnt) {
		this.rollbackCount = rollbackCnt;
	}
	
	public void setJobExecutionId(long jobexecID) {
		this.jobExecutionId = jobexecID;
	}
	
	public void setStepExecutionId(long stepexecID) {
		this.stepExecutionId = stepexecID;
	}

        
	public void setStepName(String stepName) {
		this.stepName = stepName;
	}

	public void setWriteCount(long writeCnt) {
		this.writeCount = writeCnt;
	}

	public void setWriteSkipCount(long writeSkipCnt) {
		this.writeSkipCount = writeSkipCnt;
	}
    
	public void setStepContext(StepContextImpl stepContext) {
		this.stepContext = stepContext;
	}
	
	public void setCommitCount(long commitCnt) {
		this.commitCount = commitCnt;
	}
	
	public void setBatchStatus(BatchStatus batchstatus) {
		this.batchStatus = batchstatus;
	}

	public void setExitStatus(String exitstatus) {
		this.exitStatus = exitstatus;
	}

	public void setStartTime(Timestamp startts) {
		this.startTime = startts;
	}

	public void setEndTime(Timestamp endts) {
		this.endTime = endts;
	}

	public void setPersistentUserData(Serializable data) {
		this.persistentUserData = data;
	}

	@Override
	public String getStepName() {
		if (stepContext != null) {
			return this.stepContext.getStepName();
		}
		else {
			return stepName;
		}
	}

	public void setPlan(PartitionPlan plan) {
		this.plan = plan;
	}

	public PartitionPlan getPlan() {
		return plan;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy