Refactoring code for webpage management/editing generators to enabling addition of new webpage generators for data and metadata links in Datastar code.

This commit is contained in:
hjkhjk54 2012-10-24 21:20:52 +00:00
parent fbcbaa75cb
commit 876bf71a74
3 changed files with 81 additions and 60 deletions

View file

@ -25,7 +25,7 @@
} ORDER BY ?rank ?anchor } ORDER BY ?rank ?anchor
</query-select> </query-select>
<query-construct> <query-construct>
CONSTRUCT { CONSTRUCT {
?subject ?property ?link . ?subject ?property ?link .
?link ?linkProp ?linkObj ?link ?linkProp ?linkObj

View file

@ -48,68 +48,77 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator
private static String formTemplate = "addEditWebpageForm.ftl"; private static String formTemplate = "addEditWebpageForm.ftl";
@Override @Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception { public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) throws Exception {
EditConfigurationVTwo config = new EditConfigurationVTwo(); EditConfigurationVTwo config = setupConfig(vreq, session);
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));
prepare(vreq, config); prepare(vreq, config);
return 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 */ /** may be null */
private Object getName(EditConfigurationVTwo config, VitroRequest vreq) { private Object getName(EditConfigurationVTwo config, VitroRequest vreq) {
Individual ind = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(config.getSubjectUri()); Individual ind = vreq.getWebappDaoFactory().getIndividualDao().getIndividualByURI(config.getSubjectUri());
@ -209,5 +218,13 @@ public class AddEditWebpageFormGenerator extends BaseEditConfigurationGenerator
return MAX_RANK_QUERY; return MAX_RANK_QUERY;
} }
protected String getURLLinkClass() {
return core + "URLLink";
}
protected String getN3ForWebpage() {
return N3_FOR_WEBPAGE;
}
} }

View file

@ -37,7 +37,7 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
EditConfigurationVTwo config = new EditConfigurationVTwo(); EditConfigurationVTwo config = new EditConfigurationVTwo();
config.setTemplate("manageWebpagesForIndividual.ftl"); config.setTemplate(this.getTemplate());
initBasics(config, vreq); initBasics(config, vreq);
initPropertyParameters(vreq, session, config); initPropertyParameters(vreq, session, config);
@ -120,4 +120,8 @@ public class ManageWebpagesForIndividualGenerator extends BaseEditConfigurationG
protected String getQuery() { protected String getQuery() {
return WEBPAGE_QUERY; return WEBPAGE_QUERY;
} }
protected String getTemplate() {
return "manageWebpagesForIndividual.ftl";
}
} }