Package edu.isi.karma.webserver

Source Code of edu.isi.karma.webserver.SampleDataFactory

/*******************************************************************************
* 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.HNode.HNodeType;
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, "UTF-8");
    String ss = w.addHNode("Social Security", HNodeType.Regular, f).getId();
    String personContainer = w.addHNode("Person", HNodeType.Regular, f).getId();
    String addressContainer = w.addHNode("Address", HNodeType.Regular, f).getId();
    String relativesContainer = w.addHNode("Relatives", HNodeType.Regular, f).getId();

    HTable personTable = w.getHeaders().getHNode(personContainer)
        .addNestedTable("Person Table", w, f);
    String firstName = personTable.addHNode("First Name", HNodeType.Regular, w, f).getId();
    String lastName = personTable.addHNode("Last Name", HNodeType.Regular, w, f).getId();

    HTable addressTable = w.getHeaders().getHNode(addressContainer)
        .addNestedTable("Address Table", w, f);
    String what = addressTable.addHNode("What", HNodeType.Regular, w, f).getId();
    String address = addressTable.addHNode("Address", HNodeType.Regular, w, f).getId();

    HTable relativesTable = w.getHeaders().getHNode(relativesContainer)
        .addNestedTable("Relatives Person Table", w, f);
    String relFirstName = relativesTable.addHNode("Relatives First Name", HNodeType.Regular,
        w, f).getId();
    String relLastName = relativesTable.addHNode("Relatives Last Name", HNodeType.Regular, 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, "UTF-8");
    String ss = w.addHNode("Social Security", HNodeType.Regular, f).getId();
    String personContainer = w.addHNode("Person", HNodeType.Regular, f).getId();
    String addressContainer = w.addHNode("Address", HNodeType.Regular, f).getId();
    String relativesContainer = w.addHNode("Relatives", HNodeType.Regular, f).getId();

    HTable personTable = w.getHeaders().getHNode(personContainer)
        .addNestedTable("Person Table", w, f);
    String firstName = personTable.addHNode("First Name", HNodeType.Regular, w, f).getId();
    String lastName = personTable.addHNode("Last Name", HNodeType.Regular, w, f).getId();

    HTable addressTable = w.getHeaders().getHNode(addressContainer)
        .addNestedTable("Address Table", w, f);
    String what = addressTable.addHNode("What", HNodeType.Regular, w, f).getId();
    String address = addressTable.addHNode("Address", HNodeType.Regular, w, f).getId();

    HTable relativesTable = w.getHeaders().getHNode(relativesContainer)
        .addNestedTable("Relatives Person Table", w, f);
    String relFirstName = relativesTable.addHNode("Relatives First Name", HNodeType.Regular,
        w, f).getId();
    String relLastName = relativesTable.addHNode("Relatives Last Name", HNodeType.Regular, 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, "UTF-8");

    for (int c = 1; c <= numColumns; c++) {
      w.getHeaders().addHNode("Column " + c, HNodeType.Regular, 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);
      File f = new File(fileName);
      JsonImport ji = new JsonImport(o, f.getName(), workspace, "UTF-8", -1);
      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, "UTF-8");
      // Converting the XML to JSON
      JSONObject json = XML.toJSONObject(fileContents);
      JsonImport ji = new JsonImport(json, fileName, workspace, "UTF-8", -1);
      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, "UTF-8", -1);
      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, "UTF-8", -1);
      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(x.toString(),
          "Funny Characters", workspace, "UTF-8", -1);
      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(x.toString(),
          "Empty Nested Table 1", workspace, "UTF-8", -1);
      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(x.toString(),
          "Empty Nested Table 2", workspace, "UTF-8", -1);
      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(x.toString(),
          "Empty Nested Table 3", workspace, "UTF-8", -1);
      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(x.toString(),
          "Empty Nested Table 4", workspace, "UTF-8", -1);
      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(x.toString(),
          "Nested Table 1", workspace, "UTF-8", -1);
      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(x.toString(),
          "Nested Table 2", workspace, "UTF-8", -1);
      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\": \"\"" + "}"
        + "];";
    logger.debug(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\": \"\"" + "}" + "];";
    logger.debug(json);
    return createWorksheetFromJsonString("PathwaysPharmGKBNesting", json,
        workspace);
  }

}
TOP

Related Classes of edu.isi.karma.webserver.SampleDataFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.