Example usage for org.springframework.batch.core StepExecution getWriteCount

List of usage examples for org.springframework.batch.core StepExecution getWriteCount

Introduction

In this page you can find the example usage for org.springframework.batch.core StepExecution getWriteCount.

Prototype

public int getWriteCount() 

Source Link

Document

Returns the current number of items written for this execution

Usage

From source file:de.langmi.spring.batch.templates.importfile.multiplefiles.MultipleFilesJobConfigurationTest.java

/** Launch Test. */
@Test//from   w ww  .java  2 s .c  om
public void launchJob() throws Exception {
    // Job parameters, commit.rate is set with properties file and Spring placeholder 
    Map<String, JobParameter> jobParametersMap = new HashMap<String, JobParameter>();
    jobParametersMap.put("time", new JobParameter(System.currentTimeMillis()));
    jobParametersMap.put("input.files", new JobParameter("file:src/test/resources/input/multiplefiles/*.txt"));

    // launch the job
    JobExecution jobExecution = jobLauncherTestUtils.launchJob(new JobParameters(jobParametersMap));

    // assert job run status
    assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());

    // assert read/written items
    for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
        assertEquals(EXPECTED_COUNT, stepExecution.getReadCount());
        assertEquals(EXPECTED_COUNT, stepExecution.getWriteCount());
    }

    // assert items are written successfully to database
    assertEquals(EXPECTED_COUNT, jdbcTemplate.queryForInt(COUNT_SQL));
}

From source file:de.langmi.spring.batch.templates.importfile.onefile.OneFileJobConfigurationTest.java

/** Launch Test. */
@Test/*from   w w w .j a va  2 s  .  c  o m*/
public void launchJob() throws Exception {
    // Job parameters, commit.rate is set with properties file and Spring placeholder 
    Map<String, JobParameter> jobParametersMap = new HashMap<String, JobParameter>();
    jobParametersMap.put("time", new JobParameter(System.currentTimeMillis()));
    jobParametersMap.put("input.file", new JobParameter("file:src/test/resources/input/onefile/input.txt"));

    // launch the job
    JobExecution jobExecution = jobLauncherTestUtils.launchJob(new JobParameters(jobParametersMap));

    // assert job run status
    assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());

    // assert read/written items
    for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
        assertEquals(EXPECTED_COUNT, stepExecution.getReadCount());
        assertEquals(EXPECTED_COUNT, stepExecution.getWriteCount());
    }

    // assert items are written successfully to database
    assertEquals(EXPECTED_COUNT, jdbcTemplate.queryForInt(COUNT_SQL));
}

From source file:org.cloudfoundry.identity.uaa.scim.job.UserSyncJobIntegrationTests.java

@Test
public void testJobRunsWithFilters() throws Exception {
    Date dateInTheFuture = new Date(System.currentTimeMillis() + 10000);
    setUpModifiedUaaData(dateInTheFuture);
    JobExecution execution = jobLauncher.run(job, new JobParametersBuilder()
            .addDate("start.date", new Date(System.currentTimeMillis() - 100000)).toJobParameters());
    assertEquals(BatchStatus.COMPLETED, execution.getStatus());
    StepExecution stepExecution = execution.getStepExecutions().iterator().next();
    assertEquals(3, stepExecution.getReadCount());
    assertEquals(3, stepExecution.getFilterCount());
    assertEquals(0, stepExecution.getWriteCount());
}

From source file:org.cloudfoundry.identity.uaa.scim.job.UserSyncJobIntegrationTests.java

@Test
public void testJobRunsWithNoFilters() throws Exception {
    Date dateInThePast = new Date(System.currentTimeMillis() - 10000);
    setUpModifiedUaaData(dateInThePast);
    JobExecution execution = jobLauncher.run(job, new JobParametersBuilder()
            .addDate("start.date", new Date(System.currentTimeMillis() - 100000)).toJobParameters());
    assertEquals(BatchStatus.COMPLETED, execution.getStatus());
    StepExecution stepExecution = execution.getStepExecutions().iterator().next();
    assertEquals(3, stepExecution.getReadCount());
    assertEquals(0, stepExecution.getFilterCount());
    // No records are updated, but the filter count is always write - read
    assertEquals(3, stepExecution.getWriteCount());
}

From source file:com.javaetmoi.core.batch.listener.LogStepListener.java

@Override
public ExitStatus afterStep(StepExecution pStepExecution) {
    if (LOG.isInfoEnabled()) {
        StringBuilder msg = new StringBuilder();
        msg.append("Step ").append(pStepExecution.getStepName());
        msg.append(" - Read count: ").append(pStepExecution.getReadCount());
        msg.append(" - Write count: ").append(pStepExecution.getWriteCount());
        msg.append(" - Commit count: ").append(pStepExecution.getCommitCount());
        LOG.info(msg.toString());/*from w w  w.j ava2 s.co  m*/
    }
    return super.afterStep(pStepExecution);
}

