Package edu.isi.karma.rep

Examples of edu.isi.karma.rep.HTable


    Object para = JSONUtil.createJson(this.getInputParameterJson());
    List<String> hnodeIDs = new ArrayList<String>();
    List<HNode> keyhnodes = new ArrayList<HNode>();
    List<HNode> valuehnodes = new ArrayList<HNode>();
    JSONArray checked = (JSONArray) JSONUtil.createJson(CommandInputJSONUtil.getStringValue("values", (JSONArray)para));
    HTable ht;
    if (hNodeId.compareTo("") != 0)
      ht = factory.getHTable(factory.getHNode(hNodeId).getHTableId());
    else
      ht = oldws.getHeaders();
    for (int i = 0; i < checked.length(); i++) {
      JSONObject t = (checked.getJSONObject(i));
      hnodeIDs.add((String) t.get("value"));
      keyhnodes.add(ht.getHNode((String) t.get("value")));
    }

    for (HNode oldhnode : ht.getHNodes()) {
      boolean found = false;
      for (HNode keynode : keyhnodes) {
        if (keynode.getId().compareTo(oldhnode.getId()) == 0)
          found = true;
      }
View Full Code Here


      c.add(new WorksheetDeleteUpdate(newWorksheetId));
    }
    if (this.newHNodeId != null) {
      Worksheet worksheet = workspace.getWorksheet(worksheetId);
      HNode ndid = workspace.getFactory().getHNode(newHNodeId);
      HTable currentTable = workspace.getFactory().getHTable(ndid.getHTableId());
      ndid.removeNestedTable();
      //remove the new column
      currentTable.removeHNode(newHNodeId, worksheet);
      c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet)));
      c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace));
    }
    return c;
  }
