package org.hadatac.console.models; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.TreeMap; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class SpatialQueryResults extends QueryResults { public String json; public ArrayList<Document> the_docs = new ArrayList<Document>(); public SpatialQueryResults () {} public SpatialQueryResults (String json) { this.json = json; //System.out.println(json); // create an ObjectMapper instance. ObjectMapper mapper = new ObjectMapper(); // use the ObjectMapper to read the json string and create a tree JsonNode node = null; try { node = mapper.readTree(json); } catch (IOException e) { e.printStackTrace(); } //JsonNode documents = node.get("response").get("docs"); JsonNode documents; //Surrounded with try catch to avoid null result set crashing the app try { documents = node.get("response").get("docs"); Iterator<JsonNode> doc_iterator = documents.iterator(); while (doc_iterator.hasNext()){ JsonNode doc = doc_iterator.next(); TreeMap<String, String> fields = new TreeMap<String, String>(); Iterator<String> docFields = doc.fieldNames(); while (docFields.hasNext()){ String docField = docFields.next(); /* if (docField.equals("characteristic")){ continue; }*/ fields.put(docField, doc.get(docField).asText()); //System.out.println(docField); } List<JsonNode> characteristic = doc.findValues("characteristic"); ArrayList<String> characteristics = new ArrayList<String>(); for (JsonNode c : characteristic){ Iterator<String> chars = c.fieldNames(); while (chars.hasNext()){ //TODO Rename this //TODO Figure out why I did this. Can't remember why it's here String the_thing = chars.next(); //characteristics.add(the_thing); //System.out.println(the_thing); } System.out.println(c.toString()); characteristics.add(c.toString()); } the_docs.add(new Document(fields, characteristics)); } //System.out.println(the_docs.size()); } catch (Exception e){ e.printStackTrace(); } } }