package org.ensembl.healthcheck.testcase.funcgen; import java.util.Iterator; import java.util.List; import org.ensembl.healthcheck.DatabaseRegistryEntry; import org.ensembl.healthcheck.ReportManager; import org.ensembl.healthcheck.Team; import org.ensembl.healthcheck.testcase.AbstractTemplatedTestCase; import org.ensembl.healthcheck.util.SqlTemplate; public class StableIDsUnique extends AbstractTemplatedTestCase { final int max_number_problems_reported = 10; public StableIDsUnique() { setTeamResponsible(Team.FUNCGEN); } @Override protected boolean runTest(DatabaseRegistryEntry dbre) { SqlTemplate s = getTemplate(dbre); List<String> nonUniqueStableIds = s.queryForDefaultObjectList( "select stable_id from regulatory_feature group by regulatory_build_id, stable_id having count(regulatory_feature_id)!=1", String.class ); if (nonUniqueStableIds.size()==0) { return true; } Iterator<String> i = nonUniqueStableIds.iterator(); int number_problems_reported = 0; while (i.hasNext() && number_problems_reported < max_number_problems_reported) { ReportManager.problem(this, dbre.getConnection(), "The stable id " + i.next() + " is not unique." ); number_problems_reported++; } return false; } }