public int insertEntity(
      String entitySet,
      String entityPK,
      HashMap<String, ByteIterator> values,
      boolean insertImage) {
    // TODO Auto-generated method stub
    /* Insert into table */
    try {
      long mutator = client.mutator_open(namespace, entitySet, 0, 0);
      List<Cell> cells = new ArrayList<Cell>();
      Key key = null;
      Cell cell = null;

      for (HashMap.Entry<String, ByteIterator> entry : values.entrySet()) {
        key = new Key(entityPK, entry.getKey(), null, KeyFlag.INSERT);
        cell = new Cell(key);
        cell.setValue(entry.getValue().toArray());
        cells.add(cell);
      }

      client.mutator_set_cells(mutator, cells);
      client.mutator_flush(mutator);
      cells.clear();
      client.mutator_close(mutator);
    } catch (ClientException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return -1;
    } catch (TException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return -1;
    }
    return 0;
  }
  public int CreateFriendship(int friendid1, int friendid2) {
    // TODO Auto-generated method stub
    long mutator;
    try {
      mutator = client.mutator_open(namespace, ConfirmedFriendsTable, 0, 0);

      List<Cell> cells = new ArrayList<Cell>();
      Key key = null;
      Cell cell = null;

      key = new Key(friendid1 + "", ConfirmedFriendsTableCF[1], null, KeyFlag.INSERT);
      cell = new Cell(key);
      cell.setValue((friendid2 + "").getBytes("UTF-8"));
      cells.add(cell);

      key = new Key(friendid2 + "", ConfirmedFriendsTableCF[1], null, KeyFlag.INSERT);
      cell = new Cell(key);
      cell.setValue((friendid1 + "").getBytes("UTF-8"));
      cells.add(cell);

      client.mutator_set_cells(mutator, cells);
      client.mutator_flush(mutator);
      cells.clear();

    } catch (TException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return -1;
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return -1;
    }
    return 0;
  }
  /**
   * Method to execute a Delete mutation operation on Hypertable. A delete is implemented by
   * Hypertable as a put that inserts tombstone values.
   *
   * @param tableName
   * @param delete
   * @throws ClientException
   * @throws TException
   */
  public void delete(String tableName, Delete delete) throws ClientException, TException {
    long mutator = client.mutator_open(ns, tableName, 0, 0);

    for (int i = 0; i < delete._getCells().size(); i++) {
      Cell c = delete._getCells().get(i);
      if (c.getKey().isSetRevision()) {
        int revs = (int) c.getKey().getRevision();
        System.out.println(revs);
        String cfam = c.getKey().getColumn_family();
        String cqual = c.getKey().getColumn_qualifier();
        c.getKey().setRevisionIsSet(false);
        List<Result> res =
            this.scan(
                tableName, new Scan(delete.getRowkey()).addColumn(cfam, cqual).setRevisions(revs));
        if (!res.isEmpty()) {
          System.out.println(res.get(0).getValueRevisions(cfam, cqual));
          for (Long ts : res.get(0).getTimestampRevisions(cfam, cqual))
            delete.deleteColumn(cfam, cqual, ts);
        }
        delete._getCells().remove(i--);
      }
    }

    try {
      if (delete._getCells().size() > 1) client.mutator_set_cells(mutator, delete._getCells());
      else if (delete._getCells().size() == 1)
        client.mutator_set_cell(mutator, delete._getCells().get(0));
    } finally {
      client.mutator_close(mutator);
    }
  }
  /**
   * Method to execute a Scan operation on Hypertable.
   *
   * @param tablename
   * @param scan
   * @return
   * @throws ClientException
   * @throws TException
   */
  public List<Result> scan(String tablename, Scan scan) throws ClientException, TException {
    long scanner = client.scanner_open(ns, tablename, scan._getScanSpec());
    HashMap<String, List<Cell>> buckets = new HashMap<String, List<Cell>>();
    try {
      List<Cell> cells = client.scanner_get_cells(scanner);

      while (cells.size() > 0) {
        for (Cell cell : cells) {
          String row = cell.getKey().getRow();
          if (buckets.get(row) == null) buckets.put(row, new LinkedList<Cell>());
          buckets.get(row).add(cell);
        }
        cells = client.scanner_get_cells(scanner);
      }
    } finally {
      client.scanner_close(scanner);
    }
    List<Result> reslist = new LinkedList<Result>();
    for (String row : buckets.keySet()) {
      reslist.add(new Result(row, buckets.get(row)));
    }
    return reslist;
  }