public static void main(String[] argv) {
   TableSchema table = MedSavantDatabase.GeneSetTableSchema;
   SelectQuery query =
       MedSavantDatabase.GeneSetTableSchema.where(GENOME, "hg19", TYPE, "RefSeq")
           .groupBy(CHROM)
           .groupBy(NAME)
           .select(NAME, CHROM, "MIN(start)", "MAX(end)", "MIN(codingStart)", "MAX(codingEnd)");
   BinaryCondition dumbChrsCondition1 =
       BinaryConditionMS.notlike(
           table.getDBColumn(MedSavantDatabase.GeneSetColumns.CHROM), "%\\_%");
   query.addCondition(dumbChrsCondition1);
   BinaryCondition dumbChrsCondition2 =
       BinaryConditionMS.notlike(
           table.getDBColumn(MedSavantDatabase.GeneSetColumns.CHROM), "%\\-%");
   query.addCondition(dumbChrsCondition2);
   System.out.println(query.toString());
 }
  @Override
  public Gene[] getGenes(String sessID, GeneSet geneSet)
      throws SQLException, SessionExpiredException {

    TableSchema table = MedSavantDatabase.GeneSetTableSchema;
    SelectQuery query =
        MedSavantDatabase.GeneSetTableSchema.where(
                GENOME, geneSet.getReference(), TYPE, geneSet.getType())
            .groupBy(CHROM)
            .groupBy(NAME)
            .select(NAME, CHROM, "MIN(start)", "MAX(end)", "MIN(codingStart)", "MAX(codingEnd)");
    BinaryCondition dumbChrsCondition =
        BinaryConditionMS.notlike(
            table.getDBColumn(MedSavantDatabase.GeneSetColumns.CHROM), "%\\_%");
    query.addCondition(dumbChrsCondition);
    BinaryCondition dumbNameCondition =
        BinaryConditionMS.notlike(table.getDBColumn(MedSavantDatabase.GeneSetColumns.NAME), "%-%");
    query.addCondition(dumbNameCondition);

    System.out.println(query.toString());

    LOG.info(query);
    ResultSet rs = ConnectionController.executeQuery(sessID, query.toString());

    Gene[] result = new Gene[geneSet.getSize()];
    int i = 0;
    while (rs.next()) {
      Gene g =
          new Gene(
              rs.getString(1),
              rs.getString(2),
              rs.getInt(3),
              rs.getInt(4),
              rs.getInt(5),
              rs.getInt(6),
              null);
      result[i++] = g;
    }
    if (i != result.length) {
      LOG.info("There were " + result.length + " genes, but only " + i + " were loaded.");
    }
    result = Arrays.copyOf(result, i);

    return result;
  }
  public void removeAnnotationLogEntry(String sid, int updateId)
      throws SQLException, SessionExpiredException {

    TableSchema table = MedSavantDatabase.VariantpendingupdateTableSchema;
    DeleteQuery query = new DeleteQuery(table.getTable());
    query.addCondition(
        BinaryConditionMS.equalTo(
            table.getDBColumn(VariantPendingUpdateTableSchema.COLUMNNAME_OF_UPLOAD_ID), updateId));

    ConnectionController.executeUpdate(sid, query.toString());
  }
  public void setAnnotationLogStatus(String sid, int updateId, Status status)
      throws SQLException, SessionExpiredException {

    TableSchema table = MedSavantDatabase.VariantpendingupdateTableSchema;
    UpdateQuery query = new UpdateQuery(table.getTable());
    query.addSetClause(
        table.getDBColumn(VariantPendingUpdateTableSchema.COLUMNNAME_OF_STATUS),
        AnnotationLog.statusToInt(status));
    query.addCondition(
        BinaryConditionMS.equalTo(
            table.getDBColumn(VariantPendingUpdateTableSchema.COLUMNNAME_OF_UPLOAD_ID), updateId));

    ConnectionController.executeUpdate(sid, query.toString());
  }