View Full Code Here

  private Worksheet groupByTopLevel(Worksheet oldws, Workspace workspace, List<String> hnodeIDs, List<HNode> keyhnodes, List<HNode> valuehnodes, RepFactory factory) {
    SuperSelection selection = getSuperSelection(oldws);
    Worksheet newws = factory.createWorksheet("GroupBy: " + oldws.getTitle(), workspace, oldws.getEncoding());
    newws.getMetadataContainer().getWorksheetProperties().setPropertyValue(Property.sourceType, oldws.getMetadataContainer().getWorksheetProperties().getPropertyValue(Property.sourceType));
    HTable newht =  newws.getHeaders();
    ArrayList<Row> rows = oldws.getDataTable().getRows(0, oldws.getDataTable().getNumRows(), selection);
    HTable oldht =  oldws.getHeaders();
    Map<String, ArrayList<String>> hash = new TreeMap<String, ArrayList<String>>();
    for (Row row : rows) {
      String hashValue = HashValueManager.getHashValue(row, hnodeIDs);
      ArrayList<String> ids = hash.get(hashValue);
      if (ids == null)
        ids = new ArrayList<String>();
      ids.add(row.getId());
      hash.put(hashValue, ids);
      //System.out.println("Hash: " + HashValueManager.getHashValue(row, hnodeIDs));
   
    //HTable newKeyTable = newht.getHNodeFromColumnName("Keys").addNestedTable("Table for keys", newws, factory);
    //newValueTable.addHNode("Values", newws, factory);
    //HTable newValueNestedTable = newValueTable.getHNodeFromColumnName("Values").addNestedTable("Table for nested values", newws, factory);
    CloneTableUtils.cloneHTable(oldht, newht, newws, factory, keyhnodes, selection);
    newht.addHNode("Values", HNodeType.Transformation, newws, factory);
    HTable newValueTable = newht.getHNodeFromColumnName("Values").addNestedTable("Table for values", newws, factory);
    CloneTableUtils.cloneHTable(oldht, newValueTable, newws, factory, valuehnodes, selection);
    for (String key : hash.keySet()) {
      //System.out.println("key: " + hash.get(key));
      ArrayList<String> r = hash.get(key);
      Row lastRow = CloneTableUtils.cloneDataTable(factory.getRow(r.get(0)), newws.getDataTable(), oldws.getHeaders(), newht, keyhnodes, factory, selection);
View Full Code Here

    return newws;
  }

  private void groupByNestedTable(Worksheet oldws, Workspace workspace, HTable ht, List<String> hnodeIDs, List<HNode> keyhnodes, List<HNode> valuehnodes, RepFactory factory) {
    SuperSelection selection = getSuperSelection(oldws);
    HTable parentHT = ht.getParentHNode().getHTable(factory);
    List<Table> parentTables = new ArrayList<Table>();
    CloneTableUtils.getDatatable(oldws.getDataTable(), parentHT,parentTables, selection);
    ArrayList<Row> parentRows = new ArrayList<Row>();
    for (Table tmp : parentTables) {
      for (Row row : tmp.getRows(0, tmp.getNumRows(), selection)) {
        parentRows.add(row);
      }
    }
    HNode newNode = parentHT.addHNode(parentHT.getNewColumnName("GroupBy"), HNodeType.Transformation, oldws, factory);
    newHNodeId = newNode.getId();
    outputColumns.add(newNode.getId());
    HTable newht = newNode.addNestedTable(newNode.getColumnName(), oldws, factory);
    for (Entry<String, String> entry : CloneTableUtils.cloneHTable(ht, newht, oldws, factory, keyhnodes, selection).entrySet()) {
      outputColumns.add(entry.getValue());
    }
    outputColumns.add(newht.addHNode("Values", HNodeType.Transformation, oldws, factory).getId());
    HTable newValueTable = newht.getHNodeFromColumnName("Values").addNestedTable("Table for values", oldws, factory);
    for (Entry<String, String> entry : CloneTableUtils.cloneHTable(ht, newValueTable, oldws, factory, valuehnodes, selection).entrySet()) {
      outputColumns.add(entry.getValue());
    }
    for (Row parentRow : parentRows) {
      Table t = null;
View Full Code Here

  }

  @Override
  public UpdateContainer doIt(Workspace workspace) throws CommandException {
    Worksheet worksheet = workspace.getWorksheet(worksheetId);
    HTable ht = worksheet.getHeaders();   
    if (hNodeId.compareTo("") != 0) {
      HNode hNode = workspace.getFactory().getHNode(hNodeId);
      HTable parentHT = workspace.getFactory().getHTable(hNode.getHTableId());
      if (commandName.compareTo("GroupBy") == 0 || commandName.compareTo("Fold") == 0 || commandName.compareTo("Glue") == 0)
        ht = hNode.getNestedTable();
      else
        ht = parentHT;
    }
View Full Code Here

    inputColumns.clear();
    outputColumns.clear();
    Worksheet oldws = workspace.getWorksheet(
        worksheetId);
    Worksheet newws = null;
    HTable ht = factory.getHTable(factory.getHNode(keyhNodeId).getHTableId());
    if (ht == oldws.getHeaders()) {
      newws = unfoldTopLevel(oldws, keyhNodeId, valuehNodeId, workspace, factory);
      this.newWorksheetId = newws.getId();
    }
    else {
View Full Code Here

      c.add(new WorksheetDeleteUpdate(newWorksheetId));
    }
    if (this.newHNodeId != null) {
      Worksheet worksheet = workspace.getWorksheet(worksheetId);
      HNode ndid = workspace.getFactory().getHNode(newHNodeId);
      HTable currentTable = workspace.getFactory().getHTable(ndid.getHTableId());
      ndid.removeNestedTable();
      //remove the new column
      currentTable.removeHNode(newHNodeId, worksheet);
      c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet)));
      c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace));
    }
    return c;
  }
