/******************************************************************************* * Copyright 2012 University of Southern California * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * This code was developed by the Information Integration Group as part * of the Karma project at the Information Sciences Institute of the * University of Southern California. For more information, publications, * and related projects, please see: http://www.isi.edu/integration ******************************************************************************/ package edu.isi.karma.webserver; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Random; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONStringer; import org.json.JSONWriter; import org.json.XML; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.isi.karma.imp.json.JsonImport; import edu.isi.karma.rep.HNode; import edu.isi.karma.rep.HTable; import edu.isi.karma.rep.RepFactory; import edu.isi.karma.rep.Row; import edu.isi.karma.rep.Worksheet; import edu.isi.karma.rep.Workspace; import edu.isi.karma.util.FileUtil; import edu.isi.karma.util.JSONUtil; public class SampleDataFactory { private static Logger logger = LoggerFactory .getLogger(SampleDataFactory.class); public static Worksheet createSample1(Workspace workspace) { RepFactory f = workspace.getFactory(); Worksheet w = f.createWorksheet("Complex Smaple Table", workspace); String ss = w.addHNode("Social Security", f).getId(); String personContainer = w.addHNode("Person", f).getId(); String addressContainer = w.addHNode("Address", f).getId(); String relativesContainer = w.addHNode("Relatives", f).getId(); HTable personTable = w.getHeaders().getHNode(personContainer) .addNestedTable("Person Table", w, f); String firstName = personTable.addHNode("First Name", w, f).getId(); String lastName = personTable.addHNode("Last Name", w, f).getId(); HTable addressTable = w.getHeaders().getHNode(addressContainer) .addNestedTable("Address Table", w, f); String what = addressTable.addHNode("What", w, f).getId(); String address = addressTable.addHNode("Address", w, f).getId(); HTable relativesTable = w.getHeaders().getHNode(relativesContainer) .addNestedTable("Relatives Person Table", w, f); String relFirstName = relativesTable.addHNode("Relatives First Name", w, f).getId(); String relLastName = relativesTable.addHNode("Relatives Last Name", w, f).getId(); // Row 1 Row r1 = w.addRow(f); r1.setValue(ss, "123-45-6789", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Pedro", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f) .setValue(firstName, "P Alejandro", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Pedro A", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Pablo", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Piotr", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Szekeli", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "CK Lee", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Zekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Zsekely", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Szeke", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Peter", f) .setValue(lastName, "Sequeli", f); r1.addNestedRow(addressContainer, f).setValue(what, "home", f) .setValue(address, "1401 E Maple Ave, El Segundo, CA 90245", f); r1.addNestedRow(addressContainer, f) .setValue(what, "work", f) .setValue(address, "4676 Admiralty Way #1000, Marina del Rey, CA 90292", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Claudia", f) .setValue(relLastName, "Szekely", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Susana", f) .setValue(relLastName, "Szekely", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Cristina", f) .setValue(relLastName, "Sierra", f); Row r2 = w.addRow(f); r2.setValue(ss, "007-00-7007", f); r2.addNestedRow(personContainer, f).setValue(firstName, "Shubham", f) .setValue(lastName, "Gupta", f); r2.addNestedRow(addressContainer, f) .setValue(what, "home", f) .setValue(address, "7077 Alvern St # 118, Los Angeles, CA - 90045", f); r2.addNestedRow(addressContainer, f) .setValue(what, "work", f) .setValue(address, "4676 Admiralty Way #1000, Marina del Rey, CA 90292", f); r2.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Anushree", f) .setValue(relLastName, "Mehra", f); r2.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Sameer", f) .setValue(relLastName, "Mohan", f); r2.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Suhani", f) .setValue(relLastName, "Gupta", f); r2.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Sarika", f) .setValue(relLastName, "Saxena", f); return w; } public static Worksheet createSample1small(Workspace workspace) { RepFactory f = workspace.getFactory(); Worksheet w = f.createWorksheet("Complex Smaple Table", workspace); String ss = w.addHNode("Social Security", f).getId(); String personContainer = w.addHNode("Person", f).getId(); String addressContainer = w.addHNode("Address", f).getId(); String relativesContainer = w.addHNode("Relatives", f).getId(); HTable personTable = w.getHeaders().getHNode(personContainer) .addNestedTable("Person Table", w, f); String firstName = personTable.addHNode("First Name", w, f).getId(); String lastName = personTable.addHNode("Last Name", w, f).getId(); HTable addressTable = w.getHeaders().getHNode(addressContainer) .addNestedTable("Address Table", w, f); String what = addressTable.addHNode("What", w, f).getId(); String address = addressTable.addHNode("Address", w, f).getId(); HTable relativesTable = w.getHeaders().getHNode(relativesContainer) .addNestedTable("Relatives Person Table", w, f); String relFirstName = relativesTable.addHNode("Relatives First Name", w, f).getId(); String relLastName = relativesTable.addHNode("Relatives Last Name", w, f).getId(); // Row 1 Row r1 = w.addRow(f); r1.setValue(ss, "123-45-6789", f); r1.addNestedRow(personContainer, f).setValue(firstName, "Pedro", f) .setValue(lastName, "Szekely", f); r1.addNestedRow(addressContainer, f).setValue(what, "home", f) .setValue(address, "1401 E Maple Ave", f); r1.addNestedRow(addressContainer, f).setValue(what, "work", f) .setValue(address, "4676 Admiralty", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Claudia", f) .setValue(relLastName, "Szekely", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Susana", f) .setValue(relLastName, "Szekely", f); r1.addNestedRow(relativesContainer, f) .setValue(relFirstName, "Cristina", f) .setValue(relLastName, "Sierra", f); return w; } public static Worksheet createFlatWorksheet(Workspace wsp, int numRows, int numColumns) { Worksheet w = wsp.getFactory().createWorksheet( "Table (" + numRows + ", " + numColumns + ")", wsp); for (int c = 1; c <= numColumns; c++) { w.getHeaders().addHNode("Column " + c, w, wsp.getFactory()); } int vCount = 1; for (int r = 1; r <= numRows; r++) { Row row = w.addRow(wsp.getFactory()); for (HNode hn : w.getHeaders().getSortedHNodes()) { row.setValue(hn.getId(), "Value " + vCount, wsp.getFactory()); vCount += 1; } } return w; } public static Worksheet createFromJsonTextFile(Workspace workspace, String fileName) { FileReader r; try { r = new FileReader(fileName); Object o = JSONUtil.createJson(r); // System.err.println("JSON:" + o.toString()); // System.err.println("JSON:" + JSONObject.quote(o.toString())); File f = new File(fileName); JsonImport ji = new JsonImport(o, f.getName(), workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (FileNotFoundException e) { logger.error("Cannot read file " + fileName + "."); e.printStackTrace(); } catch (JSONException e) { logger.error("Could not parse JSON in file " + fileName + "."); e.printStackTrace(); } return null; } public static Worksheet createFromXMLTextFile(Workspace workspace, String fileName) { File xmlFile = new File(fileName); try { String fileContents = FileUtil.readFileContentsToString(xmlFile); // System.out.println(fileContents); // Converting the XML to JSON JSONObject json = XML.toJSONObject(fileContents); // System.err.println("JSON:" + o.toString()); // System.err.println("JSON:" + JSONObject.quote(o.toString())); JsonImport ji = new JsonImport(json, fileName, workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (FileNotFoundException e) { logger.error("Cannot read file " + fileName + "."); e.printStackTrace(); } catch (JSONException e) { logger.error("Could not parse JSON in file " + fileName + "."); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static String getSampleJsonString(int numRows) { JSONStringer x = new JSONStringer(); Random rand = new Random(0); try { JSONWriter top = x.array(); for (int i = 1; i <= numRows; i++) { JSONWriter o = top.object(); o.key("a").value("a" + i); o.key("b").value("b" + i); JSONWriter c = o.key("c").array(); for (int ci = 1; ci <= 10; ci++) { JSONWriter co = c.object(); co.key("c.1").value("c.1_" + ci); if (rand.nextBoolean()) { co.key("c.2").value("c.2_" + ci); } if (rand.nextBoolean()) { JSONWriter c3a = co.key("c.3").array(); for (int c3i = 1; c3i < rand.nextInt(10) + 1; c3i++) { JSONWriter c3o = c3a.object(); if (rand.nextBoolean()) { co.key("c.3.1").value( "c.3.1_" + c3i + "+" + ci + "+" + i); } if (rand.nextBoolean()) { co.key("c.3.2").value("c.3.2_" + c3i); } if (rand.nextBoolean()) { co.key("c.3.3").value("c.3.3_" + c3i); } if (rand.nextBoolean()) { JSONWriter c34o = co.key("c.3.4").object(); c34o.key("c.3.4.1").value("c.3.4.1_X"); c34o.key("c.3.4.2").value("c.3.4.1_Y"); c34o.endObject(); } c3o.endObject(); } c3a.endArray(); } co.endObject(); } c.endArray(); // List of primitive values. JSONWriter d = o.key("d").array(); for (int di = 1; di < rand.nextInt(10) + 1; di++) { d.value("d" + di); } d.endArray(); JSONWriter e = o.key("e").array(); for (int ei = 1; ei < rand.nextInt(10) + 1; ei++) { if (rand.nextBoolean()) { e.value("e" + ei + "+" + i); } else { e.object().key("e.1").value("e.1_" + ei).key("e.2") .value("e.2_" + ei).endObject(); } } e.endArray(); o.endObject(); } top.endArray(); } catch (JSONException e) { e.printStackTrace(); return null; } return x.toString(); } public static String getJsonForUnitTest1() { JSONStringer x = new JSONStringer(); Random rand = new Random(0); try { JSONWriter top = x.array(); for (int i = 1; i <= 2; i++) { JSONWriter o = top.object(); o.key("a").value("a" + i); o.key("b").value("b" + i); JSONWriter c = o.key("c").array(); for (int ci = 1; ci <= 10; ci++) { JSONWriter co = c.object(); co.key("c.1").value("c.1_" + ci); if (rand.nextBoolean()) { co.key("c.2").value("c.2_" + ci); } if (rand.nextBoolean()) { // } co.endObject(); } c.endArray(); // List of primitive values. JSONWriter d = o.key("d").array(); for (int di = 1; di < rand.nextInt(10) + 1; di++) { d.value("d" + di); } d.endArray(); JSONWriter e = o.key("e").array(); for (int ei = 1; ei < rand.nextInt(10) + 1; ei++) { if (rand.nextBoolean()) { e.value("e" + ei + "+" + i); } else { e.object().key("e.1").value("e.1_" + ei).key("e.2") .value("e.2_" + ei).endObject(); } } e.endArray(); o.endObject(); } top.endArray(); } catch (JSONException e) { e.printStackTrace(); return null; } return x.toString(); } public static String getJsonForUnitTest4() { JSONStringer x = new JSONStringer(); Random rand = new Random(0); try { JSONWriter top = x.array(); for (int i = 1; i <= 1; i++) { JSONWriter o = top.object(); JSONWriter c = o.key("c").array(); for (int ci = 1; ci <= 3; ci++) { JSONWriter co = c.object(); if (rand.nextBoolean()) { co.key("c.2").value("c.2_" + ci); } if (rand.nextBoolean()) { JSONWriter c3a = co.key("c.3").array(); for (int c3i = 1; c3i < 3; c3i++) { JSONWriter c3o = c3a.object(); if (rand.nextBoolean()) { co.key("c.3.1").value( "c.3.1_" + c3i + "+" + ci + "+" + i); } if (rand.nextBoolean()) { co.key("c.3.3").value("c.3.3_" + c3i); } if (rand.nextBoolean()) { JSONWriter c34o = co.key("c.3.4").object(); c34o.key("c.3.4.2").value("c.3.4.1_Y"); c34o.endObject(); } c3o.endObject(); } c3a.endArray(); } co.endObject(); } c.endArray(); o.endObject(); } top.endArray(); } catch (JSONException e) { e.printStackTrace(); return null; } return x.toString(); } public static String getJsonForUnitTest5() { JSONStringer x = new JSONStringer(); Random rand = new Random(0); try { JSONWriter top = x.array(); for (int i = 1; i <= 1; i++) { JSONWriter o = top.object(); JSONWriter c = o.key("c").array(); for (int ci = 1; ci <= 4; ci++) { JSONWriter co = c.object(); co.key("c.1").value("c.1_" + ci); if (rand.nextBoolean()) { // Need the call to rand to make the test come out // right. } if (rand.nextBoolean()) { JSONWriter c3a = co.key("c.3").array(); for (int c3i = 1; c3i < rand.nextInt(10) + 1; c3i++) { JSONWriter c3o = c3a.object(); if (rand.nextBoolean()) { co.key("c.3.1").value( "c.3.1_" + c3i + "+" + ci + "+" + i); } if (rand.nextBoolean()) { co.key("c.3.2").value("c.3.2_" + c3i); } if (rand.nextBoolean()) { co.key("c.3.3").value("c.3.3_" + c3i); } if (rand.nextBoolean()) { JSONWriter c34o = co.key("c.3.4").object(); c34o.key("c.3.4.1").value("c.3.4.1_X"); c34o.key("c.3.4.2").value("c.3.4.1_Y"); c34o.endObject(); } c3o.endObject(); } c3a.endArray(); } co.endObject(); } c.endArray(); JSONWriter e = o.key("e").array(); for (int ei = 1; ei < 6; ei++) { if (rand.nextBoolean()) { e.value("e" + ei + "+" + i); } else { e.object().key("e.1").value("e.1_" + ei).endObject(); } } e.endArray(); o.endObject(); } top.endArray(); } catch (JSONException e) { e.printStackTrace(); return null; } return x.toString(); } public static String getJsonForUnitTest6() { JSONStringer x = new JSONStringer(); Random rand = new Random(0); try { JSONWriter top = x.array(); for (int i = 1; i <= 1; i++) { JSONWriter o = top.object(); JSONWriter c = o.key("c").array(); for (int ci = 1; ci <= 1; ci++) { JSONWriter co = c.object(); // co.key("c.1").value("c.1_" + ci); if (rand.nextBoolean()) { // Need the call to rand to make the test come out // right. } if (rand.nextBoolean()) { JSONWriter c3a = co.key("c.3").array(); for (int c3i = 1; c3i <= 2; c3i++) { JSONWriter c3o = c3a.object(); if (rand.nextBoolean()) { co.key("c.3.1").value( "c.3.1_" + c3i + "+" + ci + "+" + i); } if (rand.nextBoolean()) { JSONWriter c34o = co.key("c.3.4").object(); c34o.key("c.3.4.1").value("c.3.4.1_X"); c34o.endObject(); } c3o.endObject(); } c3a.endArray(); } co.endObject(); } c.endArray(); JSONWriter e = o.key("e").array(); for (int ei = 1; ei <= 3; ei++) { e.object().key("e.1").value("e.1_" + ei).endObject(); } e.endArray(); o.endObject(); } top.endArray(); } catch (JSONException e) { e.printStackTrace(); return null; } return x.toString(); } public static Worksheet createUnitTest1(Workspace workspace) { return createWorksheetFromJsonString("unit-test-1", getJsonForUnitTest1(), workspace); } public static Worksheet createUnitTest2(Workspace workspace) { String s = "[{\"e\":[],\"c\":[{\"c.1\":\"c.1_1\"}]},{\"d\":[\"d1\"],\"e\":[\"e1+2\"],\"c\":[{\"c.1\":\"c.1_1\"}]}]"; return createWorksheetFromJsonString("unit-test-2", s, workspace); } public static Worksheet createUnitTest3(Workspace workspace) { String s = "[{\"d\":[\"d4\"],\"e\":[],\"c\":[{\"c.1\":\"c.1_1\"}]},{\"d\":[\"d1\"],\"e\":[\"e1+2\"],\"c\":[{\"c.1\":\"c.1_1\"}]}]"; return createWorksheetFromJsonString("unit-test-3", s, workspace); } public static Worksheet createUnitTest4(Workspace workspace) { return createWorksheetFromJsonString("unit-test-4", getJsonForUnitTest4(), workspace); } public static Worksheet createUnitTest5(Workspace workspace) { return createWorksheetFromJsonString("unit-test-5", getJsonForUnitTest5(), workspace); } public static Worksheet createUnitTest6(Workspace workspace) { return createWorksheetFromJsonString("unit-test-6", getJsonForUnitTest6(), workspace); } public static Worksheet createWorksheetFromJsonString(String name, String jsonString, Workspace workspace) { try { Object o = JSONUtil.createJson(jsonString); JSONUtil.writeJsonFile(o, name + ".json"); JsonImport ji = new JsonImport(o, name, workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJson(Workspace workspace, int numRows) { try { Object o = JSONUtil.createJson(getSampleJsonString(numRows)); JsonImport ji = new JsonImport(o, "Sample JSON", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createJsonWithFunnyCharacters(Workspace workspace) { try { JSONStringer x = new JSONStringer(); String html = "<ul><li>item 1</li></ul>"; x.object().key("double quote") .value("string with \"double quotes\"") .key("single quotes") .value("'starts has ' and \"ends\" with '").key("tabs") .value("there is a tab between \"x\" and \"y\": x\ty") .key("newlines").value("there sho\nuld be a newline") .key("HTML").value(html).key("URL").value("http://cnn.com") .endObject(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Funny Characters", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithEmptyNestedTable1( Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a_1").key("b").array() // .object().key("b.1").value("b.1_1").key("b.2") .value("b.2_1").endObject() // // .object().key("b.1").value("b.1_2").key("b.2") // .value("b.2_2").endObject() // .endArray().endObject(); topA.object().key("a").value("a_2").endObject(); topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Empty Nested Table 1", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithEmptyNestedTable2( Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a_1").key("b").array() // .object().key("b.1").value("b.1_1").key("b.2") .value("b.2_1").endObject() // .object().key("b.1").value("b.1_2").endObject() // .endArray().endObject(); topA.object().key("a").value("a_2").endObject(); topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Empty Nested Table 2", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithEmptyNestedTable3( Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a_1").key("b").array() // .object().key("b.1").value("b.1_1").key("b.2") .value("b.2_1").endObject() // .endArray().endObject(); topA.object().key("b").array().endArray().endObject(); topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Empty Nested Table 3", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithEmptyNestedTable4( Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a_1").key("b").array() // .object().key("b.1").value("b.1_1").key("b.2") .value("b.2_1").endObject() // .object().key("b.2").value("b.2_2").endObject() // .object().key("b.1").value("b.1_3").endObject() // .endArray().endObject(); topA.object().key("a").value("a_2").endObject(); topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Empty Nested Table 4", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithNestedTable1(Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a/1").key("b") .array() // .object().key("b.1").value("b.1/1,1").key("b.2") .value("b.2/1,1").endObject() // .object().key("b.1").value("b.1/1,2").key("b.2") .value("b.2/1,2").endObject() // .endArray().endObject(); topA.object().key("a").value("a/2").key("b") .array() // .object().key("b.1").value("b.1/2,1").key("b.2") .value("b.2/2,1").endObject() // .object().key("b.1").value("b.1/2,2").key("b.2") .value("b.2/2,2").endObject() // .endArray().endObject(); topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Nested Table 1", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSampleJsonWithNestedTable2( boolean hasTwoRows, Workspace workspace) { try { JSONStringer x = new JSONStringer(); JSONWriter topA = x.array(); topA.object().key("a").value("a/1").key("b").array() // .object()// .key("b.1").value("b.1/1,1")// .key("b.2").array()// .object()// .key("b.2.1").value("b.2.1/1,1,1")// .key("b.2.2").value("b.2.2/1,1,1")// .endObject()// .object()// .key("b.2.1").value("b.2.1/1,1,2")// .key("b.2.2").value("b.2.2/1,1,2")// .endObject()// .endArray()// .endObject()// // .object()// .key("b.1").value("b.1/1,2")// .key("b.2").array()// .object()// .key("b.2.1").value("b.2.1/1,2,1")// .key("b.2.2").value("b.2.2/1,2,1")// .endObject()// .endArray()// .endObject();// topA.endArray().endObject(); if (hasTwoRows) { topA.object().key("a").value("a/2").key("b").array() // .object()// .key("b.1").value("b.1/2,1")// .key("b.2").array()// .object()// .key("b.2.1").value("b.2.1/2,1,1")// .key("b.2.2").value("b.2.2/2,1,1")// .endObject()// .endArray()// .endObject()// // .object()// .key("b.1").value("b.1/2,2")// .key("b.2").array()// .object()// .key("b.2.1").value("b.2.1/2,2,1")// .key("b.2.2").value("b.2.2/2,2,1")// .endObject()// .endArray()// .endObject()// // ; topA.endArray().endObject(); } topA.endArray(); JsonImport ji = new JsonImport(JSONUtil.createJson(x.toString()), "Nested Table 2", workspace); Worksheet w = ji.generateWorksheet(); return w; } catch (JSONException e) { e.printStackTrace(); return null; } } public static Worksheet createSamplePathwaysWorksheet(Workspace workspace) { String json = "[" + "{" + "\"ACCESSION_ID\": \"PA2039\"," + "\"NAME\": \"Methotrexate Pathway\"," + "\"DRUG_ID\": \"PA452621\"," + "\"DRUG_NAME\": \"antineoplastic agents\"," + "\"GENE_ID\": \"PA267\"," + "\"GENE_NAME\": \"ABCB1\"," + "\"DISEASE_ID\": \"PA443434\"," + "\"DISEASE_NAME\": \"Arthritis, Rheumatoid\"" + "}," + "{" + "\"ACCESSION_ID\": \"PA2040\"," + "\"NAME\": \"Thiopurine Pathway\"," + "\"DRUG_ID\": \"PA452621\"," + "\"DRUG_NAME\": \"antineoplastic agents\"," + "\"GENE_ID\": \"PA397\"," + "\"GENE_NAME\": \"ABCC4\"," + "\"DISEASE_ID\": \"PA446116\"," + "\"DISEASE_NAME\": \"Inflammatory Bowel Diseases\"" + "}," + "{" + "\"ACCESSION_ID\": \"PA145011108\"," + "\"NAME\": \"Statin Pathway (PK)\"," + "\"DRUG_ID\": \"PA448500\"," + "\"DRUG_NAME\": \"atorvastatin\"," + "\"GENE_ID\": \"PA267\"," + "\"GENE_NAME\": \"ABCB1\"," + "\"DISEASE_ID\": \"PA443635\"," + "\"DISEASE_NAME\": \"Cardiovascular Diseases\"" + "}," + "{" + "\"ACCESSION_ID\": \"PA145011115\"," + "\"NAME\": \"Phenytoin Pathway (PK)\"," + "\"DRUG_ID\": \"PA450947\"," + "\"DRUG_NAME\": \"phenytoin\"," + "\"GENE_ID\": \"PA27093\"," + "\"GENE_NAME\": \"CYP1A2\"," + "\"DISEASE_ID\": \"PA444065\"," + "\"DISEASE_NAME\": \"Epilepsy\"" + "}," + "{" + "\"ACCESSION_ID\": \"PA164713560\"," + "\"NAME\": \"il22 soluble receptor signaling pathway - (BioCarta via Pathway Interaction Database)\"," + "\"DRUG_ID\": \"\"," + "\"DRUG_NAME\": \"\"," + "\"GENE_ID\": \"PA29779\"," + "\"GENE_NAME\": \"IL10RA\"," + "\"DISEASE_ID\": \"\"," + "\"DISEASE_NAME\": \"\"" + "}" + "];"; System.out.println(json); return createWorksheetFromJsonString("PathwaysPharmGKB", json, workspace); } public static Worksheet createSamplePathwaysWithNestingWorksheet( Workspace workspace) { String json = "[" + "{" + "\"ACCESSION_ID\": \"PA2039\"," + "\"NAME\": \"Methotrexate Pathway\"," + "\"DRUG\": {" + "\"DRUG_ID\": \"PA452621\"," + "\"DRUG_NAME\": [" + "\"antineoplastic agents\"," + "\"TEST1\"," + "\"TEST2\"" + "]" + "}," + "\"GENE_ID\": \"PA267\"," + "\"GENE_NAME\": \"ABCB1\"," + "\"DISEASE_ID\": \"PA443434\"," + "\"DISEASE_NAME\": \"Arthritis, Rheumatoid\"" + "}," + /* * "{" + "\"ACCESSION_ID\": \"PA2040\"," + * "\"NAME\": \"Thiopurine Pathway\"," + "\"DRUG\": {"+ * "\"DRUG_ID\": \"PA452621\","+ "\"DRUG_NAME\": ["+ * "\"antineoplastic agents\","+ "\"TEST3\","+ "\"TEST4\""+ "]"+ * "},"+ "\"GENE_ID\": \"PA397\"," + "\"GENE_NAME\": \"ABCC4\"," * + "\"DISEASE_ID\": \"PA446116\"," + * "\"DISEASE_NAME\": \"Inflammatory Bowel Diseases\"" + "}," + * "{" + "\"ACCESSION_ID\": \"PA145011108\"," + * "\"NAME\": \"Statin Pathway (PK)\"," + "\"DRUG\": {"+ * "\"DRUG_ID\": \"PA448500\","+ "\"DRUG_NAME\": ["+ * "\"atorvastatin\","+ "\"TEST5\","+ "\"TEST6\""+ "]"+ "},"+ * "\"GENE_ID\": \"PA267\"," + "\"GENE_NAME\": \"ABCB1\"," + * "\"DISEASE_ID\": \"PA443635\"," + * "\"DISEASE_NAME\": \"Cardiovascular Diseases\"" + "}," + "{" * + "\"ACCESSION_ID\": \"PA145011115\"," + * "\"NAME\": \"Phenytoin Pathway (PK)\"," + "\"DRUG\": {"+ * "\"DRUG_ID\": \"PA450947\","+ "\"DRUG_NAME\": ["+ * "\"phenytoin\","+ "\"TEST1\","+ "\"TEST2\""+ "]"+ "},"+ * "\"GENE_ID\": \"PA27093\"," + "\"GENE_NAME\": \"CYP1A2\"," + * "\"DISEASE_ID\": \"PA444065\"," + * "\"DISEASE_NAME\": \"Epilepsy\"" + "}," + */ "{" + "\"ACCESSION_ID\": \"PA164713560\"," + "\"NAME\": \"il22 soluble receptor signaling pathway - (BioCarta via Pathway Interaction Database)\"," + "\"DRUG\": {" + "\"DRUG_ID\": \"\"," + "\"DRUG_NAME\": [" + "\"\"," + "]" + "}," + "\"GENE_ID\": \"PA29779\"," + "\"GENE_NAME\": \"IL10RA\"," + "\"DISEASE_ID\": \"\"," + "\"DISEASE_NAME\": \"\"" + "}" + "];"; System.out.println(json); return createWorksheetFromJsonString("PathwaysPharmGKBNesting", json, workspace); } }