package org.springmodules.web.test.domain; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * In memory store. * * @author Sergio Bossa */ public class MemoryRepository { private Map employeesMap = new HashMap(); private Map officesMap = new HashMap(); private MemoryRepositoryLoader loader; public MemoryRepository() { } public void init() { this.loader.loadInto(this); } public void addEmployee(IEmployee e) { this.employeesMap.put(e.getMatriculationCode(), e); } public void addOffice(IOffice o) { this.officesMap.put(o.getOfficeId(), o); } public IEmployee getEmployee(String matriculationCode) { return (IEmployee) employeesMap.get(matriculationCode); } public IOffice getOffice(String officeId) { return (IOffice) officesMap.get(officeId); } public Collection getOffices() { List offices = new LinkedList(officesMap.values()); Collections.sort(offices, new Comparator() { public int compare(Object o1, Object o2) { IOffice office1 = (IOffice) o1; IOffice office2 = (IOffice) o2; return office1.getName().compareTo(office2.getName()); } }); return offices; } public Collection getEmployeesByOffice(IOffice o) { List result = new LinkedList(); Iterator it = employeesMap.values().iterator(); while (it.hasNext()) { IEmployee e = (IEmployee) it.next(); if (o.getEmployees().contains(e)) { result.add(e); } } Collections.sort(result, new Comparator() { public int compare(Object o1, Object o2) { IEmployee emp1 = (IEmployee) o1; IEmployee emp2 = (IEmployee) o2; return emp1.getSurname().compareTo(emp2.getSurname()); } }); return result; } public Collection getEmployees() { Collection employees = this.employeesMap.values(); List result = new LinkedList(employees); Collections.sort(result, new Comparator() { public int compare(Object o1, Object o2) { IEmployee emp1 = (IEmployee) o1; IEmployee emp2 = (IEmployee) o2; return emp1.getSurname().compareTo(emp2.getSurname()); } }); return result; } public void setLoader(MemoryRepositoryLoader loader) { this.loader = loader; } }