diff --git a/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl b/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl
index 7a62e2a6..a5f67d92 100644
--- a/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl
+++ b/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl
@@ -2,6 +2,8 @@
<#import "lib-vivo-form.ftl" as lvf>
<#assign existingConcepts = editConfiguration.pageData.existingConcepts/>
+<#assign userDefinedConceptUrl = editConfiguration.pageData.userDefinedConceptUrl/>
+
<#--If edit submission exists, then retrieve validation errors if they exist-->
<#if editSubmission?has_content && editSubmission.submissionExists = true && editSubmission.validationErrors?has_content>
<#assign submissionErrors = editSubmission.validationErrors/>
@@ -97,7 +99,7 @@
- Can't find the concept you want? Create your own.
+ Can't find the concept you want? Create your own.
diff --git a/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl b/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl
index e1544069..755cf2bd 100644
--- a/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl
+++ b/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl
@@ -9,7 +9,15 @@
<#assign existingAuthorInfo = editConfiguration.pageData.existingAuthorInfo />
<#assign rankPredicate = editConfiguration.pageData.rankPredicate />
-<#--Values from edit configuration to populate fields -->
+<#--If edit submission exists, then retrieve validation errors if they exist-->
+<#if editSubmission?has_content && editSubmission.submissionExists = true && editSubmission.validationErrors?has_content>
+ <#assign submissionErrors = editSubmission.validationErrors/>
+#if>
+
+<#--Submission values for these fields may be returned if user did not fill out fields for new person-->
+<#assign lastNameValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "lastName") />
+<#assign firstNameValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "firstName") />
+<#assign middleNameValue = lvf.getFormFieldValue(editSubmission, editConfiguration, "middleName") />
@@ -27,6 +35,20 @@
${title}
+<#if submissionErrors?has_content>
+
+
+
+ <#--below shows examples of both printing out all error messages and checking the error message for a specific field-->
+ <#list submissionErrors?keys as errorFieldName>
+ ${errorFieldName} : ${submissionErrors[errorFieldName]}
+ #list>
+
+
+
+#if>
+
+
-
+#if>
-<#/if>
-
-
- ${stylesheets.add('')}
+${stylesheets.add('')}
${stylesheets.add('')}
${stylesheets.add('')}
${scripts.add('',
'',
- '',
- '',
+ '',
'')}
+
+<#-- '',
+ '',
+-->
\ No newline at end of file
diff --git a/productMods/templates/freemarker/edit/forms/addUserDefinedConcept.ftl b/productMods/templates/freemarker/edit/forms/addUserDefinedConcept.ftl
new file mode 100644
index 00000000..aa7c7fc7
--- /dev/null
+++ b/productMods/templates/freemarker/edit/forms/addUserDefinedConcept.ftl
@@ -0,0 +1,66 @@
+<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
+
+<#--If edit submission exists, then retrieve validation errors if they exist-->
+<#if editSubmission?has_content && editSubmission.submissionExists = true && editSubmission.validationErrors?has_content>
+ <#assign submissionErrors = editSubmission.validationErrors/>
+#if>
+
+<#assign sparqlForAcFilter = editConfiguration.pageData.sparqlForAcFilter />
+<#assign returnUrl = ""/>
+
+
Add Your Own Concept
+
+
+
+
+<#assign sparqlQueryUrl = "/ajax/sparqlQuery" >
+
+
+
+${stylesheets.add('')}
+ ${stylesheets.add('')}
+ ${stylesheets.add('')}
+
+
+ ${scripts.add('',
+ '',
+ '',
+ '')}
\ No newline at end of file
diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java
index b106db0b..7c4460a5 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PersonHasPublicationValidator.java
@@ -3,42 +3,48 @@
package edu.cornell.mannlib.vitro.webapp.edit.n3editing;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.hp.hpl.jena.rdf.model.Literal;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.EditConfiguration;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.N3Validator;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.EditSubmission;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.N3ValidatorVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.MultiValueEditSubmission;
-public class PersonHasPublicationValidator implements N3Validator {
+public class PersonHasPublicationValidator implements N3ValidatorVTwo {
private static String MISSING_PUB_TYPE_ERROR = "Must specify a publication type.";
private static String MISSING_PUB_TITLE_ERROR = "Must specify a publication title.";
@Override
- public Map validate(EditConfiguration editConfig,
- EditSubmission editSub) {
+ public Map validate(EditConfigurationVTwo editConfig,
+ MultiValueEditSubmission editSub) {
- Map urisFromForm = editSub.getUrisFromForm();
- Map literalsFromForm = editSub.getLiteralsFromForm();
+ Map> urisFromForm = editSub.getUrisFromForm();
+ Map> literalsFromForm = editSub.getLiteralsFromForm();
Map errors = new HashMap();
// If there's a pubUri, then we're done. The other fields are disabled and so don't get submitted.
- String pubUri = urisFromForm.get("pubUri");
+ List pubUriList = urisFromForm.get("pubUri");
+ //This method will return null if the list is null or empty, otherwise returns first element
+ //Assumption is that only one value for uri, type, or title will be sent back
+ String pubUri = (String) getFirstElement(pubUriList);
if (!StringUtils.isEmpty(pubUri)) {
return null;
}
- String pubType = urisFromForm.get("pubType");
+ List pubTypeList = urisFromForm.get("pubType");
+ String pubType = (String) getFirstElement(pubTypeList);
if ("".equals(pubType)) {
pubType = null;
}
- Literal title = literalsFromForm.get("title");
+ List titleList = literalsFromForm.get("title");
+ Literal title = (Literal) getFirstElement(titleList);
if (title != null) {
String titleValue = title.getLexicalForm();
if (StringUtils.isEmpty(titleValue)) {
@@ -55,5 +61,13 @@ public class PersonHasPublicationValidator implements N3Validator {
return errors.size() != 0 ? errors : null;
}
+
+ private Object getFirstElement(List checkList) {
+ if(checkList == null || checkList.size() == 0) {
+ return null;
+ }
+ return checkList.get(0);
+ }
+
}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java
index ab1235d9..238e3cf3 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java
@@ -3,30 +3,31 @@
package edu.cornell.mannlib.vitro.webapp.edit.n3editing;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import com.hp.hpl.jena.rdf.model.Literal;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.EditConfiguration;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.validators.N3Validator;
-import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.EditSubmission;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.N3ValidatorVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.MultiValueEditSubmission;
-public class PublicationHasAuthorValidator implements N3Validator {
+public class PublicationHasAuthorValidator implements N3ValidatorVTwo {
private static String MISSING_FIRST_NAME_ERROR = "Must specify the author's first name.";
private static String MISSING_LAST_NAME_ERROR = "Must specify the author's last name.";
private static String MALFORMED_LAST_NAME_ERROR = "Last name may not contain a comma. Please enter first name in first name field.";
;
@Override
- public Map validate(EditConfiguration editConfig,
- EditSubmission editSub) {
- Map urisFromForm = editSub.getUrisFromForm();
- Map literalsFromForm = editSub.getLiteralsFromForm();
+ public Map validate(EditConfigurationVTwo editConfig,
+ MultiValueEditSubmission editSub) {
+ Map> urisFromForm = editSub.getUrisFromForm();
+ Map> literalsFromForm = editSub.getLiteralsFromForm();
Map errors = new HashMap();
- String personUri = urisFromForm.get("personUri");
- if ("".equals(personUri)) {
+ List personUri = urisFromForm.get("personUri");
+ if (allListElementsEmpty(personUri)) {
personUri = null;
}
// If there's a personUri, then we're done. The firstName and lastName fields are
@@ -35,11 +36,24 @@ public class PublicationHasAuthorValidator implements N3Validator {
return null;
}
- Literal firstName = literalsFromForm.get("firstName");
- if( firstName != null && firstName.getLexicalForm() != null && "".equals(firstName.getLexicalForm()) )
+ //Expecting only one first name in this case
+ //To Do: update logic if multiple first names considered
+ Literal firstName = null;
+ List firstNameList = literalsFromForm.get("firstName");
+ if(firstNameList != null && firstNameList.size() > 0) {
+ firstName = firstNameList.get(0);
+ }
+ if( firstName != null &&
+ firstName.getLexicalForm() != null &&
+ "".equals(firstName.getLexicalForm()) )
firstName = null;
- Literal lastName = literalsFromForm.get("lastName");
+
+ List lastNameList = literalsFromForm.get("lastName");
+ Literal lastName = null;
+ if(lastNameList != null && lastNameList.size() > 0) {
+ lastName = lastNameList.get(0);
+ }
String lastNameValue = "";
if (lastName != null) {
lastNameValue = lastName.getLexicalForm();
@@ -61,5 +75,21 @@ public class PublicationHasAuthorValidator implements N3Validator {
return errors.size() != 0 ? errors : null;
}
+
+ private boolean allListElementsEmpty(List checkList) {
+ if(checkList == null)
+ return true;
+ if(checkList.isEmpty()) {
+ return true;
+ }
+ boolean allEmpty = true;
+ for(String s: checkList) {
+ if(s.length() != 0){
+ allEmpty = false;
+ break;
+ }
+ }
+ return allEmpty;
+ }
}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java
index 48bd77c8..224a39db 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java
@@ -33,6 +33,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
+import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues;
import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
@@ -354,9 +355,22 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements
List testInfo = new ArrayList();
testInfo.add(new AssociatedConceptInfo("testLabel", "testURI", "testVocabURI", "testVocabLabel"));
formSpecificData.put("existingConcepts", testInfo);
+ //Return url for adding user defined concept
+ formSpecificData.put("userDefinedConceptUrl", getUserDefinedConceptUrl(vreq));
editConfiguration.setFormSpecificData(formSpecificData);
}
+ private Object getUserDefinedConceptUrl(VitroRequest vreq) {
+ String subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
+ String predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
+ String generatorName = "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddUserDefinedConceptGenerator";
+ String editUrl = EditConfigurationUtils.getEditUrl(vreq);
+
+ return editUrl + "?subject=" + UrlBuilder.urlEncode(subjectUri) +
+ "&predicate=" + UrlBuilder.urlEncode(predicateUri) +
+ "&editForm=" + UrlBuilder.urlEncode(generatorName);
+ }
+
public class AssociatedConceptInfo {
private String conceptLabel;
private String conceptURI;
diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java
index c66eee2c..cbce2ab5 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAuthorsToInformationResourceGenerator.java
@@ -19,6 +19,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyComparator;
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
+import edu.cornell.mannlib.vitro.webapp.edit.n3editing.PublicationHasAuthorValidator;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeIntervalValidationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
@@ -60,10 +61,11 @@ public class AddAuthorsToInformationResourceGenerator extends VivoBaseGenerator
//template file
editConfiguration.setTemplate("addAuthorsToInformationResource.ftl");
- //no validators or preprocessors
+ //add validators
+ editConfiguration.addValidator(new PublicationHasAuthorValidator());
//Adding additional data, specifically edit mode
- addFormSpecificData(editConfiguration, vreq);
+ addFormSpecificData(editConfiguration, vreq);
return editConfiguration;
}
diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java
index bd719182..442d03ec 100644
--- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java
+++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddPublicationToPersonGenerator.java
@@ -2,6 +2,7 @@
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -9,12 +10,17 @@ import java.util.Map;
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.controller.VitroRequest;
+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;
+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;
-public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator {
+public class AddPublicationToPersonGenerator extends VivoBaseGenerator implements EditConfigurationGenerator {
@Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq,
@@ -46,11 +52,12 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
setSparqlQueries(editConfiguration, vreq);
//set fields
- setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq));
+ setFields(editConfiguration, vreq);
//template file
- editConfiguration.setTemplate("addAuthorsToInformationResource.ftl");
- //no validators or preprocessors
+ editConfiguration.setTemplate("addPublicationToPerson.ftl");
+ //adding person has publication validator
+ editConfiguration.addValidator(new PersonHasPublicationValidator());
//Adding additional data, specifically edit mode
addFormSpecificData(editConfiguration, vreq);
@@ -62,7 +69,7 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
private void setVarNames(EditConfigurationVTwo editConfiguration) {
- editConfiguration.setVarNameForSubject("infoResource");
+ editConfiguration.setVarNameForSubject("person");
editConfiguration.setVarNameForPredicate("predicate");
editConfiguration.setVarNameForObject("authorshipUri");
@@ -77,14 +84,45 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
/***N3 strings both required and optional***/
private List generateN3Optional() {
- // TODO Auto-generated method stub
- return null;
+ return list(getN3ForExistingPub(),
+ getN3ForNewPub(),
+ getN3NewPubNameAssertion(),
+ getN3NewPubTypeAssertion());
}
private List generateN3Required() {
- // TODO Auto-generated method stub
- return null;
+ return list(getAuthorshipN3());
+ }
+
+ private String getAuthorshipN3() {
+ return "@prefix core: <" + vivoCore + "> . " +
+ "?authorshipUri a core:Authorship ;" +
+ "core:linkedAuthor ?person ." +
+ "?person core:authorInAuthorship ?authorshipUri .";
+ }
+
+ private String getN3ForExistingPub() {
+ return "@prefix core: <" + vivoCore + "> ." +
+ "?authorshipUri core:linkedInformationResource ?pubUri ." +
+ "?pubUri core:informationResourceInAuthorship ?authorshipUri .";
+ }
+
+ private String getN3ForNewPub() {
+ return "@prefix core: <" + vivoCore + "> ." +
+ "?pubUri a ?pubType ;" +
+ "<" + label + "> ?title ." +
+ "?authorshipUri core:linkedInformationResource ?pubUri ." +
+ "?pubUri core:informationResourceInAuthorship ?authorshipUri .";
+ }
+
+ private String getN3NewPubNameAssertion() {
+ return "?pubUri <" + label + "> ?title .";
+ }
+
+ private String getN3NewPubTypeAssertion() {
+ return "?pubUri a ?pubType . ";
+
}
/** Get new resources */
@@ -92,17 +130,18 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
String DEFAULT_NS_TOKEN=null; //null forces the default NS
HashMap newResources = new HashMap();
- newResources.put("role", DEFAULT_NS_TOKEN);
- newResources.put("roleActivity", DEFAULT_NS_TOKEN);
- newResources.put("intervalNode", DEFAULT_NS_TOKEN);
- newResources.put("startNode", DEFAULT_NS_TOKEN);
- newResources.put("endNode", DEFAULT_NS_TOKEN);
+ newResources.put("authorshipUri", DEFAULT_NS_TOKEN);
+ newResources.put("pubUri", DEFAULT_NS_TOKEN);
return newResources;
}
/** Set URIS and Literals In Scope and on form and supporting methods */
private void setUrisAndLiteralsInScope(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
HashMap> urisInScope = new HashMap>();
+ urisInScope.put(editConfiguration.getVarNameForSubject(),
+ Arrays.asList(new String[]{editConfiguration.getSubjectUri()}));
+ urisInScope.put(editConfiguration.getVarNameForPredicate(),
+ Arrays.asList(new String[]{editConfiguration.getPredicateUri()}));
editConfiguration.setUrisInScope(urisInScope);
HashMap> literalsInScope = new HashMap>();
editConfiguration.setLiteralsInScope(literalsInScope);
@@ -112,26 +151,23 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
List urisOnForm = new ArrayList();
//add role activity and roleActivityType to uris on form
- urisOnForm.add("roleActivity");
- urisOnForm.add("roleActivityType");
- //Also adding the predicates
- //TODO: Check how to override this in case of default parameter? Just write hidden input to form?
- urisOnForm.add("roleToActivityPredicate");
- urisOnForm.add("activityToRolePredicate");
+ urisOnForm.add("pubUri");
+ urisOnForm.add("pubType");
editConfiguration.setUrisOnform(urisOnForm);
//activity label and role label are literals on form
List literalsOnForm = new ArrayList();
- literalsOnForm.add("activityLabel");
- literalsOnForm.add("roleLabel");
+ literalsOnForm.add("title");
editConfiguration.setLiteralsOnForm(literalsOnForm);
}
/** Set SPARQL Queries and supporting methods. */
+ //In this case no queries for existing
private void setSparqlQueries(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
- //Queries for activity label, role label, start Field value, end Field value
- HashMap map = new HashMap();
- editConfiguration.setSparqlForExistingUris(map);
+ editConfiguration.setSparqlForExistingUris(new HashMap());
+ editConfiguration.setSparqlForAdditionalLiteralsInScope(new HashMap());
+ editConfiguration.setSparqlForAdditionalUrisInScope(new HashMap());
+ editConfiguration.setSparqlForExistingLiterals(new HashMap());
}
/**
@@ -139,15 +175,98 @@ public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenera
* Set Fields and supporting methods
*/
- private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) {
-
+ private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
+ setTitleField(editConfiguration);
+ setPubTypeField(editConfiguration);
+ setPubUriField(editConfiguration);
}
- //Form specific data
- public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
- HashMap formSpecificData = new HashMap();
- editConfiguration.setFormSpecificData(formSpecificData);
+ private void setTitleField(EditConfigurationVTwo editConfiguration) {
+ String stringDatatypeUri = XSD.xstring.toString();
+ editConfiguration.addField(new FieldVTwo().
+ setName("title").
+ setValidators(list("datatype:" + stringDatatypeUri)).
+ setRangeDatatypeUri(stringDatatypeUri));
+
}
+
+
+
+ private void setPubTypeField(EditConfigurationVTwo editConfiguration) {
+ editConfiguration.addField(new FieldVTwo().
+ setName("pubType").
+ setOptionsType("HARDCODED_LITERALS").
+ setLiteralOptions(getPublicationTypeLiteralOptions()));
+ }
+
+
+
+
+
+ private void setPubUriField(EditConfigurationVTwo editConfiguration) {
+ editConfiguration.addField(new FieldVTwo().
+ setName("pubUri").
+ setObjectClassUri(personClass));
+ }
+
+
+ private List> getPublicationTypeLiteralOptions() {
+ List> literalOptions = new ArrayList>();
+ literalOptions.add(list("http://purl.org/ontology/bibo/AcademicArticle", "Academic Article"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Article", "Article"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/AudioDocument", "Audio Document"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#BlogPosting", "Blog Posting"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Book", "Book"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#CaseStudy", "Case Study"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Catalog", "Catalog"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Chapter", "Chapter"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#ConferencePaper", "Conference Paper"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#ConferencePoster", "Conference Poster"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Database", "Database"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/EditedBook", "Edited Book"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#EditorialArticle", "Editorial Article"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Film", "Film"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Newsletter", "Newsletter"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#NewsRelease", "News Release"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Patent", "Patent"));
+ literalOptions.add(list("http://purl.obolibrary.org/obo/OBI_0000272", "Protocol"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Report", "Report"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#ResearchProposal", "Research Proposal"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Review", "Review"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Software", "Software"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Speech", "Speech"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Thesis", "Thesis"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#Video", "Video"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Webpage", "Webpage"));
+ literalOptions.add(list("http://purl.org/ontology/bibo/Website", "Website"));
+ literalOptions.add(list("http://vivoweb.org/ontology/core#WorkingPaper", "Working Paper"));
+ return literalOptions;
+ }
+
+
+
+ //Form specific data
+ public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
+ HashMap formSpecificData = new HashMap();
+ formSpecificData.put("editMode", getEditMode(vreq).name().toLowerCase());
+ formSpecificData.put("sparqlForAcFilter", getSparqlForAcFilter(vreq));
+ editConfiguration.setFormSpecificData(formSpecificData);
+ }
+
+ public String getSparqlForAcFilter(VitroRequest vreq) {
+ String subject = EditConfigurationUtils.getSubjectUri(vreq);
+
+ String query = "PREFIX core:<" + vivoCore + "> " +
+ "SELECT ?pubUri WHERE { " +
+ "<" + subject + "> core:authorInAuthorship ?authorshipUri ." +
+ "?authorshipUri core:linkedInformationResource ?pubUri . }";
+ return query;
+ }
+
+ public EditMode getEditMode(VitroRequest vreq) {
+ return EditModeUtils.getEditMode(vreq, list("http://vivoweb.org/ontology/core#linkedInformationResource"));
+ }
+
}