package edu.harvard.econcs.turkserver.server;
import java.net.InetAddress;
import java.util.Map;
import edu.harvard.econcs.turkserver.api.ClientController;
import edu.harvard.econcs.turkserver.api.HITWorker;
import edu.harvard.econcs.turkserver.client.ClientAnnotationManager;
import edu.harvard.econcs.turkserver.client.QuizResults;
import edu.harvard.econcs.turkserver.server.MessageException;
/**
* A testing class that wires together server and client side communication without cometD
*
* @author mao
*
*/
public final class FakeHITWorker implements HITWorker, ClientController {
protected String hitId;
protected String assignmentId;
protected String workerId;
protected String username;
ClientAnnotationManager<?> clientWrapper;
// This is set AFTER instantiation
String expId;
EventAnnotationManager expEvent;
public static <C> FakeHITWorker getNew(String hitId, String assignmentId, String workerId, String username,
Class<C> clientClass) throws Exception {
FakeHITWorker fakeWorker = new FakeHITWorker();
fakeWorker.hitId = hitId;
fakeWorker.assignmentId = assignmentId;
fakeWorker.workerId = workerId;
fakeWorker.username = username;
fakeWorker.clientWrapper = new ClientAnnotationManager<C>(fakeWorker, clientClass);
return fakeWorker;
}
public void initialize(String expId, EventAnnotationManager events) {
this.expId = expId;
expEvent = events;
}
public Object getClientBean() {
return clientWrapper.getClientBean();
}
@Override
public String getHitId() {
return hitId;
}
@Override
public String getAssignmentId() {
return assignmentId;
}
@Override
public String getWorkerId() {
return workerId;
}
@Override
public String getUsername() {
return username;
}
@Override
public InetAddress getIPAddress() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isConnected() {
return true;
}
@Override
public long getLastDisconnectedTime() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getTotalDisconnectedTime() {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getNumDisconnects() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getLastInactiveTime() {
// TODO Auto-generated method stub
return 0;
}
@Override
public long getTotalInactiveTime() {
// TODO Auto-generated method stub
return 0;
}
@Override
public double getInactivePercent() {
// TODO Auto-generated method stub
return 0;
}
@Override
public String getInactiveInfo() {
// TODO Auto-generated method stub
return null;
}
void deliverExperimentBroadcast(Map<String, Object> msg) {
clientWrapper.deliverBroadcast(msg);
}
@Override
public void deliverExperimentService(Map<String, Object> msg) throws MessageException {
clientWrapper.deliverService(msg);
}
@Override
public String toString() {
return "Fake HITWorker with " + hitId;
}
/* ****************************************
* Client-side methods
******************************************/
@Override
public void disconnect() {
// TODO Auto-generated method stub
}
@Override
public void sendQuizResults(QuizResults qr) {
// TODO Auto-generated method stub
System.out.println("Sending quiz results not implemented yet");
}
@Override
public void sendExperimentBroadcast(Map<String, Object> data) {
expEvent.deliverBroadcastMsg(expId, this, data);
}
@Override
public void sendExperimentService(Map<String, Object> data) {
expEvent.deliverServiceMsg(expId, this, data);
}
@Override
public void recordInactivity(long timeInactive) {
// TODO Auto-generated method stub
System.out.println("Recording inactivity not implemented yet");
}
}