NIHVIVO-3029 fixes deletion of class groups and property groups, and fixes excessive locking during VClassGroupCache rebuild
This commit is contained in:
parent
e4233c003b
commit
1713933e93
2 changed files with 38 additions and 37 deletions
|
@ -19,6 +19,7 @@ import com.hp.hpl.jena.ontology.OntModelSpec;
|
||||||
import com.hp.hpl.jena.rdf.model.Literal;
|
import com.hp.hpl.jena.rdf.model.Literal;
|
||||||
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||||
import com.hp.hpl.jena.rdf.model.Resource;
|
import com.hp.hpl.jena.rdf.model.Resource;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ResourceFactory;
|
||||||
import com.hp.hpl.jena.rdf.model.Statement;
|
import com.hp.hpl.jena.rdf.model.Statement;
|
||||||
import com.hp.hpl.jena.shared.Lock;
|
import com.hp.hpl.jena.shared.Lock;
|
||||||
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
||||||
|
@ -56,6 +57,15 @@ public class PropertyGroupDaoJena extends JenaBaseDao implements PropertyGroupDa
|
||||||
} finally {
|
} finally {
|
||||||
getOntModel().leaveCriticalSection();
|
getOntModel().leaveCriticalSection();
|
||||||
}
|
}
|
||||||
|
OntModel tboxModel = getOntModelSelector().getTBoxModel();
|
||||||
|
tboxModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
try {
|
||||||
|
Resource groupRes = ResourceFactory.createResource(group.getURI());
|
||||||
|
tboxModel.removeAll(groupRes, null, null);
|
||||||
|
tboxModel.removeAll(null, null, groupRes);
|
||||||
|
} finally {
|
||||||
|
tboxModel.leaveCriticalSection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PropertyGroup getGroupByURI(String uri) {
|
public PropertyGroup getGroupByURI(String uri) {
|
||||||
|
|
|
@ -20,6 +20,8 @@ import com.hp.hpl.jena.ontology.OntModel;
|
||||||
import com.hp.hpl.jena.ontology.OntModelSpec;
|
import com.hp.hpl.jena.ontology.OntModelSpec;
|
||||||
import com.hp.hpl.jena.rdf.model.Literal;
|
import com.hp.hpl.jena.rdf.model.Literal;
|
||||||
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Resource;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ResourceFactory;
|
||||||
import com.hp.hpl.jena.shared.Lock;
|
import com.hp.hpl.jena.shared.Lock;
|
||||||
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
||||||
|
|
||||||
|
@ -61,6 +63,15 @@ public class VClassGroupDaoJena extends JenaBaseDao implements VClassGroupDao {
|
||||||
} finally {
|
} finally {
|
||||||
ontModel.leaveCriticalSection();
|
ontModel.leaveCriticalSection();
|
||||||
}
|
}
|
||||||
|
OntModel tboxModel = getOntModelSelector().getTBoxModel();
|
||||||
|
tboxModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
try {
|
||||||
|
Resource groupRes = ResourceFactory.createResource(vcg.getURI());
|
||||||
|
tboxModel.removeAll(groupRes, null, null);
|
||||||
|
tboxModel.removeAll(null, null, groupRes);
|
||||||
|
} finally {
|
||||||
|
tboxModel.leaveCriticalSection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LinkedHashMap<String, VClassGroup> getClassGroupMap() {
|
public LinkedHashMap<String, VClassGroup> getClassGroupMap() {
|
||||||
|
@ -123,16 +134,15 @@ public class VClassGroupDaoJena extends JenaBaseDao implements VClassGroupDao {
|
||||||
public List<VClassGroup> getPublicGroupsWithVClasses(boolean displayOrder, boolean includeUninstantiatedClasses,
|
public List<VClassGroup> getPublicGroupsWithVClasses(boolean displayOrder, boolean includeUninstantiatedClasses,
|
||||||
boolean getIndividualCount) {
|
boolean getIndividualCount) {
|
||||||
VClassDao classDao = getWebappDaoFactory().getVClassDao();
|
VClassDao classDao = getWebappDaoFactory().getVClassDao();
|
||||||
|
List<VClassGroup> groups = new ArrayList<VClassGroup>();
|
||||||
getOntModel().enterCriticalSection(Lock.READ);
|
getOntModel().enterCriticalSection(Lock.READ);
|
||||||
try {
|
try {
|
||||||
List<VClassGroup> groups = new ArrayList<VClassGroup>();
|
|
||||||
ClosableIterator<Individual> groupIt = getOntModel().listIndividuals(CLASSGROUP);
|
ClosableIterator<Individual> groupIt = getOntModel().listIndividuals(CLASSGROUP);
|
||||||
try {
|
try {
|
||||||
while (groupIt.hasNext()) {
|
while (groupIt.hasNext()) {
|
||||||
Individual grp = (Individual) groupIt.next();
|
Individual grp = (Individual) groupIt.next();
|
||||||
VClassGroup vgrp = groupFromGroupIndividual(grp);
|
VClassGroup vgrp = groupFromGroupIndividual(grp);
|
||||||
if (vgrp!=null) {
|
if (vgrp != null) {
|
||||||
classDao.addVClassesToGroup(vgrp, includeUninstantiatedClasses, getIndividualCount);
|
|
||||||
groups.add(vgrp);
|
groups.add(vgrp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,27 +150,12 @@ public class VClassGroupDaoJena extends JenaBaseDao implements VClassGroupDao {
|
||||||
} finally {
|
} finally {
|
||||||
groupIt.close();
|
groupIt.close();
|
||||||
}
|
}
|
||||||
// BJL23 2008-12-18
|
} finally {
|
||||||
// It's often problematic that classes don't show up in editing picklists until they're in a classgroup.
|
getOntModel().leaveCriticalSection();
|
||||||
// I'm going to try adding all other classes to a classgroup called "ungrouped"
|
|
||||||
// We really need to rework these methods and move the filtering behavior into the nice filtering framework
|
|
||||||
/* commenting this out until I rework the filtering DAO to use this method */
|
|
||||||
/*
|
|
||||||
List<VClass> ungroupedClasses = new ArrayList<VClass>();
|
|
||||||
List<VClass> allClassList = getWebappDaoFactory().getVClassDao().getAllVclasses();
|
|
||||||
Iterator<VClass> allClassIt = allClassList.iterator();
|
|
||||||
while (allClassIt.hasNext()) {
|
|
||||||
VClass cls = allClassIt.next();
|
|
||||||
if (cls.getGroupURI()==null) {
|
|
||||||
ungroupedClasses.add(cls);
|
|
||||||
}
|
}
|
||||||
|
for (VClassGroup vgrp : groups) {
|
||||||
|
classDao.addVClassesToGroup(vgrp, includeUninstantiatedClasses, getIndividualCount);
|
||||||
}
|
}
|
||||||
if (ungroupedClasses.size()>0) {
|
|
||||||
VClassGroup ungrouped = new VClassGroup();
|
|
||||||
ungrouped.setPublicName("ungrouped");
|
|
||||||
groups.add(ungrouped);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (groups.size()>0) {
|
if (groups.size()>0) {
|
||||||
return groups;
|
return groups;
|
||||||
} else {
|
} else {
|
||||||
|
@ -173,10 +168,6 @@ public class VClassGroupDaoJena extends JenaBaseDao implements VClassGroupDao {
|
||||||
classDao.addVClassesToGroups(groups);
|
classDao.addVClassesToGroups(groups);
|
||||||
return groups;
|
return groups;
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
getOntModel().leaveCriticalSection();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue