From a5d42ac5ac95570bd576c68a2eda21cad4014b81 Mon Sep 17 00:00:00 2001 From: hjkhjk54 Date: Thu, 14 Jul 2011 15:13:01 +0000 Subject: [PATCH] Updates for institutional internal class processing and including special values for individual controller --- .../freemarker/IndividualController.java | 10 +++++++ .../InstitutionalInternalClassController.java | 27 ++++++++++++------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java index 1d126b883..04886a170 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/IndividualController.java @@ -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 body) { + if(vreq.getAttribute(VitroRequest.SPECIAL_WRITE_MODEL) != null) { + body.put("reorderUrl", DisplayVocabulary.REORDER_MENU_URL); + } + } + private Map getRelatedSubject(VitroRequest vreq) { Map map = null; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java index f9a3d3440..f62ae7704 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/InstitutionalInternalClassController.java @@ -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 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; }