private boolean checkCodingCountAttributes(final DatabaseRegistryEntry dbre) {
    boolean result = true;

    Connection con = dbre.getConnection();
    String code = (dbre.getType() == DatabaseType.SANGER_VEGA) ? "KnwnPCCount" : "coding_cnt";

    SqlTemplate t = DBUtils.getSqlTemplate(dbre);
    String sql =
        "select distinct g.seq_region_id from gene g where g.biotype = ? and g.seq_region_id not in (select distinct g.seq_region_id from gene g, seq_region_attrib sa, attrib_type at where g.seq_region_id = sa.seq_region_id and sa.attrib_type_id = at.attrib_type_id and at.code in (?,?))";
    List<String> toplevel =
        t.queryForDefaultObjectList(sql, String.class, "protein_coding", "LRG", "non_ref");

    sql =
        "select distinct g.seq_region_id from gene g, seq_region_attrib sa, attrib_type at where g.seq_region_id = sa.seq_region_id and sa.attrib_type_id = at.attrib_type_id and code =? ";
    List<String> known = t.queryForDefaultObjectList(sql, String.class, code);

    Set<String> missing = new HashSet<String>(toplevel);
    missing.removeAll(known);

    if (missing.isEmpty()) {
      ReportManager.correct(
          this,
          con,
          "All seq_regions with protein_coding genes have a coding_cnt attribute associated with them");
    } else {
      String msg =
          String.format(
              "%s regions with protein_coding genes do not have the coding_cnt attribute associated",
              missing.size());
      ReportManager.problem(this, con, msg);
      result = false;
    }

    return result;
  }
  protected int fetchToplevelSeqRegionCount() {

    List<Integer> numSeqRegionsList =
        sqlTemplateTestDb.queryForDefaultObjectList(
            "select count(*) from seq_region join seq_region_attrib using (seq_region_id) join attrib_type using (attrib_type_id) where code='toplevel'",
            Integer.class);

    assertLengthIsOne(numSeqRegionsList);
    Integer numSeqRegions = numSeqRegionsList.get(0);
    return numSeqRegions;
  }
  @Override
  protected boolean runTest(DatabaseRegistryEntry dbre) {

    init(dbre);

    List<Integer> allSpeciesIds =
        sqlTemplateTestDb.queryForDefaultObjectList(
            "select distinct species_id from meta where species_id is not null", Integer.class);

    if (allSpeciesIds.size() == 0) {
      ReportManager.problem(this, testDbConn, "No species configured!");
    }

    boolean allSpeciesPassed = true;

    for (int speciesId : allSpeciesIds) {
      allSpeciesPassed &= runTestForSpecies(dbre, speciesId);
    }

    return allSpeciesPassed;
  }
  /**
   * @param sqlTemplateTestDb
   * @param metaKey
   * @return
   */
  protected String fetchSingleMetaValueFor(
      final SqlTemplate sqlTemplateTestDb, int speciesId, String metaKey) {

    String sql =
        "select meta_value from meta where meta.meta_key = '"
            + metaKey
            + "' and species_id="
            + speciesId;

    List<String> metaValueList = sqlTemplateTestDb.queryForDefaultObjectList(sql, String.class);

    if (metaValueList.size() > 1) {
      throw new RuntimeException(
          "Got more than one meta_value for metaKey " + metaKey + ". Expected only one!\n" + sql);
    }
    if (metaValueList.size() == 0) {
      throw new RuntimeException("Metakey " + metaKey + " is missing in the meta table!\n" + sql);
    }

    String metaValue = metaValueList.get(0);

    return metaValue;
  }