1 package org.prevayler.demos.scalability.prevayler; 2 3 import java.util.ArrayList ; 4 import java.util.Collections ; 5 import java.util.HashMap ; 6 import java.util.Iterator ; 7 import java.util.List ; 8 import java.util.Map ; 9 10 import org.prevayler.demos.scalability.Record; 11 import org.prevayler.demos.scalability.RecordIterator; 12 13 class QuerySystem implements ScalabilitySystem { 14 15 private Map recordsByName = new HashMap (); 16 17 18 public List queryByName(String name) { 19 return (List )recordsByName.get(name); 20 } 21 22 23 public void replaceAllRecords(RecordIterator newRecords) { 24 recordsByName.clear(); 25 26 while (newRecords.hasNext()) { 27 put(newRecords.next()); 28 } 29 30 makeReadOnly(); 31 } 32 33 34 private void put(Record newRecord) { 35 List records = queryByName(newRecord.getName()); 36 if (records == null) { 37 records = new ArrayList (); 38 recordsByName.put(newRecord.getName(), records); 39 } 40 41 records.add(newRecord); 42 } 43 44 45 47 private void makeReadOnly() { 48 Iterator entries = recordsByName.entrySet().iterator(); 49 while (entries.hasNext()) { 50 Map.Entry entry = (Map.Entry )entries.next(); 51 entry.setValue(Collections.unmodifiableList((List )entry.getValue())); 52 } 53 } 54 } 55 | Popular Tags |