package edu.harvard.econcs.turkserver.server; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import edu.harvard.econcs.turkserver.api.HITWorker; import edu.harvard.econcs.turkserver.api.HITWorkerGroup; public class HITWorkerGroupImpl implements HITWorkerGroup { private Map<String, HITWorkerImpl> workerSet = new HashMap<String, HITWorkerImpl>(); void add(HITWorkerImpl worker) { workerSet.put(worker.getHitId(), worker); } public void setExperiment(ExperimentControllerImpl cont) { for( HITWorkerImpl hitw : workerSet.values() ) hitw.setExperiment(cont); } @Override public int groupSize() { return workerSet.size(); } @Override public String toString() { return String.format("Group of %d: HITs %s", workerSet.size(), workerSet.keySet()); } @Override public boolean contains(HITWorker hitWorker) { String hitId = hitWorker.getHitId(); return workerSet.containsKey(hitId) && workerSet.get(hitId).equals(hitWorker); } @Override public Collection<? extends HITWorker> getHITWorkers() { return workerSet.values(); } @Override public List<String> getHITIds() { List<String> hitIds = new ArrayList<String>(workerSet.size()); for( HITWorkerImpl hitw : workerSet.values() ) hitIds.add(hitw.getHitId()); return hitIds; } @Override public List<String> getWorkerIds() { List<String> workerIds = new ArrayList<String>(workerSet.size()); for( HITWorkerImpl hitw : workerSet.values() ) workerIds.add(hitw.getWorkerId()); return workerIds; } @Override public HITWorker findByHITId(String hitId) { return workerSet.get(hitId); } }