package com.belladati.sdk.form.impl; import java.util.ArrayList; import java.util.List; import com.belladati.sdk.form.Form; import com.belladati.sdk.form.FormElement; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; public class FormImpl implements Form { private final String id; private final String name; private final boolean recordTimestamp; private final List<FormElement> elements; public FormImpl(JsonNode json) { this.id = json.get("id").asText(); this.name = json.get("name").asText(); this.recordTimestamp = getBooleanOrDefault(json, "recordTimestamp", false); this.elements = new ArrayList<FormElement>(); if (json.hasNonNull("elements")) { ArrayNode nodes = (ArrayNode) json.get("elements"); for (JsonNode node : nodes) { this.elements.add(new FormElementImpl(node)); } } } @Override public String getId() { return id; } @Override public String getName() { return name; } @Override public boolean getRecordTimestamp() { return recordTimestamp; } @Override public List<FormElement> getElements() { return elements; } @Override public String toString() { return name; } @Override public boolean equals(Object obj) { if (obj instanceof FormImpl) { return id.equals(((FormImpl) obj).id); } return false; } @Override public int hashCode() { return id.hashCode(); } }