From 876bf71a74cf7e063a0112991d20d5421da57a5f Mon Sep 17 00:00:00 2001 From: hjkhjk54 Date: Wed, 24 Oct 2012 21:20:52 +0000 Subject: [PATCH] Refactoring code for webpage management/editing generators to enabling addition of new webpage generators for data and metadata links in Datastar code. --- productMods/config/listViewConfig-webpage.xml | 2 +- .../AddEditWebpageFormGenerator.java | 133 ++++++++++-------- .../ManageWebpagesForIndividualGenerator.java | 6 +- 3 files changed, 81 insertions(+), 60 deletions(-) diff --git a/productMods/config/listViewConfig-webpage.xml b/productMods/config/listViewConfig-webpage.xml index 2e7db951..e1c26599 100644 --- a/productMods/config/listViewConfig-webpage.xml +++ b/productMods/config/listViewConfig-webpage.xml @@ -25,7 +25,7 @@ } ORDER BY ?rank ?anchor - + CONSTRUCT { ?subject ?property ?link . ?link ?linkProp ?linkObj 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 d5ea034c..367342b5 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 @@ -48,68 +48,77 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator private static String formTemplate = "addEditWebpageForm.ftl"; @Override public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception { - EditConfigurationVTwo config = new EditConfigurationVTwo(); - - config.setTemplate(this.getTemplate()); - - initBasics(config, vreq); - initPropertyParameters(vreq, session, config); - initObjectPropForm(config, vreq); - - config.setVarNameForSubject("subject"); - config.setVarNameForObject("link"); - - config.addNewResource("link", DEFAULT_NS_FOR_NEW_RESOURCE); - - config.setN3Required(list( N3_FOR_WEBPAGE, N3_FOR_URLTYPE )); - config.setN3Optional(list( N3_FOR_ANCHOR, N3_FOR_RANK)); - - config.addUrisInScope("webpageProperty", list( this.getWebpageProperty())); - config.addUrisInScope("inverseProperty", list( this.getWebpageOfProperty())); - config.addUrisInScope("linkClass", list( core + "URLLink")); - config.addUrisInScope("linkURI", list( core + "linkURI" )); - config.addUrisInScope("linkAnchorPredicate", list( core + "linkAnchorText" )); - config.addUrisInScope("rankPredicate", list( core + "rank")); - - 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")); - - config.addField(new FieldVTwo(). - setName("rank"). - setRangeDatatypeUri(XSD.integer.toString())); - - config.addFormSpecificData("newRank", - getMaxRank( EditConfigurationUtils.getObjectUri(vreq), - EditConfigurationUtils.getSubjectUri(vreq), vreq ) - + 1 ); - - config.addValidator(new AntiXssValidation()); - - //might be null - config.addFormSpecificData("subjectName", getName( config, vreq)); + EditConfigurationVTwo config = setupConfig(vreq, session); prepare(vreq, config); return config; } + //Have broken this method down into two portions to allow for overriding of edit configuration + //without having to copy the entire method and before prepare is called + + protected EditConfigurationVTwo setupConfig(VitroRequest vreq, HttpSession session) throws Exception{ + + EditConfigurationVTwo config = new EditConfigurationVTwo(); + + config.setTemplate(this.getTemplate()); + + initBasics(config, vreq); + initPropertyParameters(vreq, session, config); + initObjectPropForm(config, vreq); + + config.setVarNameForSubject("subject"); + config.setVarNameForObject("link"); + + config.addNewResource("link", DEFAULT_NS_FOR_NEW_RESOURCE); + + config.setN3Required(list( this.getN3ForWebpage(), N3_FOR_URLTYPE )); + config.setN3Optional(list( N3_FOR_ANCHOR, N3_FOR_RANK)); + + config.addUrisInScope("webpageProperty", list( this.getWebpageProperty())); + config.addUrisInScope("inverseProperty", list( this.getWebpageOfProperty())); + config.addUrisInScope("linkClass", list( this.getURLLinkClass())); + config.addUrisInScope("linkURI", list( core + "linkURI" )); + config.addUrisInScope("linkAnchorPredicate", list( core + "linkAnchorText" )); + config.addUrisInScope("rankPredicate", list( core + "rank")); + + 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(this.getURLLinkClass()))); + + config.addField(new FieldVTwo(). + setName("anchor")); + + config.addField(new FieldVTwo(). + setName("rank"). + setRangeDatatypeUri(XSD.integer.toString())); + + config.addFormSpecificData("newRank", + getMaxRank( EditConfigurationUtils.getObjectUri(vreq), + EditConfigurationUtils.getSubjectUri(vreq), vreq ) + + 1 ); + + config.addValidator(new AntiXssValidation()); + + //might be null + config.addFormSpecificData("subjectName", getName( config, vreq)); + return config; + } + /** may be null */ private Object getName(EditConfigurationVTwo config, VitroRequest vreq) { Individual ind = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(config.getSubjectUri()); @@ -209,5 +218,13 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator return MAX_RANK_QUERY; } + + protected String getURLLinkClass() { + return core + "URLLink"; + } + + protected String getN3ForWebpage() { + return N3_FOR_WEBPAGE; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java index 557ae247..1a82911c 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/ManageWebpagesForIndividualGenerator.java @@ -37,7 +37,7 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { EditConfigurationVTwo config = new EditConfigurationVTwo(); - config.setTemplate("manageWebpagesForIndividual.ftl"); + config.setTemplate(this.getTemplate()); initBasics(config, vreq); initPropertyParameters(vreq, session, config); @@ -120,4 +120,8 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG protected String getQuery() { return WEBPAGE_QUERY; } + + protected String getTemplate() { + return "manageWebpagesForIndividual.ftl"; + } }