/** * tries to parse the given json message into a query object * * @param json_file a json that fulfills the exchange format between frontend and middleware * @return a query object that holds the information in the json message */ public static Query parse(String json_file) { try { Query query = new Query(); Object obj = JSONValue.parse(json_file); // System.out.println(obj); JSONObject j = (JSONObject) obj; // System.out.println(j); // sources if (j.get("source") != null) { /* JSONArray jArray = (JSONArray)j.get("sources"); ArrayList<String> sources = new ArrayList<String>(); for (int i = 0; i < jArray.size(); i++){ sources.add(jArray.get(i).toString()); } */ if (((String) (j.get("source"))).equals("dbSNP")) { query.s_Source = (short) 0; } if (((String) (j.get("source"))).equals("1000GenomesProject")) { query.s_Source = (short) 1; } } // chromosome if (j.get("chromosome") != null) { if (((String) j.get("chromosome")).equals("X")) { query.s_Chromosome = 23; } else if (((String) j.get("chromosome")).equals("Y")) { query.s_Chromosome = 24; } else if (((String) j.get("chromosome")).equals("MT")) { query.s_Chromosome = 25; } else { query.s_Chromosome = (short) Integer.parseInt((String) j.get("chromosome")); } } // position if (j.get("intervall") != null) { JSONObject pos_obj = (JSONObject) j.get("intervall"); query.i_Start = (int) (long) pos_obj.get("from"); query.i_End = (int) (long) pos_obj.get("to"); query.i_ZoomLevel = (int) (long) pos_obj.get("size"); } // gene search if (j.get("search") != null) { query.x_Search = (String) j.get("search"); } // prefix if (j.get("prefix") != null) { query.b_isPrefix = (boolean) j.get("prefix"); } else { query.b_isPrefix = false; } /* // subintervals if (j.get("subintervals") != null){ query.subintervals = (int)(long) j.get("subintervals"); } */ // hasDetail flag if (j.get("hasDetail") != null) { query.b_hasDetail = (boolean) j.get("hasDetail"); } if (j.get("filter") != null) { JSONObject fil_obj = (JSONObject) j.get("filter"); if (((boolean) fil_obj.get("male")) && !((boolean) fil_obj.get("female"))) { query.s_Gender = (short) 0; } else if (!((boolean) fil_obj.get("male")) && ((boolean) fil_obj.get("female"))) { query.s_Gender = (short) 1; } query.i_RelFrq = (int) (long) fil_obj.get("relfrq"); JSONArray orig_array = (JSONArray) fil_obj.get("origin"); query.s_Country = new short[orig_array.size()]; for (int i = 0; i < orig_array.size(); i++) { query.s_Country[i] = IndexController.getNumber((String) orig_array.get(i)); } } return query; } catch (Exception e) { System.out.println("Unknown query format"); return null; } /* try{ Query query = new Query(); Integer randomID = get_random_number(); query.queryID = randomID; queryID_pool.remove(randomID); Object obj = JSONValue.parse(json_file); //System.out.println(obj); JSONObject j = (JSONObject) obj; //System.out.println(j); // sources if (j.get("source") != null){ query.source = (String)j.get("source"); } // chromosome if (j.get("chromosome") != null){ query.chromosome = (int) (long) j.get("chromosome"); } // position if (j.get("intervall") != null){ JSONObject pos_obj = (JSONObject) j.get("intervall"); Integer[] pos = new Integer[2]; pos[0] = (int)(long)pos_obj.get("from"); pos[1] = (int)(long)pos_obj.get("to"); query.zoom_level = (int)(long)pos_obj.get("size"); query.position = pos; } // gene search if (j.get("search") != null){ query.search = (String) j.get("search"); } // prefix if (j.get("prefix") != null){ query.isPrefix = (boolean)j.get("prefix"); } else{ query.isPrefix = false; } // hasDetail flag if (j.get("hasDetail") != null){ query.hasDetail = (boolean) j.get("hasDetail"); } if (j.get("filter") != null){ Filter fil = new Filter(); JSONObject fil_obj = (JSONObject)j.get("filter"); fil.male = (boolean)fil_obj.get("male"); fil.female = (boolean) fil_obj.get("female"); fil.relfrq = (int) (long)fil_obj.get("origin"); JSONArray orig_array = (JSONArray) fil_obj.get("origin"); String[] orig = new String[orig_array.size()]; for (int i = 0; i < orig_array.size(); i++){ orig[i] = (String)orig_array.get(i); } fil.origin = orig; query.filter = fil; } return query; } catch(Exception e){ System.out.println("Unknown query format"); return null; } */ }