Adding ability for an EditConfiguration to specify a redirect instead of a form. NIHVIVO-3369

This commit is contained in:
briancaruso 2011-12-01 19:14:13 +00:00
parent 32041213b4
commit 78049c4633
2 changed files with 263 additions and 225 deletions

View file

@ -3602,7 +3602,6 @@
<vitro:collateBySubclassAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</vitro:collateBySubclassAnnot> <vitro:collateBySubclassAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</vitro:collateBySubclassAnnot>
<vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/> <vitro:prohibitedFromUpdateBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:fullPropertyNameAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">has authorship</vitro:fullPropertyNameAnnot> <vitro:fullPropertyNameAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">has authorship</vitro:fullPropertyNameAnnot>
<vitro:skipEditForm rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</vitro:skipEditForm>
<vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/> <vitro:hiddenFromDisplayBelowRoleLevelAnnot rdf:resource="http://vitro.mannlib.cornell.edu/ns/vitro/role#public"/>
<vitro:publicDescriptionAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">This relates a person to their authorship information.</vitro:publicDescriptionAnnot> <vitro:publicDescriptionAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">This relates a person to their authorship information.</vitro:publicDescriptionAnnot>
</rdf:Description> </rdf:Description>

View file

@ -12,7 +12,10 @@ import javax.servlet.http.HttpSession;
import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.vocabulary.XSD; import com.hp.hpl.jena.vocabulary.XSD;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.PersonHasPublicationValidator; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.PersonHasPublicationValidator;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; 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.EditConfigurationVTwo;
@ -20,10 +23,41 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
/**
* On an add/new, this will show a form, on an edit/update this will skip to the
* profile page of the publication.
*/
public class AddPublicationToPersonGenerator extends VivoBaseGenerator implements EditConfigurationGenerator { public class AddPublicationToPersonGenerator extends VivoBaseGenerator implements EditConfigurationGenerator {
@Override @Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
if( EditConfigurationUtils.getObjectUri(vreq) == null ){
return doAddNew(vreq,session);
}else{
return doSkipToPublication(vreq);
}
}
private EditConfigurationVTwo doSkipToPublication(VitroRequest vreq) {
Individual authorshipNode = EditConfigurationUtils.getObjectIndividual(vreq);
//try to get the publication
List<ObjectPropertyStatement> stmts =
authorshipNode.getObjectPropertyStatements("http://vivoweb.org/ontology/core#linkedInformationResource");
if( stmts == null || stmts.isEmpty() ){
return doBadAuthorshipNoPub( vreq );
}else if( stmts.size() > 1 ){
return doBadAuthorshipMultiplePubs(vreq);
}else{
//skip to publication
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
editConfiguration.setSkipToUrl(UrlBuilder.getIndividualProfileUrl(stmts.get(0).getObjectURI(), vreq));
return editConfiguration;
}
}
protected EditConfigurationVTwo doAddNew(VitroRequest vreq,
HttpSession session) { HttpSession session) {
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo(); EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
initBasics(editConfiguration, vreq); initBasics(editConfiguration, vreq);
@ -31,40 +65,45 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
initObjectPropForm(editConfiguration, vreq); initObjectPropForm(editConfiguration, vreq);
setVarNames(editConfiguration); setVarNames(editConfiguration);
// Required N3 // Required N3
editConfiguration.setN3Required(generateN3Required()); editConfiguration.setN3Required(generateN3Required());
// Optional N3 // Optional N3
editConfiguration.setN3Optional( generateN3Optional()); editConfiguration.setN3Optional(generateN3Optional());
editConfiguration.setNewResources( generateNewResources(vreq) ); editConfiguration.setNewResources(generateNewResources(vreq));
//In scope // In scope
setUrisAndLiteralsInScope(editConfiguration, vreq); setUrisAndLiteralsInScope(editConfiguration, vreq);
//on Form // on Form
setUrisAndLiteralsOnForm(editConfiguration, vreq); setUrisAndLiteralsOnForm(editConfiguration, vreq);
//Sparql queries // Sparql queries
setSparqlQueries(editConfiguration, vreq); setSparqlQueries(editConfiguration, vreq);
//set fields // set fields
setFields(editConfiguration, vreq); setFields(editConfiguration, vreq);
//template file // template file
editConfiguration.setTemplate("addPublicationToPerson.ftl"); editConfiguration.setTemplate("addPublicationToPerson.ftl");
//adding person has publication validator // adding person has publication validator
editConfiguration.addValidator(new PersonHasPublicationValidator()); editConfiguration.addValidator(new PersonHasPublicationValidator());
//Adding additional data, specifically edit mode // Adding additional data, specifically edit mode
addFormSpecificData(editConfiguration, vreq); addFormSpecificData(editConfiguration, vreq);
return editConfiguration; return editConfiguration;
} }
private EditConfigurationVTwo doBadAuthorshipMultiplePubs(VitroRequest vreq) {
// TODO Auto-generated method stub
return null;
}
private EditConfigurationVTwo doBadAuthorshipNoPub(VitroRequest vreq) {
// TODO Auto-generated method stub
return null;
}
private void setVarNames(EditConfigurationVTwo editConfiguration) { private void setVarNames(EditConfigurationVTwo editConfiguration) {
editConfiguration.setVarNameForSubject("person"); editConfiguration.setVarNameForSubject("person");