Skip to content

Instantly share code, notes, and snippets.

View fmbenhassine's full-sized avatar

Mahmoud Ben Hassine fmbenhassine

View GitHub Profile
@fmbenhassine
fmbenhassine / RepeatTest.java
Created April 3, 2018 09:35
JUnit rule to repeat a test. Useful when testing multi-threaded behaviour which might succeed in one attempt but fail in another one.
public class RepeatTest implements TestRule {
private int count;
public RepeatTest(int count) {
if (count < 2 ) {
throw new IllegalArgumentException("Count must be >= 2");
}
this.count = count;
}
@fmbenhassine
fmbenhassine / ContextAwareWork.java
Last active May 24, 2018 20:39
Example of how to create an Easy Flows workflow with execution data passed between steps #EasyFlows
package org.jeasy.flows.work;
public abstract class ContextAwareWork implements Work {
private String name;
protected ExecutionContext executionContext;
public ContextAwareWork(String name, ExecutionContext executionContext) {
this.name = name;
this.executionContext = executionContext;
@fmbenhassine
fmbenhassine / DateFormatTests.java
Created January 11, 2018 21:03
Going back and forth between Date and String is not guaranteed to work..
package org.springframework.batch.item;
import org.junit.Test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.junit.Assert.assertEquals;
@fmbenhassine
fmbenhassine / GreetingTasklet.java
Last active May 24, 2018 20:41
Vanilla Spring Batch hello world job using an in-memory database, configured with XML and packaged in a standalone jar #SpringBatch
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
public class GreetingTasklet implements Tasklet {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) {
Object name = chunkContext.getStepContext().getJobParameters().get("name");
@fmbenhassine
fmbenhassine / HelloWorldJobApplication.java
Last active May 24, 2018 20:41
Example of how to use a custom JobParametersConverter with Spring Batch #SpringBatch
package com.example.helloworldjob;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.converter.JobParametersConverter;
@fmbenhassine
fmbenhassine / UppercaseJob.java
Last active March 23, 2021 16:19
An example of how to use Easy Jobs to run Easy Batch jobs #EasyBatch #EasyJobs
import org.easybatch.core.job.Job;
import org.easybatch.core.job.JobBuilder;
import org.easybatch.core.processor.RecordProcessor;
import org.easybatch.core.reader.StringRecordReader;
import org.easybatch.core.record.StringRecord;
import org.easybatch.core.writer.StandardOutputRecordWriter;
public class UppercaseJob {
private String text;
@fmbenhassine
fmbenhassine / Launcher.java
Last active May 24, 2018 21:01
Example of how to use FieldExtractor with DelimitedRecordMarshaller #EasyBatch
package org.easybatch.tutorials.fieldext;
import org.easybatch.core.job.Job;
import org.easybatch.core.job.JobBuilder;
import org.easybatch.core.job.JobExecutor;
import org.easybatch.core.reader.IterableRecordReader;
import org.easybatch.core.writer.StandardOutputRecordWriter;
import org.easybatch.flatfile.DelimitedRecordMarshaller;
import org.easybatch.tutorials.common.Tweet;
@fmbenhassine
fmbenhassine / ReleaseNoteJob.java
Last active May 24, 2018 21:00
Easy Batch job that generates a release notes from issues of a given project on Github (for Easy Batch project in this example). #EasyBatch
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.easybatch.core.job.Job;
import org.easybatch.core.job.JobBuilder;
import org.easybatch.core.job.JobExecutor;
import org.easybatch.core.writer.FileRecordWriter;
import org.easybatch.extensions.gson.GsonRecordMapper;
import org.easybatch.json.JsonRecordReader;
import com.google.gson.Gson;
@fmbenhassine
fmbenhassine / CheckPointListener.java
Last active July 18, 2018 20:04
An example of checkpoint listener for Easy Batch jobs #EasyBatch
import static java.lang.Long.parseLong;
import static java.lang.String.valueOf;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.*;
public class DatabaseUtil {
private static final String DATABASE_URL = "jdbc:hsqldb:mem";
private static final String USER = "sa";
private static final String PASSWORD = "pwd";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(DATABASE_URL, USER, PASSWORD);