View Full Code Here

  }

  private void unfoldNestedLevel(Worksheet oldws, HTable ht, String keyHNodeid, String valueHNodeid, RepFactory factory) {
    ArrayList<HNode> topHNodes = new ArrayList<HNode>(ht.getHNodes());
    SuperSelection selection = getSuperSelection(oldws);
    HTable parentHT = ht.getParentHNode().getHTable(factory);
    List<Table> parentTables = new ArrayList<Table>();
    CloneTableUtils.getDatatable(oldws.getDataTable(), parentHT,parentTables, selection);
    ArrayList<Row> parentRows = new ArrayList<Row>();
    for (Table tmp : parentTables) {
      for (Row row : tmp.getRows(0, tmp.getNumRows(), selection)) {
        parentRows.add(row);
      }
    }
    //ArrayList<Row> parentRows = parentTable.getRows(0, parentTable.getNumRows());
    HNode newNode = parentHT.addHNode("Unfold: " + ht.getHNode(keyHNodeid).getColumnName(), HNodeType.Transformation, oldws, factory);
    outputColumns.add(newNode.getId());
    this.newHNodeId = newNode.getId();
    HTable newHT = newNode.addNestedTable("Unfold: " + ht.getHNode(keyHNodeid).getColumnName(), oldws, factory);
    HNode key = ht.getHNode(keyHNodeid);
    HNode value = ht.getHNode(valueHNodeid);
    List<HNode> hnodes = new ArrayList<HNode>();
    List<String> hnodeIds = new ArrayList<String>();
    if (!notOtherColumn) {
      for (HNode h : topHNodes) {
        if (h.getId().compareTo(value.getId()) != 0 && h.getId().compareTo(key.getId()) != 0) {
          hnodes.add(h);
          hnodeIds.add(h.getId());
        }
      }
    }
    for (Entry<String, String> entry : CloneTableUtils.cloneHTable(ht, newHT, oldws, factory, hnodes, selection).entrySet()) {
      outputColumns.add(entry.getValue());
    }
    List<Row> resultRows = new ArrayList<Row>();
    for (Row parentRow: parentRows) {
      Table t = null;
      for (Node node : parentRow.getNodes()) {
        if (node.hasNestedTable() && node.getNestedTable().getHTableId().compareTo(ht.getId()) == 0) {
          t = node.getNestedTable();
          break;
       
      }
      Map<String, String> keyMapping = new HashMap<String, String>();
      Map<String, String> HNodeidMapping = new HashMap<String, String>();
      ArrayList<Row> rows = t.getRows(0, t.getNumRows(), selection);
      for (Row row : rows) {
        Node n = row.getNode(key.getId());
        keyMapping.put(HashValueManager.getHashValue(oldws, n.getId(), factory), n.getValue().asString());
      }
      for (String mapkey : keyMapping.keySet()) {
        HNode hn = newHT.getHNodeFromColumnName(keyMapping.get(mapkey).toLowerCase().replace('/', '_'));
        if (hn == null) {
          HNode n = newHT.addHNode(keyMapping.get(mapkey).toLowerCase().replace('/', '_'), HNodeType.Transformation, oldws, factory);
          outputColumns.add(n.getId());
          HTable htt = n.addNestedTable("values", oldws, factory);
          outputColumns.add(htt.addHNode("Values", HNodeType.Transformation, oldws, factory).getId());
          HNodeidMapping.put(keyMapping.get(mapkey), n.getId());
        }
        else
          HNodeidMapping.put(keyMapping.get(mapkey), hn.getId());
      }
View Full Code Here

      Node n = row.getNode(key.getId());
      keyMapping.put(HashValueManager.getHashValue(oldws, n.getId(), factory), n.getValue().asString());
    }
    for (String mapkey : keyMapping.keySet()) {
      HNode n = newws.getHeaders().addHNode(keyMapping.get(mapkey), HNodeType.Transformation, newws, factory);
      HTable ht = n.addNestedTable("values", newws, factory);
      ht.addHNode("Values", HNodeType.Transformation, newws, factory);
      HNodeidMapping.put(keyMapping.get(mapkey), n.getId());
    }

    Map<String, ArrayList<String>> hash = new TreeMap<String, ArrayList<String>>();
    for (Row row : rows) {
View Full Code Here

  @Override
  public UpdateContainer undoIt(Workspace workspace) {
    UpdateContainer c = new UpdateContainer();
    Worksheet worksheet = workspace.getWorksheet(worksheetId);

    HTable currentTable = workspace.getFactory().getHTable(hTableId);
    HNode ndid = workspace.getFactory().getHNode(newHNodeId);
    ndid.removeNestedTable();
    //remove the new column
    currentTable.removeHNode(newHNodeId, worksheet);
    c.append(WorksheetUpdateFactory.createRegenerateWorksheetUpdates(worksheetId, getSuperSelection(worksheet)));
    c.append(computeAlignmentAndSemanticTypesAndCreateUpdates(workspace));
    return c;
  }
View Full Code Here

TOP

Related Classes of edu.isi.karma.rep.HTable

Copyright © 2018 www.massapicom. 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.