From 4d680092d51dbcccbb9cf414b947d1500066936e Mon Sep 17 00:00:00 2001 From: tworrall Date: Tue, 19 Jun 2012 17:55:39 +0000 Subject: [PATCH] NIHVIVO 3783 added urltype select element to the template --- .../edit/forms/addEditWebpageForm.ftl | 11 +++++- .../AddEditWebpageFormGenerator.java | 35 ++++++++++++++----- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/productMods/templates/freemarker/edit/forms/addEditWebpageForm.ftl b/productMods/templates/freemarker/edit/forms/addEditWebpageForm.ftl index 5cbbd7a0..df396176 100644 --- a/productMods/templates/freemarker/edit/forms/addEditWebpageForm.ftl +++ b/productMods/templates/freemarker/edit/forms/addEditWebpageForm.ftl @@ -12,6 +12,7 @@ <#--Retrieve variables needed--> <#assign url = lvf.getFormFieldValue(editSubmission, editConfiguration, "url")/> +<#assign urlTypeValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "urlType")/> <#assign anchor = lvf.getFormFieldValue(editSubmission, editConfiguration, "anchor") /> <#assign newRank = lvf.getFormFieldValue(editSubmission, editConfiguration, "newRank") /> @@ -48,6 +49,14 @@
+ + <#assign urlTypeOpts = editConfiguration.pageData.urlType /> + @@ -68,4 +77,4 @@ ${stylesheets.add('')} ${scripts.add('', - '')} \ No newline at end of file + '')} diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditWebpageFormGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditWebpageFormGenerator.java index fe65700a..4110506d 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditWebpageFormGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddEditWebpageFormGenerator.java @@ -1,6 +1,10 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; @@ -13,9 +17,11 @@ import com.hp.hpl.jena.vocabulary.XSD; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.ChildVClassesWithParent; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.AntiXssValidation; /** @@ -41,7 +47,7 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator public static Log log = LogFactory.getLog( AddEditWebpageFormGenerator.class ); @Override - public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { + public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception { EditConfigurationVTwo config = new EditConfigurationVTwo(); config.setTemplate("addEditWebpageForm.ftl"); @@ -51,11 +57,11 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator initObjectPropForm(config, vreq); config.setVarNameForSubject("subject"); - config.setVarNameForObject("link"); + config.addNewResource("link", DEFAULT_NS_FOR_NEW_RESOURCE); - config.setN3Required(list( N3_FOR_WEBPAGE )); + config.setN3Required(list( N3_FOR_WEBPAGE, N3_FOR_URLTYPE )); config.setN3Optional(list( N3_FOR_ANCHOR, N3_FOR_RANK)); config.addUrisInScope("webpageProperty", list( core + "webpage")); @@ -64,19 +70,26 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator config.addUrisInScope("linkURI", list( core + "linkURI" )); config.addUrisInScope("linkAnchorPredicate", list( core + "linkAnchorText" )); config.addUrisInScope("rankPredicate", list( core + "rank")); - config.addUrisInScope("linkClass", list( core + "URLLink")); + config.setUrisOnForm("urlType"); config.setLiteralsOnForm(list("url","anchor","rank")); config.addSparqlForExistingLiteral("url", URL_QUERY); config.addSparqlForExistingLiteral("anchor", ANCHOR_QUERY); config.addSparqlForExistingLiteral("rank", MAX_RANK_QUERY); + config.addSparqlForExistingUris("urlType", URLTYPE_QUERY); config.addField(new FieldVTwo(). setName("url"). setValidators(list("nonempty", "datatype:"+XSD.anyURI.toString(), "httpUrl")). setRangeDatatypeUri(XSD.anyURI.toString())); + config.addField( new FieldVTwo(). + setName("urlType"). + setValidators( list("nonempty") ). + setOptions( + new ChildVClassesWithParent(core + "URLLink"))); + config.addField(new FieldVTwo(). setName("anchor")); @@ -110,9 +123,12 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator static String N3_FOR_WEBPAGE = "?subject ?webpageProperty ?link . \n"+ "?link ?inverseProperty ?subject . \n"+ - "?link a ?linkClass ; \n" + - " ?linkURI ?url ."; + "?link a ?linkClass . \n" + + "?link ?linkURI ?url ."; + static String N3_FOR_URLTYPE = + "?link a ?urlType ."; + static String N3_FOR_ANCHOR = "?link ?linkAnchorPredicate ?anchor ."; @@ -124,15 +140,18 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator static String URL_QUERY = "SELECT ?urlExisting WHERE { ?link ?linkURI ?urlExisting }"; + static String URLTYPE_QUERY = + "PREFIX vitro: <" + VitroVocabulary.vitroURI + "> \n" + + "SELECT ?linkClassExisting WHERE { ?link vitro:mostSpecificType ?linkClassExisting }"; + static String ANCHOR_QUERY = "SELECT ?anchorExisting WHERE { ?link ?linkAnchorPredicate ?anchorExisting }"; - + static String RANK_QUERY = "SELECT ?rankExisting WHERE { ?link ?rankPredicate ?rankExisting }"; static String core = "http://vivoweb.org/ontology/core#"; - /* Note on ordering by rank in sparql: if there is a non-integer value on a link, that will be returned, * since it's ranked highest. Preventing that would require getting all the ranks and sorting in Java, * throwing out non-int values.