NIHVIVO-3236 fixes timeout bug when attaching models to TBox

This commit is contained in:
brianjlowe 2011-10-24 20:02:04 +00:00
parent 7d5a413c15
commit f346789445
3 changed files with 16 additions and 29 deletions

View file

@ -30,6 +30,11 @@ public class RegeneratingGraph implements Graph, Regenerable {
regenerate(); regenerate();
} }
public RegeneratingGraph(Graph initGraph, GraphGenerator graphGenerator) {
this.g = initGraph;
this.generator = graphGenerator;
}
public void regenerate() { public void regenerate() {
this.g = generator.generateGraph(); this.g = generator.generateGraph();
} }

View file

@ -15,6 +15,7 @@ import java.util.Set;
import org.apache.commons.dbcp.BasicDataSource; import org.apache.commons.dbcp.BasicDataSource;
import com.hp.hpl.jena.graph.Graph;
import com.hp.hpl.jena.graph.GraphMaker; import com.hp.hpl.jena.graph.GraphMaker;
import com.hp.hpl.jena.graph.Node; import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Dataset;
@ -24,6 +25,7 @@ import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker; import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.rdf.model.ModelReader; import com.hp.hpl.jena.rdf.model.ModelReader;
import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Property;
@ -169,11 +171,11 @@ public class VitroJenaSDBModelMaker implements ModelMaker {
getStore().close(); getStore().close();
} }
public Model createModel(String arg0) { public Model createModel(String modelName) {
Model model = SDBFactory.connectNamedModel(getStore(), arg0); Model model = getModel(modelName);
Model metadataModel = getMetadataModel(); Model metadataModel = getMetadataModel();
try { try {
metadataModel.add(sdbResource,metadataModel.getProperty(HAS_NAMED_MODEL_URI),arg0); metadataModel.add(sdbResource,metadataModel.getProperty(HAS_NAMED_MODEL_URI), modelName);
} finally { } finally {
metadataModel.close(); metadataModel.close();
} }
@ -403,8 +405,12 @@ public class VitroJenaSDBModelMaker implements ModelMaker {
return (this.hasModel(arg0)) ? SDBFactory.connectNamedModel(getStore(),arg0) : null; return (this.hasModel(arg0)) ? SDBFactory.connectNamedModel(getStore(),arg0) : null;
} }
public Model getModel(String arg0) { public Model getModel(String modelName) {
return SDBFactory.connectNamedModel(getStore(), arg0); SDBGraphGenerator graphGen = new SDBGraphGenerator(
bds, storeDesc, modelName);
Graph g = new RegeneratingGraph(
SDBFactory.connectNamedGraph(getStore(), modelName), graphGen);
return ModelFactory.createModelForGraph(g);
} }
public Model getModel(String arg0, ModelReader arg1) { public Model getModel(String arg0, ModelReader arg1) {

View file

@ -147,7 +147,6 @@ public class WebappDaoFactoryJena implements WebappDaoFactory {
initPreferredLanguages(); initPreferredLanguages();
} }
this.userURI = userURI; this.userURI = userURI;
makeFlag2ConvenienceMaps();
Model languageUniversalsModel = ModelFactory.createDefaultModel(); Model languageUniversalsModel = ModelFactory.createDefaultModel();
if (INCLUDE_TOP_CONCEPT) { if (INCLUDE_TOP_CONCEPT) {
Resource top = getTopConcept(); Resource top = getTopConcept();
@ -284,29 +283,6 @@ public class WebappDaoFactoryJena implements WebappDaoFactory {
preferredLanguages[2] = "EN"; preferredLanguages[2] = "EN";
} }
private void makeFlag2ConvenienceMaps() {
HashMap<String,OntClass> flag2ValueHashMap = new HashMap<String,OntClass>();
HashMap<Resource,String> flag2ClassLabelHashMap = new HashMap<Resource,String>();
for (Iterator classIt = ontModelSelector.getTBoxModel().listClasses(); classIt.hasNext(); ) {
OntClass ontClass = (OntClass) classIt.next();
String ontClassName = ontClass.getLocalName();
if(ontClassName != null && ontClass.getNameSpace().equals(VitroVocabulary.vitroURI) && ontClassName.indexOf("Flag2Value")==0) {
String ontClassLabel = ontClass.getLabel(null);
if (ontClassLabel != null) {
flag2ValueHashMap.put(ontClassLabel, ontClass);
flag2ClassLabelHashMap.put(ontClass, ontClassLabel);
}
}
}
this.flag2ValueMap = flag2ValueHashMap;
this.flag2ClassLabelMap = flag2ClassLabelHashMap;
}
private Map<Resource,String> makeFlag2ClassLabelMap() {
HashMap<Resource,String> flag2ClassLabelMap = new HashMap<Resource,String>();
return flag2ClassLabelMap;
}
/* ******************************************** */ /* ******************************************** */
public Map<String,String> getProperties() { public Map<String,String> getProperties() {