Demo 1. Example of a simple single thread Builder - aegisql/conveyor GitHub Wiki
Demonstrate a simple single thread Builder implementation.
/*
* COPYRIGHT (C) AEGIS DATA SOLUTIONS, LLC, 2015
*/
package com.aegisql.conveyor.demo.simple_builder;
import java.util.Date;
public class Person {
final String firstName;
final String lastName;
final Date dateOfBirth;
public Person(String firstName, String lastName, Date dateOfBirth) {
this.firstName = firstName;
this.lastName = lastName;
this.dateOfBirth = dateOfBirth;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
@Override
public String toString() {
return "Person [firstName=" + firstName + ", lastName=" + lastName + ", dateOfBirth=" + dateOfBirth + "]";
}
}
/*
* COPYRIGHT (C) AEGIS DATA SOLUTIONS, LLC, 2015
*/
package com.aegisql.conveyor.demo.simple_builder;
import java.util.Date;
import java.util.function.Supplier;
public class PersonBuilder implements Supplier<Person> {
private String firstName;
private String lastName;
private Date dateOfBirth;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
@Override
public Person get() {
return new Person(firstName,lastName,dateOfBirth);
}
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
PersonBuilder builder = new PersonBuilder();
// << Builder is created, but it is empty.
// Needs three pieces of data to build the person
// Adding building parts in the same thread
builder.setFirstName("John");
builder.setLastName("Silver");
builder.setDateOfBirth( format.parse("1695-11-10") );
// << Ok, here we know that we ready to build the Person
Person person = builder.get();
System.out.println( person );
Person [firstName=John, lastName=Silver, dateOfBirth=Thu Nov 10 00:00:00 EST 1695]