From source file:de.codecentric.batch.listener.ProtocolListener.java

public void afterJob(JobExecution jobExecution) {
    StringBuilder protocol = new StringBuilder();
    protocol.append("\n");
    protocol.append(createFilledLine('*'));
    protocol.append(createFilledLine('-'));
    protocol.append("Protocol for " + jobExecution.getJobInstance().getJobName() + " \n");
    protocol.append("  Started:      " + jobExecution.getStartTime() + "\n");
    protocol.append("  Finished:     " + jobExecution.getEndTime() + "\n");
    protocol.append("  Exit-Code:    " + jobExecution.getExitStatus().getExitCode() + "\n");
    protocol.append("  Exit-Descr:   " + jobExecution.getExitStatus().getExitDescription() + "\n");
    protocol.append("  Status:       " + jobExecution.getStatus() + "\n");
    protocol.append("  Content of Job-ExecutionContext:\n");
    for (Entry<String, Object> entry : jobExecution.getExecutionContext().entrySet()) {
        protocol.append("  " + entry.getKey() + "=" + entry.getValue() + "\n");
    }// w  ww  . ja  v  a2 s .c o m
    protocol.append("  Job-Parameter: \n");
    JobParameters jp = jobExecution.getJobParameters();
    for (Iterator<Entry<String, JobParameter>> iter = jp.getParameters().entrySet().iterator(); iter
            .hasNext();) {
        Entry<String, JobParameter> entry = iter.next();
        protocol.append("  " + entry.getKey() + "=" + entry.getValue() + "\n");
    }
    protocol.append(createFilledLine('-'));
    for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
        protocol.append("Step " + stepExecution.getStepName() + " \n");
        protocol.append("  ReadCount:    " + stepExecution.getReadCount() + "\n");
        protocol.append("  WriteCount:   " + stepExecution.getWriteCount() + "\n");
        protocol.append("  Commits:      " + stepExecution.getCommitCount() + "\n");
        protocol.append("  SkipCount:    " + stepExecution.getSkipCount() + "\n");
        protocol.append("  Rollbacks:    " + stepExecution.getRollbackCount() + "\n");
        protocol.append("  Filter:       " + stepExecution.getFilterCount() + "\n");
        protocol.append("  Content of Step-ExecutionContext:\n");
        for (Entry<String, Object> entry : stepExecution.getExecutionContext().entrySet()) {
            protocol.append("  " + entry.getKey() + "=" + entry.getValue() + "\n");
        }
        protocol.append(createFilledLine('-'));
    }
    protocol.append(createFilledLine('*'));
    LOGGER.info(protocol.toString());
}

From source file:com.example.listener.CustomJobExecutionListener.java

public void afterJob(org.springframework.batch.core.JobExecution jobExecution) {
    StringBuilder protocol = new StringBuilder();
    protocol.append("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");
    protocol.append("Protocol for " + jobExecution.getJobInstance().getJobName() + " \n");
    protocol.append("  Started     : " + jobExecution.getStartTime() + "\n");
    protocol.append("  Finished    : " + jobExecution.getEndTime() + "\n");
    protocol.append("  Exit-Code   : " + jobExecution.getExitStatus().getExitCode() + "\n");
    protocol.append("  Exit-Descr. : " + jobExecution.getExitStatus().getExitDescription() + "\n");
    protocol.append("  Status      : " + jobExecution.getStatus() + "\n");
    protocol.append("+++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");

    protocol.append("Job-Parameter: \n");
    JobParameters jp = jobExecution.getJobParameters();
    for (Iterator<Map.Entry<String, JobParameter>> iter = jp.getParameters().entrySet().iterator(); iter
            .hasNext();) {//from   w ww .ja  v  a  2  s  . c om
        Map.Entry<String, JobParameter> entry = iter.next();
        protocol.append("  " + entry.getKey() + "=" + entry.getValue() + "\n");
    }
    protocol.append("+++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");

    for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
        protocol.append("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");
        protocol.append("Step " + stepExecution.getStepName() + " \n");
        protocol.append("ReadCount " + stepExecution.getReadCount() + " \n");
        protocol.append("WriteCount: " + stepExecution.getWriteCount() + "\n");
        protocol.append("Commits: " + stepExecution.getCommitCount() + "\n");
        protocol.append("SkipCount: " + stepExecution.getSkipCount() + "\n");
        protocol.append("Rollbacks: " + stepExecution.getRollbackCount() + "\n");
        protocol.append("Filter: " + stepExecution.getFilterCount() + "\n");
        protocol.append("+++++++++++++++++++++++++++++++++++++++++++++++++++++++ \n");
    }
    log.info("{}", protocol.toString());
}

