Updates for institutional internal class processing and including special values for individual controller
This commit is contained in:
parent
1c82582023
commit
a5d42ac5ac
2 changed files with 27 additions and 10 deletions
|
@ -47,6 +47,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.Rdf
|
|||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.RedirectResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyDao;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.VClassDao;
|
||||
|
@ -142,6 +143,8 @@ public class IndividualController extends FreemarkerHttpServlet {
|
|||
body.put("individual", wrap(itm, BeansWrapper.EXPOSE_SAFE));
|
||||
body.put("headContent", getRdfLinkTag(itm));
|
||||
|
||||
//If special values required for individuals like menu, include values in template values
|
||||
this.includeSpecialEditingValues(vreq, body);
|
||||
String template = getIndividualTemplate(individual, vreq);
|
||||
|
||||
return new TemplateResponseValues(template, body);
|
||||
|
@ -210,6 +213,13 @@ public class IndividualController extends FreemarkerHttpServlet {
|
|||
return map;
|
||||
}
|
||||
|
||||
//Get special values for cases such as Menu Management editing
|
||||
private void includeSpecialEditingValues(VitroRequest vreq, Map<String, Object> body) {
|
||||
if(vreq.getAttribute(VitroRequest.SPECIAL_WRITE_MODEL) != null) {
|
||||
body.put("reorderUrl", DisplayVocabulary.REORDER_MENU_URL);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> getRelatedSubject(VitroRequest vreq) {
|
||||
Map<String, Object> map = null;
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
|||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.edit.utils.LocalNamespaceClassUtils;
|
||||
/*
|
||||
* Custom controller for menu management. This will be replaced later once N3 Editing
|
||||
|
@ -131,8 +132,8 @@ public class InstitutionalInternalClassController extends FreemarkerHttpServlet
|
|||
}
|
||||
|
||||
private void processSelectExistingClass(VitroRequest vreq, Map<String, Object> data) {
|
||||
//Check if internal class is already set and be sure to include that in the data to be returned
|
||||
data.put("useExistingInternalClass", true);
|
||||
//Check if local classes exist and use for selection
|
||||
data.put("useExistingLocalClass", true);
|
||||
data.put("submitAction", "Save");
|
||||
}
|
||||
|
||||
|
@ -188,13 +189,18 @@ public class InstitutionalInternalClassController extends FreemarkerHttpServlet
|
|||
if(classUri != null && !classUri.isEmpty()) {
|
||||
Model writeModel = ModelContext.getBaseOntModelSelector(getServletContext()).getTBoxModel();
|
||||
writeModel.enterCriticalSection(Lock.WRITE);
|
||||
writeModel.notifyEvent(new EditEvent(null,true));
|
||||
try {
|
||||
log.debug("Should be removing these statements " + writeModel.listStatements(null,
|
||||
ResourceFactory.createProperty(VitroVocabulary.IS_INTERNAL_CLASSANNOT),
|
||||
(RDFNode) null).toList().toString());
|
||||
//remove existing internal classes if there are any as assuming only one
|
||||
writeModel.remove(
|
||||
writeModel.listStatements(null,
|
||||
writeModel.removeAll(null,
|
||||
ResourceFactory.createProperty(VitroVocabulary.IS_INTERNAL_CLASSANNOT),
|
||||
(RDFNode) null));
|
||||
|
||||
(RDFNode) null);
|
||||
log.debug("Are there any statements left for internal class annotation: " + writeModel.listStatements(null,
|
||||
ResourceFactory.createProperty(VitroVocabulary.IS_INTERNAL_CLASSANNOT),
|
||||
(RDFNode) null).toList().toString());
|
||||
writeModel.add(
|
||||
writeModel.createStatement(
|
||||
ResourceFactory.createResource(classUri),
|
||||
|
@ -203,6 +209,7 @@ public class InstitutionalInternalClassController extends FreemarkerHttpServlet
|
|||
} catch(Exception ex) {
|
||||
log.error("Error occurred in adding statement for " + classUri + " becoming internal class", ex);
|
||||
} finally {
|
||||
writeModel.notifyEvent(new EditEvent(null,true));
|
||||
writeModel.leaveCriticalSection();
|
||||
}
|
||||
}
|
||||
|
@ -239,11 +246,11 @@ public class InstitutionalInternalClassController extends FreemarkerHttpServlet
|
|||
StmtIterator internalIt = mainModel.listStatements(null,
|
||||
ResourceFactory.createProperty(VitroVocabulary.IS_INTERNAL_CLASSANNOT),
|
||||
(RDFNode) null);
|
||||
if(internalIt.hasNext()){
|
||||
while(internalIt.hasNext()){
|
||||
Statement s = internalIt.nextStatement();
|
||||
if(s.getObject().isResource()){
|
||||
internalClassUri = internalIt.nextStatement().getResource().getURI();
|
||||
}
|
||||
//The class IS an internal class so the subject is what we're looking for
|
||||
internalClassUri = s.getSubject().getURI();
|
||||
log.debug("Found internal class uri " + internalClassUri);
|
||||
}
|
||||
return internalClassUri;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue