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