package com.google.code.joto.eventrecorder;
import java.io.Serializable;
import java.util.List;
/**
* abstract class for all events occuring on a RecordEventStore
* This includes:
* <ul>
* <li>AddEvent (for user defined/recorded event</li>
* <li>TruncateEvents (purge)</li>
* <li>StartRecording</li>
* <li>StopRecoding</li>
* ...
* </ul>
*/
public abstract class RecordEventStoreChange implements Serializable {
/** internal for java.io.Serializable */
private static final long serialVersionUID = 1L;
public abstract void accept(RecordEventChangeVisitor visitor);
// -------------------------------------------------------------------------
/**
*
*/
public static class AddRecordEventStoreEvent extends RecordEventStoreChange {
/** internal for java.io.Serializable */
private static final long serialVersionUID = 1L;
private RecordEventSummary eventSummary;
/** optionnally set... recall eventStore.getEventData() if needing it */
private RecordEventData eventData;
public AddRecordEventStoreEvent(RecordEventSummary event) {
super();
this.eventSummary = event;
}
public AddRecordEventStoreEvent(RecordEventData eventData) {
this(eventData.getEventSummary());
this.eventData = eventData;
}
public void accept(RecordEventChangeVisitor visitor) {
visitor.caseAddEvent(this);
}
public RecordEventSummary getEventSummary() {
return eventSummary;
}
public RecordEventData getEventData(RecordEventStore eventStore) {
if (eventData == null) {
eventData = eventStore.getEventData(eventSummary);
}
return eventData;
}
}
// -------------------------------------------------------------------------
/**
*
*/
public static class TruncateRecordEventStoreEvent extends RecordEventStoreChange {
/** internal for java.io.Serializable */
private static final long serialVersionUID = 1L;
private final int fromEventId;
private final int toEventId; // exclusive
/** optionnally set... */
private List<RecordEventSummary> optTruncateEventSummaries;
public TruncateRecordEventStoreEvent(int fromEventId, int toEventId, List<RecordEventSummary> optTruncateEventSummaries) {
this.fromEventId = fromEventId;
this.toEventId = toEventId;
this.optTruncateEventSummaries = optTruncateEventSummaries;
}
public void accept(RecordEventChangeVisitor visitor) {
visitor.caseTruncateEvent(this);
}
public int getFromEventId() {
return fromEventId;
}
public int getToEventId() {
return toEventId;
}
public List<RecordEventSummary> getOptTruncateEventSummaries() {
return optTruncateEventSummaries;
}
}
// -------------------------------------------------------------------------
/**
*
*/
public static class StartRecordingEvent extends RecordEventStoreChange {
/** internal for java.io.Serializable */
private static final long serialVersionUID = 1L;
public StartRecordingEvent() {
}
public void accept(RecordEventChangeVisitor visitor) {
visitor.caseStartRecording(this);
}
}
// -------------------------------------------------------------------------
/**
*
*/
public static class StopRecordingEvent extends RecordEventStoreChange {
/** internal for java.io.Serializable */
private static final long serialVersionUID = 1L;
public StopRecordingEvent() {
}
public void accept(RecordEventChangeVisitor visitor) {
visitor.caseStopRecording(this);
}
}
}