package be.swsb.fiazard.ddd;
import static be.swsb.fiazard.ddd.AggregateIdTestBuilder.aggregateId;
public class DomainEventTestBuilder {
private DomainEventTestBuilder(){
}
public static DumbaEventTestBuilder aDumbaEvent(){
return new DumbaEventTestBuilder();
}
public static DumboEventTestBuilder aDumboEvent(){
return new DumboEventTestBuilder();
}
public static class DumbaEventTestBuilder extends DomainEventTestBuilder{
private DumbaDomainEvent dumbaEvent;
public DumbaDomainEvent build() {
return dumbaEvent;
}
private DumbaEventTestBuilder(){
dumbaEvent = new DumbaDomainEvent();
}
public DumbaEventTestBuilder withDumbaString(String dumbaString) {
dumbaEvent.dumbaString = dumbaString;
return this;
}
public DumbaEventTestBuilder withAggregateId(String id) {
dumbaEvent.aggregateId = aggregateId(id);
return this;
}
public DumbaEventTestBuilder withAggregateId(AggregateId id) {
dumbaEvent.aggregateId = id;
return this;
}
public DumbaEventTestBuilder withVersion(int version) {
dumbaEvent.version = version;
return this;
}
}
public static class DumbaDomainEvent implements DomainEvent{
private AggregateId aggregateId;
private int version;
private String dumbaString;
public String getDumbaString() {
return dumbaString;
}
@Override
public AggregateId getAggregateId() {
return aggregateId;
}
@Override
public int getVersion() {
return version;
}
@Override
public String getEventType() {
return "DumbaDomainEvent";
}
}
public static class DumboEventTestBuilder extends DomainEventTestBuilder{
private DumboDomainEvent dumboEvent;
private DumboEventTestBuilder(){
dumboEvent = new DumboDomainEvent();
}
public DumboDomainEvent build() {
return dumboEvent;
}
public DumboEventTestBuilder withDumboString(String dumboString) {
dumboEvent.dumboString = dumboString;
return this;
}
public DumboEventTestBuilder withAggregateId(String id) {
dumboEvent.aggregateId = aggregateId(id);
return this;
}
public DumboEventTestBuilder withAggregateId(AggregateId id) {
dumboEvent.aggregateId = id;
return this;
}
public DumboEventTestBuilder withVersion(int version) {
dumboEvent.version = version;
return this;
}
}
public static class DumboDomainEvent implements DomainEvent{
private AggregateId aggregateId;
private int version;
private String dumboString;
public String getDumboString() {
return dumboString;
}
@Override
public AggregateId getAggregateId() {
return aggregateId;
}
@Override
public int getVersion() {
return version;
}
@Override
public String getEventType() {
return "DumboDomainEvent";
}
}
}