package com.flexpoker.framework.event;
import java.time.Instant;
import java.util.UUID;
import com.flexpoker.util.StringUtils;
/**
* Base class used to handle some standard methods and fields so that the
* subclasses can just be specific to what they need.
*/
public abstract class BaseEvent implements Event {
private final UUID aggregateId;
private final int version;
private final Instant time;
public BaseEvent(UUID aggregateId, int version) {
this.aggregateId = aggregateId;
this.version = version;
this.time = Instant.now();
}
@Override
public UUID getAggregateId() {
return aggregateId;
}
@Override
public int getVersion() {
return version;
}
@Override
public Instant getTime() {
return time;
}
@Override
public String toString() {
return StringUtils.allFieldsToString(this);
}
}