package de.tud.kom.socom.util.datatypes;
import java.util.LinkedList;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONString;
import de.tud.kom.socom.util.JSONUtils;
import de.tud.kom.socom.util.LoggerFactory;
public class InfluenceResult implements JSONString {
class InfluenceAnswer implements JSONString {
long id;
String answer;
int count;
public InfluenceAnswer(long id, String answer, int count) {
this.id = id;
this.answer = answer;
this.count = count;
}
@Override
public String toJSONString() {
try
{
return JSONUtils.JSONToString(new JSONObject().put("id", id).put("answer", answer).put("count", count));
} catch (JSONException e)
{
LoggerFactory.getLogger().Error(e);
}
return null;
}
}
private String question;
private boolean allowedFreeAnswers, freeAnswersVotable;
private List<InfluenceAnswer> predefinedAnswers = new LinkedList<InfluenceAnswer>();
private List<InfluenceAnswer> freeAnswers = new LinkedList<InfluenceAnswer>();
public InfluenceResult(String question, boolean allowedFreeAnswers, boolean freeAnswersVotable) {
this.question = question;
this.allowedFreeAnswers = allowedFreeAnswers;
this.freeAnswersVotable = freeAnswersVotable;
}
public String getQuestion() {
return question;
}
public boolean getAllowedFreeAnswers() {
return allowedFreeAnswers;
}
public List<InfluenceAnswer> getPredefinedAnswers() {
return predefinedAnswers;
}
public void addPredefinedAnswer(long id, String answer, int count) {
predefinedAnswers.add(new InfluenceAnswer(id, answer, count));
}
public List<InfluenceAnswer> getFreeAnswers() {
return freeAnswers;
}
public void addFreeAnswer(long id, String answer) {
freeAnswers.add(new InfluenceAnswer(id, answer, -1));
}
public void addFreeAnswer(long id, String answer, int answerCount) {
freeAnswers.add(new InfluenceAnswer(id, answer, answerCount));
}
@Override
public String toJSONString() {
JSONObject json = getJSON();
return JSONUtils.JSONToString(json);
}
public JSONObject getJSON() {
JSONObject json = new JSONObject();
try {
json.put("question", question);
json.put("allowedFreeAnswers", allowedFreeAnswers);
json.put("freeAnswersVotable", freeAnswersVotable);
json.put("predefinedAnswers", predefinedAnswers);
json.put("freeAnswers", freeAnswers);
} catch (JSONException e) {
LoggerFactory.getLogger().Error(e);
}
return json;
}
}