package in.partake.model.dto.auxiliary; import in.partake.base.JSONable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.node.ArrayNode; import org.codehaus.jackson.node.JsonNodeFactory; import org.codehaus.jackson.node.ObjectNode; public class EnqueteQuestion implements JSONable { private UUID id; private String question; private EnqueteAnswerType type; private List<String> options; public EnqueteQuestion(UUID id, String question, EnqueteAnswerType type, List<String> options) { this.id = id; this.question = question; this.type = type; if (options != null) this.options = new ArrayList<String>(options); } public EnqueteQuestion(JsonNode obj) { this.id = UUID.fromString(obj.get("id").asText()); this.question = obj.path("question").asText(); this.type = EnqueteAnswerType.safeValueOf(obj.get("type").asText()); this.options = new ArrayList<String>(); JsonNode array = obj.get("options"); for (int i = 0; i < array.size(); ++i) options.add(array.get(i).asText()); } @Override public ObjectNode toJSON() { ObjectNode obj = new ObjectNode(JsonNodeFactory.instance); obj.put("id", id.toString()); obj.put("question", question); obj.put("type", type.toString()); ArrayNode array = obj.putArray("options"); for (String str : options) array.add(str); return obj; } public UUID getId() { return id; } public String getText() { return question; } public EnqueteAnswerType getAnswerType() { return type; } public List<String> getOptions() { if (options == null) return null; return Collections.unmodifiableList(options); } }