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(); } }