package sample.pollapp.processor;
import io.netty.handler.codec.http.HttpHeaders;
import java.util.Arrays;
import java.util.List;
import rfx.server.configs.ContentTypePool;
import rfx.server.http.HttpProcessor;
import rfx.server.http.HttpProcessorConfig;
import rfx.server.http.data.HttpRequestEvent;
import rfx.server.http.data.service.DataService;
import rfx.server.http.data.service.StringDataService;
import rfx.server.util.DatabaseDomainUtil;
import rfx.server.util.StringUtil;
import sample.pollapp.business.dao.PollAppDAO;
import sample.pollapp.model.Poll;
import com.google.gson.annotations.Expose;
/**
* @author trieu
*
* simple sample processor
*
*/
@HttpProcessorConfig(uriPath= "/poll", contentType = ContentTypePool.JSON)
public class PollHttpProcessor extends HttpProcessor {
PollAppDAO pollAppDAO = DatabaseDomainUtil.getContext().getBean(PollAppDAO.class);
@Override
protected DataService process(HttpRequestEvent event) {
String method = event.param("method", "getAllPolls");
if(method.equals("getAllPolls")){
List<Poll> polls = pollAppDAO.getAllPolls();
return new MyData(polls);
} else if(method.equals("getPoll")){
int id = StringUtil.safeParseInt(event.param("id"));
List<Poll> polls = Arrays.asList(pollAppDAO.getPoll(id));
return new MyData(polls);
}
return new StringDataService("Empty");
}
static class MyData implements DataService{
@Expose
List<Poll> polls;
static final String classpath = MyData.class.getName();
public List<Poll> getPolls() {
return polls;
}
public MyData(List<Poll> polls) {
super();
this.polls = polls;
}
@Override
public void freeResource() {
}
@Override
public String getClasspath() {
return classpath;
}
@Override
public boolean isRenderedByTemplate() {
return false;
}
@Override
public List<HttpHeaders> getHttpHeaders() {
return null;
}
}
}