Fixing bug with zero individual counts for class groups. NIHVIVO-1893

This commit is contained in:
bdc34 2011-01-25 17:14:20 +00:00
parent 4262389458
commit 9ceb990c9d

View file

@ -49,7 +49,9 @@ public class VClassDaoSDB extends VClassDaoJena {
@Deprecated @Deprecated
public void addVClassesToGroup(VClassGroup group, boolean includeUninstantiatedClasses, boolean getIndividualCount) { public void addVClassesToGroup(VClassGroup group, boolean includeUninstantiatedClasses, boolean getIndividualCount) {
group.setIndividualCount( getClassGroupInstanceCount(group)); if (getIndividualCount) {
group.setIndividualCount( getClassGroupInstanceCount(group));
}
getOntModel().enterCriticalSection(Lock.READ); getOntModel().enterCriticalSection(Lock.READ);
try { try {
@ -136,13 +138,12 @@ public class VClassDaoSDB extends VClassDaoJena {
// } // }
int getClassGroupInstanceCount(VClassGroup vcg){ int getClassGroupInstanceCount(VClassGroup vcg){
int count = 0; int count = 0;
String[] graphVars = { "?g1", "?g2" };
try { try {
String queryText = String queryText =
"SELECT COUNT( DISTINCT ?instance ) WHERE { \n" + "SELECT COUNT( DISTINCT ?instance ) WHERE { \n" +
" GRAPH <urn:x-arq:UnionGraph> { \n" + " GRAPH <urn:x-arq:UnionGraph> { \n" +
" ?class <"+VitroVocabulary.IN_CLASSGROUP+"> ?classGroupUri .\n" + " ?class <"+VitroVocabulary.IN_CLASSGROUP+"> <"+vcg.getURI() +"> .\n" +
" ?instance a ?class . \n" + " ?instance a ?class . \n" +
" } \n" + " } \n" +
"} \n" ; "} \n" ;
@ -150,11 +151,9 @@ public class VClassDaoSDB extends VClassDaoJena {
Query countQuery = QueryFactory.create(queryText, Syntax.syntaxARQ); Query countQuery = QueryFactory.create(queryText, Syntax.syntaxARQ);
DatasetWrapper w = getDatasetWrapper(); DatasetWrapper w = getDatasetWrapper();
Dataset dataset = w.getDataset(); Dataset dataset = w.getDataset();
QuerySolutionMap initialBinding = new QuerySolutionMap();
initialBinding.add("classGroupUri", ResourceFactory.createResource( vcg.getURI()));
dataset.getLock().enterCriticalSection(Lock.READ); dataset.getLock().enterCriticalSection(Lock.READ);
try { try {
QueryExecution qe = QueryExecutionFactory.create(countQuery, dataset, initialBinding); QueryExecution qe = QueryExecutionFactory.create(countQuery, dataset);
ResultSet rs = qe.execSelect(); ResultSet rs = qe.execSelect();
count = Integer.parseInt(((Literal) rs.nextSolution().get(".1")).getLexicalForm()); count = Integer.parseInt(((Literal) rs.nextSolution().get(".1")).getLexicalForm());
} finally { } finally {