List of usage examples for com.google.gson.stream JsonReader endArray
public void endArray() throws IOException
From source file:controllers.ParseController.java
@RequestMapping("/addFile") public String addFile(Map<String, Object> model, @RequestParam("newFile") MultipartFile file) throws IOException { File newFile = new File("/usr/local/etc/newFile"); if (!newFile.exists()) { FileUtils.writeByteArrayToFile(newFile, file.getBytes()); } else {/*from w w w . jav a 2s . co m*/ newFile.delete(); FileUtils.writeByteArrayToFile(newFile, file.getBytes()); } if (newFile.exists()) { JsonReader reader = new JsonReader(new FileReader(newFile)); try { reader.beginObject(); while (reader.hasNext()) { String objectName = reader.nextName(); if (objectName.equals("colors")) { reader.beginObject(); while (reader.hasNext()) { String colorNameId = reader.nextName(); reader.beginObject(); Long oldColorId = Long.valueOf("0"); String title = "0"; String titleEng = "0"; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldColorId = reader.nextLong(); } if (objectField.equals("title")) { title = reader.nextString(); } if (objectField.equals("title_eng")) { titleEng = reader.nextString(); } if (objectField.equals("aliases")) { String oldId = ""; String name = ""; if (reader.peek().equals(JsonToken.BEGIN_ARRAY)) { reader.beginArray(); reader.endArray(); oldId = "0"; name = "? "; Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } else { reader.beginObject(); while (reader.hasNext()) { oldId = reader.nextName(); name = reader.nextString(); Color c = new Color(); c.setName(name); c.setTitle(title); c.setTitleEng(titleEng); c.setOldGroupId(oldColorId); c.setOldId(Long.valueOf(oldId)); colorService.createColor(c); //keys.add(oldColorId + " - " + title + " - " + titleEng + " - " + oldId + " - " + name); } reader.endObject(); } } } reader.endObject(); } reader.endObject(); } else if (objectName.equals("color_groups")) { reader.beginObject(); while (reader.hasNext()) { String colorGroupNameId = reader.nextName(); reader.beginObject(); Long oldGroupId = Long.valueOf("0"); String title = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { oldGroupId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("aliases")) { reader.beginObject(); while (reader.hasNext()) { String oldId = reader.nextName(); String name = reader.nextString(); ColorGroup cg = new ColorGroup(); cg.setName(name); cg.setTitle(title); cg.setOldGroupId(oldGroupId); cg.setOldId(Long.valueOf(oldId)); colorGroupService.createColorGroup(cg); //keys.add(oldGroupId + " - " + title + " - " + oldId + " - " + name); } reader.endObject(); } } reader.endObject(); } reader.endObject(); //keys.add(name); } else if (objectName.equals("features")) { reader.beginObject(); while (reader.hasNext()) { String featureNameId = reader.nextName(); reader.beginObject(); Long featureId = Long.valueOf("0"); String title = ""; String description = ""; Long cmgId = null; Long ccoId = null; String media = ""; while (reader.hasNext()) { String objectField = reader.nextName(); if (objectField.equals("id")) { featureId = reader.nextLong(); } else if (objectField.equals("title")) { title = reader.nextString(); } else if (objectField.equals("description")) { description = reader.nextString(); } else if (objectField.equals("car_model_generation_id")) { if (!reader.peek().equals(JsonToken.NULL)) { cmgId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("car_completion_option_id")) { if (!reader.peek().equals(JsonToken.NULL)) { ccoId = reader.nextLong(); } else { reader.skipValue(); } } else if (objectField.equals("media")) { //reader.skipValue(); if (reader.peek().equals(JsonToken.BEGIN_OBJECT)) { reader.beginObject(); while (reader.hasNext()) { if (reader.peek().equals(JsonToken.NAME)) { String mediaName = reader.nextName(); media += mediaName + " : [ "; reader.beginArray(); while (reader.hasNext()) { media += " { "; reader.beginObject(); while (reader.hasNext()) { String mediaParamName = reader.nextName(); media += mediaParamName + " : "; if (!mediaParamName.equals("url")) { if (!reader.peek().equals(JsonToken.NULL)) { media += reader.nextString(); } else { reader.skipValue(); media += "null"; } } else { reader.beginObject(); media += "{"; while (reader.hasNext()) { media += reader.nextName() + " : " + reader.nextString(); } media += "}"; reader.endObject(); } } reader.endObject(); media += " } "; } reader.endArray(); media += " ] "; } } reader.endObject(); } else { reader.skipValue(); } } } reader.endObject(); Feature f = new Feature(); f.setOldId(featureId); f.setTitle(title); f.setDescription(description); f.setCmgId(cmgId); f.setCcoId(ccoId); f.setMedia(media); //keys.add(featureId + " - " + title + " - " + description + " - " + cmgId + " - " + ccoId + " - " + media); featureService.createFeature(f); } reader.endObject(); } else { reader.skipValue(); } } reader.endObject(); reader.close(); } catch (Exception e) { model.put("error", "? ? :" + StringAdapter.getStackTraceException(e)); reader.close(); return "ParseShow"; } } return "redirect:/ParseController/show"; }
From source file:data.Task1bData.java
License:Apache License
public void readData(String jsonFile) throws IOException { int num_questions = 0; int num_triples = 0; int type_yesno = 0; int type_factoid = 0; int type_list = 0; int type_summary = 0; try {//from w w w. j a v a 2 s . com JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(jsonFile))); //reader.setLenient(true); // JsonToken peeknext = reader.peek(); // peeknext. reader.beginObject(); while (reader.hasNext()) { String nextfield = reader.nextName(); if (nextfield.equals("questions")) { reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); num_questions++; Question qst = new Question(); while (reader.hasNext()) { String name = reader.nextName(); int k = 0; if (name.equals("body")) { String body = reader.nextString(); qst.setBody(body); } else if (name.equals("triples")) { num_triples++; ArrayList<Triple> triples = readTriplesArray(reader); qst.addTriples(triples); } else if (name.equals("type")) { String type = reader.nextString(); if (type.equals("yesno")) { qst.setType(Question.YESNO); type_yesno++; } else if (type.equals("factoid")) { qst.setType(Question.FACTOID); type_factoid++; } if (type.equals("summary")) { qst.setType(Question.SUMMARY); type_summary++; } if (type.equals("list")) { qst.setType(Question.LIST); type_list++; } } else if (name.equals("id")) { String id = reader.nextString(); qst.setId(id); } else if (name.equals("concepts")) { ArrayList<String> concepts = readConcepts(reader); qst.addConcepts(concepts); } else if (name.equals("documents")) { ArrayList<String> docs = readDocuments(reader); qst.addDocuments(docs); } else if (name.equals("exact_answer")) { ExactAnswer ea = new ExactAnswer(); JsonToken peek = reader.peek(); if (peek == JsonToken.BEGIN_ARRAY) //list or factoid { reader.beginArray(); JsonToken peek1 = reader.peek(); ArrayList<String> listOfAnswers = new ArrayList<String>(); ArrayList<ArrayList<String>> listofarrays = new ArrayList<ArrayList<String>>(); if (peek1 == JsonToken.BEGIN_ARRAY) // list (or factoid-list since BioASQ3) { /* * Warning: changed the following for BioASQ 5 * No synonyms in submissions anymore, only in gold files */ if (VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ2 || VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ3) { listofarrays = readExactAnswerListOfArraysv2(reader); ea.setLists(listofarrays); } else if (VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ5) { if (!this.isGold) { // For submissions use restricted parsing : only first of synonyms taken into account listofarrays = readExactAnswerListOfArraysv3(reader); } else { // For golden read all synonyms normally listofarrays = readExactAnswerListOfArraysv2(reader); } ea.setLists(listofarrays); } else { System.out.println("Wrong challenge version. I will exit."); System.exit(0); } } else if (peek1 == JsonToken.STRING) // factoid (for BioASQ1&2) { /* * Warning: changed the following for BioASQ 3 * we now have list of arrays for factoid */ if (VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ2) { listOfAnswers = readExactAnswerArray(reader); ea.setAnswers(listOfAnswers); } //not reached! else if (VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ3) { listofarrays = readExactAnswerListOfArraysv2(reader); ea.setLists(listofarrays); } /* * Warning: changed the following for BioASQ 5 * No synonyms are submitted anymore by participants */ //not reached! else if (VERSION_OF_CHALLENGE == evaluation.EvaluatorTask1b.BIOASQ5) { listofarrays = readExactAnswerListOfArraysv3(reader); ea.setLists(listofarrays); } else { System.out.println("Wrong challenge version. I will exit."); System.exit(0); } } //ea.setAnswers(listOfAnswers); qst.setExact_answer(ea); reader.endArray(); } else if (peek == JsonToken.STRING) //yesno { String yesno_answer = reader.nextString(); yesno_answer = yesno_answer.toLowerCase(); if (yesno_answer.contains("yes")) ea.setAnswer("yes"); else if (yesno_answer.contains("no")) ea.setAnswer("no"); else { ea.setAnswer("none"); // System.out.println("Unknown answer in yesno question: "+yesno_answer); } qst.setExact_answer(ea); } } // Edited for BioASQ4 Evaluation (to solve format conflict with Rouge.py) // ideal answers are not evaluated with this code, so no need to read them(Rouge and manual queration is used instead) // else if(name.equals("ideal_answer")) // { // String ideal=""; // try{ideal = reader.nextString();}catch(IllegalStateException ex){System.out.println(ex.toString());System.out.println(jsonFile); // } // qst.setIdeal_answer(ideal); // } else if (name.equals("snippets")) { ArrayList<Snippet> snippets = readSnippets(reader); qst.addSnippets(snippets); } else { reader.skipValue(); } } //reader.skipValue(); reader.endObject(); this.questions.add(qst); } reader.endArray(); } else { reader.skipValue(); } } reader.endObject(); /* System.out.println("Number of questions:"+num_questions); System.out.println("Number of triples:"+num_triples); System.out.println("Number of yesno:"+type_yesno); System.out.println("Number of factoid:"+type_factoid); System.out.println("Number of list:"+type_list); System.out.println("Number of summary:"+type_summary);*/ } catch (FileNotFoundException ex) { System.out.println("Problem in JSONfile : " + jsonFile); } }
From source file:data.Task1bData.java
License:Apache License
private ArrayList<String> readExactAnswerListOfArrays(JsonReader reader) { ArrayList<String> answers = new ArrayList<String>(); int count = 0; try {/*from w w w.j ava 2 s . c om*/ while (reader.hasNext()) { reader.beginArray(); while (reader.hasNext()) { ArrayList<String> temp_ans = readExactAnswerArray(reader); answers.addAll(temp_ans); } reader.endArray(); } } catch (IOException ex) { } return answers; }
From source file:data.Task1bData.java
License:Apache License
/** Reads exact answers submitted by systems for list [1] and factoid [2] questions * Also reads gold exact answers for list and factoid questions ( where synonyms included in BioASQ5 too) * [1] Used for list questions, up to BioASQ4, when synonyms where submitted by participants * [2] Used for factoid questions, of BioASQ3&4, when synonyms where submitted by participants *//*from www .j a v a 2s . com*/ private ArrayList<ArrayList<String>> readExactAnswerListOfArraysv2(JsonReader reader) { ArrayList<ArrayList<String>> answers = new ArrayList<ArrayList<String>>(); int count = 0; try { while (reader.hasNext()) { reader.beginArray(); while (reader.hasNext()) { ArrayList<String> temp_ans = readExactAnswerArray(reader); answers.add(temp_ans); } reader.endArray(); } } catch (IOException ex) { } // System.out.println(answers); return answers; }
From source file:data.Task1bData.java
License:Apache License
/** Reads exact answers submitted by systems for list questions and factoid questions * Used since BioASQ 5, where no synonyms where submitted by participants * Only the first element of the inner list is taken into account for evaluation * Note: Not used for golden exact answers, where synonyms included *//* w w w . j av a 2 s . co m*/ private ArrayList<ArrayList<String>> readExactAnswerListOfArraysv3(JsonReader reader) { ArrayList<ArrayList<String>> answers = new ArrayList<ArrayList<String>>(); int count = 0; try { while (reader.hasNext()) { reader.beginArray(); while (reader.hasNext()) { ArrayList<String> temp_ans = readExactAnswerArray(reader); // Full answer submitted (with possible synonyms) ArrayList<String> temp_ans_fisrt_item = new ArrayList<String>(); // edited answer (only fisrt synonym kept) if (!temp_ans.isEmpty()) { temp_ans_fisrt_item.add(temp_ans.get(0)); } answers.add(temp_ans_fisrt_item); } reader.endArray(); } } catch (IOException ex) { } // System.out.println(answers); return answers; }
From source file:data.Task1bData.java
License:Apache License
private ArrayList<Triple> readTriplesArray(JsonReader reader) { ArrayList<Triple> triples = new ArrayList<Triple>(); try {//from w w w . j a v a2 s .c o m reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); String op = "", pre = "", sub = ""; while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("o")) { JsonToken peek = reader.peek(); if (peek.equals(JsonToken.NULL)) { op = ""; reader.nextNull(); } else op = reader.nextString(); } else if (name.equals("p")) { pre = reader.nextString(); } else if (name.equals("s")) { JsonToken peek = reader.peek(); if (peek.equals(JsonToken.NULL)) { sub = ""; reader.nextNull(); } else sub = reader.nextString(); } else reader.skipValue(); } Triple tr = new Triple(pre, sub, op); reader.endObject(); triples.add(tr); } reader.endArray(); } catch (IOException ex) { } return triples; }
From source file:data.Task1bData.java
License:Apache License
private ArrayList<Snippet> readSnippets(JsonReader reader) { ArrayList<Snippet> snippets = new ArrayList<Snippet>(); try {/*www . j ava 2 s . c o m*/ reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); String document = "", fnameBegin = "", fnameEnd = "", text = ""; int beginIndex = 0; int endIndex = 0; while (reader.hasNext()) { String name = reader.nextName(); if (name.equals("offsetInBeginSection")) { beginIndex = reader.nextInt(); } else if (name.equals("offsetInEndSection")) { endIndex = reader.nextInt(); } else if (name.equals("document")) { document = reader.nextString(); } else if (name.equals("beginSection")) { fnameBegin = reader.nextString(); fnameBegin = fnameBegin.substring(fnameBegin.indexOf('.') + 1); } else if (name.equals("endSection")) { fnameEnd = reader.nextString(); fnameEnd = fnameEnd.substring(fnameEnd.indexOf('.') + 1); } else if (name.equals("text")) { text = reader.nextString(); } else { //System.out.println("Unknown field "+name +" in snippet"); } } Snippet sn = new Snippet(document, text, fnameBegin, fnameEnd, beginIndex, endIndex); reader.endObject(); snippets.add(sn); } reader.endArray(); } catch (IOException ex) { } return snippets; }
From source file:data.Task1bData.java
License:Apache License
public ArrayList<String> readConcepts(JsonReader reader) { ArrayList<String> conc = new ArrayList<String>(); int count = 0; try {/* w w w. ja v a 2s . c o m*/ reader.beginArray(); while (reader.hasNext()) { String nextString = reader.nextString(); if (!conc.contains(nextString)) conc.add(nextString); } reader.endArray(); } catch (IOException ex) { } return conc; }
From source file:data.Task1bData.java
License:Apache License
public ArrayList<String> readDocuments(JsonReader reader) { ArrayList<String> docs = new ArrayList<String>(); int count = 0; try {// w w w. ja v a2s . co m reader.beginArray(); while (reader.hasNext()) { String nextString = reader.nextString(); if (!docs.contains(nextString)) docs.add(nextString); } reader.endArray(); } catch (IOException ex) { } return docs; }
From source file:data.TaskADataParser.java
License:Apache License
public static void closeReader(JsonReader reader) { try {//from w ww . ja v a2 s . c o m reader.endArray(); reader.endObject(); } catch (IOException ex) { Logger.getLogger(TaskADataParser.class.getName()).log(Level.SEVERE, null, ex); } }