Skip to content

Instantly share code, notes, and snippets.

@fmbenhassine
Last active May 24, 2018 21:01
Show Gist options
  • Save fmbenhassine/640f3c0bd008b9f1b9aa7cec9cf8dd97 to your computer and use it in GitHub Desktop.
Save fmbenhassine/640f3c0bd008b9f1b9aa7cec9cf8dd97 to your computer and use it in GitHub Desktop.
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;
import java.util.Arrays;
import java.util.List;
public class Launcher {
public static void main(String[] args) throws Exception {
Tweet t1 = new Tweet(1, "foo", "hello");
Tweet t2 = new Tweet(2, "bar", "hi");
List<Tweet> tweets = Arrays.asList(t1, t2);
Job job = new JobBuilder()
.reader(new IterableRecordReader(tweets))
.marshaller(new DelimitedRecordMarshaller<>(new TweetFieldExtractor(), "|", "'"))
.writer(new StandardOutputRecordWriter())
.build();
JobExecutor jobExecutor = new JobExecutor();
jobExecutor.execute(job);
jobExecutor.shutdown();
// This prints:
// 'hello'|'foo'
// 'hi'|'bar'
}
}
public class Tweet {
private int id;
private String user;
private String message;
public Tweet() {
}
public Tweet(int id, String user, String message) {
this.id = id;
this.user = user;
this.message = message;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
import org.easybatch.core.field.FieldExtractor;
import org.easybatch.tutorials.common.Tweet;
import java.util.ArrayList;
import java.util.List;
public class TweetFieldExtractor implements FieldExtractor<Tweet> {
// in this example we select only "user" and "message" fields (filter id field) and marshal them in this order: message,id
@Override
public Iterable<Object> extractFields(Tweet tweet) throws Exception {
List<Object> fields = new ArrayList<>();
fields.add(tweet.getMessage());
fields.add(tweet.getUser());
return fields;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment