Java 类org.springframework.batch.core.scope.context.ChunkContext 实例源码
项目:springbatch-showcase
文件:FirstTasklet.java
/**
* Taskletのエントリポイント
*
* @param contribution ステップの実行状態
* @param chunkContext チャンクの実行状態
* @return ステータス(終了)
* @throws Exception 予期しない例外
*/
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
Map<String, Object> jobParameters = chunkContext.getStepContext().getJobParameters();
// ジョブ起動パラメータの取得
LOGGER.info("FirstTasklet has been executed. job param is {}", jobParameters);
ExecutionContext executionContext = chunkContext.getStepContext()
.getStepExecution()
.getJobExecution()
.getExecutionContext();
// ステップ間の情報引き継ぎはJobExecutionのExecutionContextを取得する。(StepExecutionのExecutionContextではダメ)
executionContext.put("message", "foobar");
return RepeatStatus.FINISHED; // このステップはこれで終了
}
项目:composed-task-runner
文件:TaskLauncherTaskletTests.java
@Test
@DirtiesContext
public void testNoDataFlowServer() throws Exception{
String exceptionMessage = null;
final String ERROR_MESSAGE =
"I/O error on GET request for \"http://localhost:9393\": Connection refused; nested exception is java.net.ConnectException: Connection refused";
Mockito.doThrow(new ResourceAccessException(ERROR_MESSAGE))
.when(this.taskOperations).launch(Matchers.anyString(),
(Map<String,String>) Matchers.any(),
(List<String>) Matchers.any());
TaskLauncherTasklet taskLauncherTasklet = getTaskExecutionTasklet();
ChunkContext chunkContext = chunkContext();
try {
taskLauncherTasklet.execute(null, chunkContext);
}
catch (ResourceAccessException rae) {
exceptionMessage = rae.getMessage();
}
assertEquals(ERROR_MESSAGE, exceptionMessage);
}
项目:powop
文件:SingleRecordQueryTasklet.java
@Override
@Transactional
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
Query<String> query = currentSession().createQuery(queryString, String.class);
query.setMaxResults(1);
query.setFirstResult(0);
try {
String result = query.getSingleResult();
chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext().put("record.identifier", result);
contribution.setExitStatus(new ExitStatus("MORE_RESULTS"));
} catch (NoResultException e) {
contribution.setExitStatus(new ExitStatus("NO_MORE_RESULTS"));
}
return RepeatStatus.FINISHED;
}
项目:powop
文件:ParameterConvertingTasklet.java
public final RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext) throws Exception {
Map<String,String> defaultValuesMap = new HashMap<String,String>();
if(this.defaultValues != null) {
String values = defaultValues.substring(1, this.defaultValues.length() - 1);
for(String defaultValue : values.split(",")) {
if(defaultValue.indexOf("=") > -1) {
String field = defaultValue.substring(0,defaultValue.indexOf("="));
String value = defaultValue.substring(defaultValue.indexOf("=") + 1, defaultValue.length());
defaultValuesMap.put(field,value);
}
}
}
chunkContext.getStepContext().getStepExecution()
.getJobExecution().getExecutionContext().put(defaultValuesKey, defaultValuesMap);
logger.debug("SETTING " + defaultValuesKey + " as " + defaultValuesMap);
String names = fieldNames.substring(1, this.fieldNames.length() - 1);
String[] fieldNamesArray = names.split(",");
chunkContext.getStepContext().getStepExecution()
.getJobExecution().getExecutionContext().put(fieldNamesKey, fieldNamesArray);
logger.debug("SETTING " + fieldNamesKey + " as " + Arrays.toString(fieldNamesArray));
return RepeatStatus.FINISHED;
}
项目:composed-task-runner
文件:TaskLauncherTasklet.java
/**
* Executes the task as specified by the taskName with the associated
* properties and arguments.
* @param contribution mutable state to be passed back to update the current step execution
* @param chunkContext contains the task-execution-id used by the listener.
* @return Repeat status of FINISHED.
*/
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
String tmpTaskName = this.taskName.substring(0,
this.taskName.lastIndexOf('_'));
List<String> args = this.arguments;
ExecutionContext stepExecutionContext = chunkContext.getStepContext().getStepExecution().
getExecutionContext();
if(stepExecutionContext.containsKey("task-arguments")) {
args = (List<String>) stepExecutionContext.get("task-arguments");
}
long executionId = this.taskOperations.launch(tmpTaskName,
this.properties, args);
stepExecutionContext.put("task-execution-id", executionId);
stepExecutionContext.put("task-arguments", args);
waitForTaskToComplete(executionId);
return RepeatStatus.FINISHED;
}
项目:composed-task-runner
文件:TaskLauncherTaskletTests.java
@Test
@DirtiesContext
public void testTaskLauncherTasklet() throws Exception{
getCompleteTaskExecution(0);
TaskLauncherTasklet taskLauncherTasklet =
getTaskExecutionTasklet();
ChunkContext chunkContext = chunkContext();
mockReturnValForTaskExecution(1L);
taskLauncherTasklet.execute(null, chunkContext);
assertEquals(1L, chunkContext.getStepContext()
.getStepExecution().getExecutionContext()
.get("task-execution-id"));
mockReturnValForTaskExecution(2L);
chunkContext = chunkContext();
getCompleteTaskExecution(0);
taskLauncherTasklet = getTaskExecutionTasklet();
taskLauncherTasklet.execute(null, chunkContext);
assertEquals(2L, chunkContext.getStepContext()
.getStepExecution().getExecutionContext()
.get("task-execution-id"));
}
项目:composed-task-runner
文件:TaskLauncherTaskletTests.java
@Test
@DirtiesContext
public void testTaskLauncherTaskletTimeout() throws Exception {
boolean isException = false;
mockReturnValForTaskExecution(1L);
this.composedTaskProperties.setMaxWaitTime(1000);
TaskLauncherTasklet taskLauncherTasklet = getTaskExecutionTasklet();
ChunkContext chunkContext = chunkContext();
try {
taskLauncherTasklet.execute(null, chunkContext);
}
catch (TaskExecutionTimeoutException te) {
isException = true;
assertThat(te.getMessage(),is(equalTo("Timeout occurred while " +
"processing task with Execution Id 1")));
}
assertThat(isException,is(true));
}
项目:composed-task-runner
文件:TaskLauncherTaskletTests.java
@Test
@DirtiesContext
public void testInvalidTaskName() throws Exception {
String exceptionMessage = null;
final String ERROR_MESSAGE =
"Could not find task definition named " + TASK_NAME;
VndErrors errors = new VndErrors("message", ERROR_MESSAGE, new Link("ref"));
Mockito.doThrow(new DataFlowClientException(errors))
.when(this.taskOperations)
.launch(Matchers.anyString(),
(Map<String, String>) Matchers.any(),
(List<String>) Matchers.any());
TaskLauncherTasklet taskLauncherTasklet = getTaskExecutionTasklet();
ChunkContext chunkContext = chunkContext();
try {
taskLauncherTasklet.execute(null, chunkContext);
}
catch (DataFlowClientException dfce) {
exceptionMessage = dfce.getMessage();
}
assertEquals(ERROR_MESSAGE+"\n", exceptionMessage);
}
项目:composed-task-runner
文件:TaskLauncherTaskletTests.java
@Test
@DirtiesContext
public void testTaskLauncherTaskletFailure() throws Exception {
boolean isException = false;
mockReturnValForTaskExecution(1L);
TaskLauncherTasklet taskLauncherTasklet = getTaskExecutionTasklet();
ChunkContext chunkContext = chunkContext();
getCompleteTaskExecution(1);
try {
taskLauncherTasklet.execute(null, chunkContext);
}
catch (UnexpectedJobExecutionException jobExecutionException) {
isException = true;
assertThat(jobExecutionException.getMessage(),is(equalTo("Task returned a non zero exit code.")));
}
assertThat(isException,is(true));
}
项目:XML-JSON-MongoDB-Spring-Batch-Example
文件:JobConfiguration.java
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
// get path of file in src/main/resources
Path xmlDocPath = Paths.get(getFilePath());
// process the file to json
String json = processXML2JSON(xmlDocPath);
// insert json into mongodb
insertToMongo(json);
return RepeatStatus.FINISHED;
}
}).build();
}
项目:batch-scheduler
文件:ProcTasklet.java
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) {
Object parametersObj = chunkContext.getStepContext().getJobParameters().get("JobParameters");
String jobParameters = String.valueOf(System.currentTimeMillis());
String params = "(";
if (parametersObj != null) {
jobParameters = parametersObj.toString();
String[] p = jobParameters.split(" ");
for (int i = 0; i < p.length; i++) {
if (i == 0) {
params += "'" + p[i] + "'";
} else {
params += ",'" + p[i] + "'";
}
}
}
params += ")";
try {
logger.info("program is :" + scriptFile + ", argument is:" + params);
jdbcTemplate.execute("call " + scriptFile + params);
} catch (Exception e) {
logger.error(e.getMessage());
chunkContext.getStepContext().getStepExecution().setExitStatus(ExitStatus.FAILED);
}
return RepeatStatus.FINISHED;
}
项目:hub-fortify-ssc-integration-service
文件:Initializer.java
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
logger.info("Started MappingParserTask");
// Delete the files that are error out in previous run
Arrays.stream(new File(propertyConstants.getReportDir()).listFiles()).forEach(File::delete);
logger.debug("Found Mapping file:: " + propertyConstants.getMappingJsonPath());
// Create the mapping between Hub and Fortify
final List<BlackDuckFortifyMapperGroup> groupMap = mappingParser.createMapping(propertyConstants.getMappingJsonPath());
logger.info("blackDuckFortifyMappers :" + groupMap.toString());
// Create the threads for parallel processing
ExecutorService exec = Executors.newFixedThreadPool(propertyConstants.getMaximumThreadSize());
List<Future<?>> futures = new ArrayList<>(groupMap.size());
for (BlackDuckFortifyMapperGroup blackDuckFortifyMapperGroup : groupMap) {
futures.add(exec.submit(new BlackDuckFortifyPushThread(blackDuckFortifyMapperGroup,
hubServices, fortifyFileTokenApi, fortifyUploadApi, propertyConstants)));
}
for (Future<?> f : futures) {
f.get(); // wait for a processor to complete
}
jobStatus = true;
logger.info("After all threads processing");
return RepeatStatus.FINISHED;
}
项目:oma-riista-web
文件:LHHuntingClubCSVDownloader.java
@Override
public RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext) throws Exception {
final Stopwatch stopwatch = Stopwatch.createStarted();
final Path tempFile = Files.createTempFile(FILE_PREFIX, FILE_SUFFIX);
try {
final Path path = lupahallintaHttpClient.downloadClubCSV(tempFile);
LOG.info("Download completed successfully in {}, inputFile={}", stopwatch, path);
chunkContext.getStepContext()
.getStepExecution()
.getJobExecution()
.getExecutionContext()
.put(KEY_INPUT_FILE, path.toString());
} catch (final Exception ex) {
Files.deleteIfExists(tempFile);
throw ex;
}
return RepeatStatus.FINISHED;
}
项目:oma-riista-web
文件:MetsastajaRekisteriArchiveTasklet.java
@Override
public RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext) throws Exception {
final MetsastajaRekisteriJobParameters jobParameters = new MetsastajaRekisteriJobParameters(
chunkContext.getStepContext().getJobParameters());
final Path sourcePath = Paths.get(jobParameters.getInputFile());
final File sourceFile = sourcePath.toFile();
final UUID uuid = UUID.randomUUID();
LOG.info("Archiving file with UUID={} filename={}", uuid, sourceFile.getName());
fileStorageService.storeFile(
uuid,
sourceFile,
FileType.METSASTAJAREKISTERI,
"application/octet-stream",
sourceFile.getName());
Files.delete(sourcePath);
return RepeatStatus.FINISHED;
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:JobLauncherCommandLineRunnerTests.java
@Before
public void init() throws Exception {
this.context.register(BatchConfiguration.class);
this.context.refresh();
JobRepository jobRepository = this.context.getBean(JobRepository.class);
this.jobLauncher = this.context.getBean(JobLauncher.class);
this.jobs = new JobBuilderFactory(jobRepository);
PlatformTransactionManager transactionManager = this.context
.getBean(PlatformTransactionManager.class);
this.steps = new StepBuilderFactory(jobRepository, transactionManager);
this.step = this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
return null;
}
}).build();
this.job = this.jobs.get("job").start(this.step).build();
this.jobExplorer = this.context.getBean(JobExplorer.class);
this.runner = new JobLauncherCommandLineRunner(this.jobLauncher,
this.jobExplorer);
this.context.getBean(BatchConfiguration.class).clear();
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionOnNonRestartableJob() throws Exception {
this.job = this.jobs.get("job").preventRestart()
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
this.runner.execute(this.job, new JobParameters());
this.runner.execute(this.job, new JobParameters());
// A failed job that is not restartable does not re-use the job params of
// the last execution, but creates a new job instance when running it again.
assertThat(this.jobExplorer.getJobInstances("job", 0, 100)).hasSize(2);
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionWithNonIdentifyingParameters() throws Exception {
this.job = this.jobs.get("job")
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false)
.addLong("foo", 2L, false).toJobParameters();
this.runner.execute(this.job, jobParameters);
this.runner.execute(this.job, jobParameters);
assertThat(this.jobExplorer.getJobInstances("job", 0, 100)).hasSize(1);
}
项目:navi
文件:AbstractNaviLongTasklet.java
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
if (init) {
init();
log.info("the batch process inits completely.");
init = false;
}
try {
contribution.setExitStatus(mapResult(execute(chunkContext)));
Thread.sleep(getSleepTime());
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
synchronized (lock) {
if (stop) {
lock.notifyAll();
log.info("business is executed compeletly!");
return RepeatStatus.FINISHED;
}
}
}
return RepeatStatus.CONTINUABLE;
}
项目:spring-boot-concourse
文件:JobLauncherCommandLineRunnerTests.java
@Before
public void init() throws Exception {
this.context.register(BatchConfiguration.class);
this.context.refresh();
JobRepository jobRepository = this.context.getBean(JobRepository.class);
this.jobLauncher = this.context.getBean(JobLauncher.class);
this.jobs = new JobBuilderFactory(jobRepository);
PlatformTransactionManager transactionManager = this.context
.getBean(PlatformTransactionManager.class);
this.steps = new StepBuilderFactory(jobRepository, transactionManager);
this.step = this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
return null;
}
}).build();
this.job = this.jobs.get("job").start(this.step).build();
this.jobExplorer = this.context.getBean(JobExplorer.class);
this.runner = new JobLauncherCommandLineRunner(this.jobLauncher,
this.jobExplorer);
this.context.getBean(BatchConfiguration.class).clear();
}
项目:spring-boot-concourse
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionOnNonRestartableJob() throws Exception {
this.job = this.jobs.get("job").preventRestart()
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
this.runner.execute(this.job, new JobParameters());
this.runner.execute(this.job, new JobParameters());
// A failed job that is not restartable does not re-use the job params of
// the last execution, but creates a new job instance when running it again.
assertThat(this.jobExplorer.getJobInstances("job", 0, 100)).hasSize(2);
}
项目:spring-boot-concourse
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionWithNonIdentifyingParameters() throws Exception {
this.job = this.jobs.get("job")
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false)
.addLong("foo", 2L, false).toJobParameters();
this.runner.execute(this.job, jobParameters);
this.runner.execute(this.job, jobParameters);
assertThat(this.jobExplorer.getJobInstances("job", 0, 100)).hasSize(1);
}
项目:Spring-Batch-en-Castellano
文件:CustomConditionalTasklet.java
@Override
public RepeatStatus execute(StepContribution arg0, ChunkContext arg1) throws Exception {
Long time = Calendar.getInstance().getTimeInMillis();
String exit;
if(time % 2 == 0){
exit = ExitStatus.NOOP.getExitCode().toString();
arg0.setExitStatus(ExitStatus.NOOP);
}else{
exit = ExitStatus.COMPLETED.getExitCode().toString();
arg0.setExitStatus(ExitStatus.COMPLETED);
}
System.out.println("Executing step with name " + taskletName + " and exitCode " + exit);
return RepeatStatus.FINISHED;
}
项目:contestparser
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionOnNonRestartableJob() throws Exception {
this.job = this.jobs.get("job").preventRestart()
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
this.runner.execute(this.job, new JobParameters());
this.runner.execute(this.job, new JobParameters());
// A failed job that is not restartable does not re-use the job params of
// the last execution, but creates a new job instance when running it again.
assertEquals(2, this.jobExplorer.getJobInstances("job", 0, 100).size());
}
项目:contestparser
文件:JobLauncherCommandLineRunnerTests.java
@Test
public void retryFailedExecutionWithNonIdentifyingParameters() throws Exception {
this.job = this.jobs.get("job")
.start(this.steps.get("step").tasklet(new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
throw new RuntimeException("Planned");
}
}).build()).incrementer(new RunIdIncrementer()).build();
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false)
.addLong("foo", 2L, false).toJobParameters();
this.runner.execute(this.job, jobParameters);
this.runner.execute(this.job, jobParameters);
assertEquals(1, this.jobExplorer.getJobInstances("job", 0, 100).size());
}
项目:eMonocot
文件:CheckEmptyResponseTasklet.java
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputFile.getInputStream());
char[] buffer = new char[2];
InputStreamReader inputStreamReader = new InputStreamReader(bufferedInputStream);
int numChars = -1;
if((numChars = inputStreamReader.read(buffer)) == 2) {
String string = new String(buffer);
if(string.equals("[]")) {
contribution.setExitStatus(new ExitStatus("EMPTY_RESPONSE").addExitDescription("The webservice returned an empty list of taxa"));
}
} else {
contribution.setExitStatus(ExitStatus.FAILED.addExitDescription("Unable to read the webservice response"));
}
inputStreamReader.close();
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:SetTemporaryFilenamesTasklet.java
/**
* @param contribution Set the step contribution
* @param chunkContext Set the chunk context
* @return the repeat status
* @throws Exception if there is a problem deleting the resources
*/
public final RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext)
throws Exception {
UUID uuid1 = UUID.randomUUID();
String temporaryFileName = harvesterSpoolDirectory + File.separator
+ uuid1.toString() + ".xml";
File temporaryFile = new File(temporaryFileName);
ExecutionContext executionContext = chunkContext.getStepContext()
.getStepExecution().getJobExecution().getExecutionContext();
executionContext.put("startindex", 0);
executionContext.put("temporary.file.name", temporaryFile.getAbsolutePath());
executionContext.putLong("job.execution.id", chunkContext.getStepContext().getStepExecution().getJobExecutionId());
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:SetTemporaryFilenamesTasklet.java
/**
* @param contribution Set the step contribution
* @param chunkContext Set the chunk context
* @return the repeat status
* @throws Exception if there is a problem deleting the resources
*/
public final RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext)
throws Exception {
UUID uuid = UUID.randomUUID();
String unpackDirectoryName = harvesterSpoolDirectory + File.separator
+ uuid.toString();
String temporaryFileName = harvesterSpoolDirectory + File.separator
+ uuid.toString() + ".zip";
File unpackDirectory = new File(unpackDirectoryName);
unpackDirectory.mkdir();
File temporaryFile = new File(temporaryFileName);
ExecutionContext executionContext = chunkContext.getStepContext()
.getStepExecution().getJobExecution().getExecutionContext();
executionContext.put("temporary.file.name",temporaryFile.getAbsolutePath());
executionContext.put("unpack.directory.name",unpackDirectory.getAbsolutePath());
executionContext.putLong("job.execution.id", chunkContext.getStepContext().getStepExecution().getJobExecutionId());
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:XmlTransformingTasklet.java
/**
* @param contribution
* Set the step contribution
* @param chunkContext
* Set the chunk context
* @return the repeat status
* @throws Exception
* if there is a problem
*/
public final RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext) throws Exception {
// Set up input documents
Source inputXML = new StreamSource(inputFile.getFile());
Source inputXSL = new StreamSource(xsltFile.getFile());
// Set up output sink
Result outputXHTML = new StreamResult(outputFile.getFile());
// Setup a factory for transforms
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(inputXSL);
for (String parameterName : parameters.keySet()) {
transformer.setParameter(parameterName,
parameters.get(parameterName));
}
if(errorListener != null) {
transformer.setErrorListener(errorListener);
}
transformer.transform(inputXML, outputXHTML);
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:SolrOptimizingTasklet.java
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
CoreAdminResponse coreAdminResponse = CoreAdminRequest.getStatus(core, solrServer);
NamedList<Object> index = (NamedList<Object>)coreAdminResponse.getCoreStatus(core).get("index");
Integer segmentCount = (Integer)index.get("segmentCount");
if(segmentCount < maxSegments) {
logger.debug("Core " + core + " only has " + segmentCount + " segments, skipping optimization");
} else {
logger.debug("Core " + core + " has " + segmentCount + " segments, starting optimization");
solrServer.optimize(true, true);
logger.debug("Core " + core + " optimized");
}
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:SingleRecordQueryTasklet.java
@Override
@Transactional
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
Query query = this.getSession().createQuery(queryString);
query.setMaxResults(1);
query.setFirstResult(0);
List<String> results = (List<String>)query.list();
if(results.size() == 0) {
contribution.setExitStatus(new ExitStatus("NO_MORE_RESULTS"));
} else {
chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext().put("record.identifier", results.get(0));
contribution.setExitStatus(new ExitStatus("MORE_RESULTS"));
}
return RepeatStatus.FINISHED;
}
项目:eMonocot
文件:ParameterConvertingTasklet.java
public final RepeatStatus execute(final StepContribution contribution,
final ChunkContext chunkContext) throws Exception {
Map<String,String> defaultValuesMap = new HashMap<String,String>();
if(this.defaultValues != null) {
String values = defaultValues.substring(1, this.defaultValues.length() - 1);
for(String defaultValue : values.split(",")) {
if(defaultValue.indexOf("=") > -1) {
String field = defaultValue.substring(0,defaultValue.indexOf("="));
String value = defaultValue.substring(defaultValue.indexOf("=") + 1, defaultValue.length());
defaultValuesMap.put(field,value);
}
}
}
chunkContext.getStepContext().getStepExecution()
.getJobExecution().getExecutionContext().put(defaultValuesKey, defaultValuesMap);
logger.debug("SETTING " + defaultValuesKey + " as " + defaultValuesMap);
String names = fieldNames.substring(1, this.fieldNames.length() - 1);
String[] fieldNamesArray = names.split(",");
chunkContext.getStepContext().getStepExecution()
.getJobExecution().getExecutionContext().put(fieldNamesKey, fieldNamesArray);
logger.debug("SETTING " + fieldNamesKey + " as " + Arrays.toString(fieldNamesArray));
return RepeatStatus.FINISHED;
}
项目:marklogic-spring-batch
文件:DeleteDocumentsTasklet.java
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
if (marklogicVersion.equals("8")) {
QueryManager qryMgr = databaseClient.newQueryManager();
GenericDocumentManager docMgr = databaseClient.newDocumentManager();
SearchHandle handle = qryMgr.search(queryDefinition, new SearchHandle());
MatchDocumentSummary[] results = handle.getMatchResults();
for (int i = 0; i < results.length; i++) {
docMgr.delete(results[i].getUri());
}
} else if (marklogicVersion.equals("9")) {
final DataMovementManager dataMovementManager = databaseClient.newDataMovementManager();
QueryBatcher qb = dataMovementManager.newQueryBatcher(queryDefinition)
.withBatchSize(2500)
.withConsistentSnapshot()
.onUrisReady(new DeleteListener())
.onQueryFailure(throwable -> throwable.printStackTrace());
JobTicket ticket = dataMovementManager.startJob(qb);
qb.awaitCompletion();
dataMovementManager.stopJob(ticket);
}
return RepeatStatus.FINISHED;
}
项目:powop
文件:SetTemporaryFilenamesTasklet.java
/**
* @param contribution Set the step contribution
* @param chunkContext Set the chunk context
* @return the repeat status
* @throws Exception if there is a problem deleting the resources
*/
public final RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception {
UUID uuid = UUID.randomUUID();
String unpackDirectoryName = harvesterSpoolDirectory + File.separator + uuid.toString();
String temporaryFileName = harvesterSpoolDirectory + File.separator + uuid.toString() + ".zip";
File unpackDirectory = new File(unpackDirectoryName);
unpackDirectory.mkdir();
File temporaryFile = new File(temporaryFileName);
ExecutionContext executionContext = chunkContext.getStepContext().getStepExecution().getJobExecution().getExecutionContext();
executionContext.put("temporary.file.name", temporaryFile.getAbsolutePath());
executionContext.put("unpack.directory.name", unpackDirectory.getAbsolutePath());
executionContext.putLong("job.execution.id", chunkContext.getStepContext().getStepExecution().getJobExecutionId());
log.debug("setting temporary.file.name to {}", temporaryFile.getAbsolutePath());
log.debug("execution context: {}", executionContext);
return RepeatStatus.FINISHED;
}
项目:powop
文件:RecordAnnotator.java
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
String queryString = "INSERT INTO Annotation (annotatedObjId, annotatedObjType, jobId, dateTime, authority_id, resource_id, type, code, recordType) "
+ "SELECT o.id, :annotatedObjType, :jobId, now(), :authorityId, :resourceId, 'Warn', 'Absent', :annotatedObjType "
+ "FROM " + annotatedObjType + " o "
+ "WHERE o.authority_id = :authorityId AND o.resource_id = :resourceId";
stepExecution.getJobExecution().getExecutionContext().putLong("job.execution.id", stepExecution.getJobExecutionId());
Map<String, ? extends Object> queryParameters = ImmutableMap.of(
"authorityId", getAuthorityId(),
"resourceId", resourceId,
"jobId", stepExecution.getJobExecutionId(),
"annotatedObjType", annotatedObjType);
logger.debug("Annotating: {} with params {}", queryString, queryParameters);
jdbcTemplate.update(queryString, queryParameters);
return RepeatStatus.FINISHED;
}
项目:powop
文件:HibernateDeletingTasklet.java
@Override
public RepeatStatus execute(StepContribution arg0, ChunkContext chunkcontext) throws Exception {
String resource_id = (String) chunkcontext.getStepContext().getStepExecution()
.getJobExecution().getJobParameters().getString("resource_id");
taxonDeleter.Delete(sessionFactory, Taxon.class, resource_id, "Taxon", solrClient);
descriptionDeleter.Delete(sessionFactory, Description.class, resource_id, "Description", solrClient);
conceptDeleter.Delete(sessionFactory, Concept.class, resource_id, "Concept", solrClient);
distributionDeleter.Delete(sessionFactory, Distribution.class, resource_id, "Distribution", solrClient);
identifierDeleter.Delete(sessionFactory, Identifier.class, resource_id, "Identifier", solrClient);
imageDeleter.Delete(sessionFactory, Image.class, resource_id, "Image", solrClient);
measurementorFactDeleter.Delete(sessionFactory, MeasurementOrFact.class, resource_id, "MeasurementOrFact", solrClient);
referenceDeleter.Delete(sessionFactory, Reference.class, resource_id, "Reference", solrClient);
typeandspecimenDeleter.Delete(sessionFactory, TypeAndSpecimen.class, resource_id, "TypeAndSpecimen", solrClient);
vernacularnameDeleter.Delete(sessionFactory, VernacularName.class, resource_id, "VernacularName", solrClient);
return null;
}
项目:powop
文件:SolrOptimizingTasklet.java
@SuppressWarnings("unchecked")
@Override
public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {
CoreAdminResponse coreAdminResponse = CoreAdminRequest.getStatus(core, solrClient);
NamedList<Object> index = (NamedList<Object>)coreAdminResponse.getCoreStatus(core).get("index");
Integer segmentCount = (Integer)index.get("segmentCount");
if(segmentCount < maxSegments) {
logger.debug("Core " + core + " only has " + segmentCount + " segments, skipping optimization");
} else {
logger.debug("Core " + core + " has " + segmentCount + " segments, starting optimization");
solrClient.optimize(true, true);
logger.debug("Core " + core + " optimized");
}
return RepeatStatus.FINISHED;
}
项目:WebAPI
文件:GenerateCohortFeaturesTasklet.java
@Override
public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception {
try {
final int[] ret = this.transactionTemplate.execute(new TransactionCallback<int[]>() {
@Override
public int[] doInTransaction(final TransactionStatus status) {
return doTask(chunkContext);
}
});
} catch (final TransactionException e) {
log.error(e.getMessage(), e);
throw e;//FAIL job status
}
return RepeatStatus.FINISHED;
}
项目:spring-xd-jdbc-job
文件:JdbcTasklet.java
/**
* Execute the {@link #setSql(String) SQL query} provided. If the query starts with "select" (case insensitive) the
* result is a list of maps, which is logged and added to the step execution exit status. Otherwise the query is
* executed and the result is an indication, also in the exit status, of the number of rows updated.
*/
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
StepExecution stepExecution = chunkContext.getStepContext().getStepExecution();
ExitStatus exitStatus = stepExecution.getExitStatus();
String msg = "";
if (StringUtils.hasText(sql)) {
msg = runCommand(chunkContext.getStepContext(), sql);
} else if (!CollectionUtils.isEmpty(scripts)) {
msg = runScripts(chunkContext, scripts, null);
}
stepExecution.setExitStatus(exitStatus.addExitDescription(msg));
return RepeatStatus.FINISHED;
}
项目:spring-xd-jdbc-job
文件:JdbcTasklet.java
private String runScripts(ChunkContext chunkContext, Iterable<Resource> scripts, String encoding) throws Exception {
Assert.notNull(chunkContext, "a valid instance is required");
StringBuffer messages = new StringBuffer();
if (scripts != null) {
for (Resource resource : scripts) {
String sqlCommand = scriptToString(resource, encoding);
String msg = runCommand(chunkContext.getStepContext(), sqlCommand);
messages.append(msg).append("\n");
}
}
return messages.toString();
}
项目:AGIA
文件:FilesOperationTaskletTest.java
@Test
public void testExecuteCopyWithEmptyChunkContext() throws Exception {
FilesOperationTasklet aTasklet = new FilesOperationTasklet();
ResourcesFactory aSourceFactory = mock(ResourcesFactory.class);
Resource aFileResource1 = mock(Resource.class);
when(aFileResource1.getFile()).thenReturn(new File("src/test/resources/testFiles/input.csv"));
when(aFileResource1.exists()).thenReturn(true);
when(aSourceFactory.getResources(anyMapOf(Object.class, Object.class))).thenReturn(new Resource[]{aFileResource1});
ResourceFactory aDestinationFactory = mock(ResourceFactory.class);
Resource aDestResource = mock(Resource.class);
when(aDestResource.getFile()).thenReturn(new File("target/CP-input.csv"));
when(aDestResource.exists()).thenReturn(false);
Resource aRelativeResource = mock(Resource.class);
when(aRelativeResource.getFile()).thenReturn(new File("target"));
when(aDestResource.createRelative("/.")).thenReturn(aRelativeResource);
when(aDestinationFactory.getResource(anyMapOf(Object.class, Object.class))).thenReturn(aDestResource);
assertFalse(aDestResource.getFile().exists());
aTasklet.setSourceFactory(aSourceFactory);
aTasklet.setDestinationFactory(aDestinationFactory);
aTasklet.setOperation(Operation.COPY);
aTasklet.afterPropertiesSet();
ChunkContext aChunkContext = mock(ChunkContext.class);
assertEquals(RepeatStatus.FINISHED, aTasklet.execute(null, aChunkContext));
verify(aChunkContext, times(1)).getStepContext();
assertTrue(aDestResource.getFile().exists());
}