package org.prevayler.demos.scalability.prevayler;
import java.util.HashMap;
import java.util.Map;
import org.prevayler.demos.scalability.Record;
import org.prevayler.demos.scalability.RecordIterator;
class TransactionSystem implements ScalabilitySystem {
private static final long serialVersionUID = 461535927650714306L;
private final Map recordsById = new HashMap();
public void performTransaction(Record recordToInsert, Record recordToUpdate, long idToDelete) {
synchronized (recordsById) {
put(recordToInsert);
put(recordToUpdate);
recordsById.remove(new Long(idToDelete));
}
}
private Object put(Record newRecord) {
Object key = new Long(newRecord.getId());
return recordsById.put(key, newRecord);
}
public void replaceAllRecords(RecordIterator newRecords) {
recordsById.clear();
while (newRecords.hasNext()) {
put(newRecords.next());
}
}
public int hashCode() {
return recordsById.hashCode();
}
}