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: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: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:publicDescriptionAnnot rdf:datatype="http://www.w3.org/2001/XMLSchema#string">This relates a person to their authorship information.</vitro:publicDescriptionAnnot>
</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.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.freemarker.UrlBuilder;
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.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.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 {
@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) {
EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo();
initBasics(editConfiguration, vreq);
@ -31,40 +65,45 @@ public class AddPublicationToPersonGenerator extends VivoBaseGenerator implement
initObjectPropForm(editConfiguration, vreq);
setVarNames(editConfiguration);
// Required N3
editConfiguration.setN3Required(generateN3Required());
// Optional N3
editConfiguration.setN3Optional( generateN3Optional());
editConfiguration.setN3Optional(generateN3Optional());
editConfiguration.setNewResources( generateNewResources(vreq) );
editConfiguration.setNewResources(generateNewResources(vreq));
//In scope
// In scope
setUrisAndLiteralsInScope(editConfiguration, vreq);
//on Form
// on Form
setUrisAndLiteralsOnForm(editConfiguration, vreq);
//Sparql queries
// Sparql queries
setSparqlQueries(editConfiguration, vreq);
//set fields
// set fields
setFields(editConfiguration, vreq);
//template file
// template file
editConfiguration.setTemplate("addPublicationToPerson.ftl");
//adding person has publication validator
// adding person has publication validator
editConfiguration.addValidator(new PersonHasPublicationValidator());
//Adding additional data, specifically edit mode
// Adding additional data, specifically edit mode
addFormSpecificData(editConfiguration, vreq);
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) {
editConfiguration.setVarNameForSubject("person");