From source file:de.codecentric.batch.metrics.MetricsListener.java

@Override
public ExitStatus afterStep(StepExecution stepExecution) {
    // Calculate step execution time
    // Why is stepExecution.getEndTime().getTime() not available here? (see AbstractStep)
    long stepDuration = System.currentTimeMillis() - stepExecution.getStartTime().getTime();
    gaugeService.submit(TIMER_PREFIX + getStepExecutionIdentifier(stepExecution) + ".duration", stepDuration);
    long itemCount = stepExecution.getWriteCount() + stepExecution.getSkipCount();
    gaugeService.submit(GAUGE_PREFIX + getStepExecutionIdentifier(stepExecution) + ".item.count", itemCount);
    // Calculate execution time per item
    long durationPerItem = 0;
    if (itemCount > 0) {
        durationPerItem = stepDuration / itemCount;
    }// w w  w  .j a  va2 s .c o m
    gaugeService.submit(TIMER_PREFIX + getStepExecutionIdentifier(stepExecution) + ".item.duration",
            durationPerItem);
    // Export metrics from StepExecution to MetricRepositories
    Set<Entry<String, Object>> metrics = stepExecution.getExecutionContext().entrySet();
    for (Entry<String, Object> metric : metrics) {
        if (metric.getValue() instanceof Long) {
            gaugeService.submit(
                    GAUGE_PREFIX + getStepExecutionIdentifier(stepExecution) + "." + metric.getKey(),
                    (Long) metric.getValue());
        } else if (metric.getValue() instanceof Double) {
            gaugeService.submit(
                    GAUGE_PREFIX + getStepExecutionIdentifier(stepExecution) + "." + metric.getKey(),
                    (Double) metric.getValue());
        }
    }
    return null;
}

From source file:org.trpr.platform.batch.impl.spring.admin.repository.MapStepExecutionDao.java

/**
 * Returns a copy of {@link StepExecution}, by adding new Objects for every field(no references are passed)
 * //from  ww  w.j  av  a  2  s  .  c o  m
 * @param original StepExecution to be copied
 * @return StepExecution copy
 */
private static StepExecution copy(StepExecution original) {
    StepExecution copy = new StepExecution(original.getStepName(), original.getJobExecution());
    copy.setCommitCount(original.getCommitCount());
    if (original.getEndTime() != null) {
        copy.setEndTime((Date) original.getEndTime().clone());
    }
    //Warning: no deep copy
    if (original.getExitStatus() != null) {
        copy.setExitStatus(new ExitStatus(original.getExitStatus().getExitCode(),
                original.getExitStatus().getExitDescription()));
    }
    copy.setFilterCount(original.getFilterCount());
    copy.setId(original.getId());
    if (original.getLastUpdated() != null) {
        copy.setLastUpdated((Date) original.getLastUpdated().clone());
    }
    copy.setProcessSkipCount(original.getProcessSkipCount());
    copy.setReadCount(original.getReadCount());
    copy.setReadSkipCount(original.getReadSkipCount());
    copy.setRollbackCount(original.getRollbackCount());
    if (original.getStartTime() != null) {
        copy.setStartTime((Date) original.getStartTime().clone());
    }
    if (original.getStatus() != null) {
        copy.setStatus(BatchStatus.valueOf(original.getStatus().name()));
    }
    if (original.isTerminateOnly()) {
        copy.setTerminateOnly();
    }
    copy.setVersion(original.getVersion());
    copy.setWriteCount(original.getWriteCount());
    copy.setWriteSkipCount(original.getWriteSkipCount());
    return copy;
}

From source file:admin.history.StepExecutionHistory.java

public void append(StepExecution stepExecution) {
    if (stepExecution.getEndTime() == null) {
        // ignore unfinished executions
        return;/*  ww w .j  a  va  2s. c o  m*/
    }
    Date startTime = stepExecution.getStartTime();
    Date endTime = stepExecution.getEndTime();
    long time = endTime.getTime() - startTime.getTime();
    duration.append(time);
    if (stepExecution.getReadCount() > 0) {
        durationPerRead.append(time / stepExecution.getReadCount());
    }
    count++;
    commitCount.append(stepExecution.getCommitCount());
    rollbackCount.append(stepExecution.getRollbackCount());
    readCount.append(stepExecution.getReadCount());
    writeCount.append(stepExecution.getWriteCount());
    filterCount.append(stepExecution.getFilterCount());
    readSkipCount.append(stepExecution.getReadSkipCount());
    writeSkipCount.append(stepExecution.getWriteSkipCount());
    processSkipCount.append(stepExecution.getProcessSkipCount());
}