diff --git a/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl b/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl new file mode 100644 index 00000000..be1d7c3d --- /dev/null +++ b/productMods/templates/freemarker/edit/forms/addAssociatedConcept.ftl @@ -0,0 +1,66 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> +<#import "lib-vivo-form.ftl" as lvf> + +<#assign existingConcepts = editConfiguration.pageData.existingConcepts/> +<#--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/> + + + + +

Manage Associated Concepts

+ +<#--Display error messages if any--> + + +<#if submissionErrors?has_content> + + + + +
+ + + +
\ No newline at end of file diff --git a/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl b/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl index c82f3cdd..728a0243 100644 --- a/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl +++ b/productMods/templates/freemarker/edit/forms/addAuthorsToInformationResource.ftl @@ -4,7 +4,20 @@ <#import "lib-vivo-form.ftl" as lf> -<#assign title="${infoResourceName}" /> +<#--Retrieve certain page specific information information--> +<#assign newRank = editConfiguration.pageData.newRank /> +<#assign existingAuthorInfo = editConfiguration.pageData.existingAuthorInfo /> +<#assign rankPredicate = editConfiguration.pageData.rankPredicate /> + +<#--Values from edit configuration to populate fields --> + +<#--UL class based on size of existing authors--> +<#assign urlClass = ""/> +<#if (existingAuthorInfo?size > 0)> + <#assign urlClass = "class='dd'"/> + + +<#assign title="${editConfiguration.subjectName}" /> <#assign requiredHint=" *" /> <#assign initialHint="(initial okay)" /> @@ -18,41 +31,38 @@ var authorshipData = []; -<#list authors as author> -
  • - <#-- span.author will be used in the next phase, when we display a message that the author has been - removed. That text will replace the a.authorName, which will be removed. --> - - <#-- This span is here to assign a width to. We can't assign directly to the a.authorName, - for the case when it's followed by an em tag - we want the width to apply to the whole thing. --> - - <#if author <#---->> - <#assign authorUri=author.URI /> - <#assign authorName=author.name /> - <#assign authorHref="/individual" /> - <#-- I don't know how to "translate"" this in to freemarker --> - ${authorName} - <#else> - <#assign authorUri="" /> - <#assign authorName="" /> - <#assign authorHref="/individual" /> - <#-- I don't know how to "translate" this in to freemarker --> - ${authorshipName} (no linked author) - - - - <#assign deleteAuthorshipHref="/edit/primitiveDelete" /> - Remove - -
  • - +<#assign authorHref="/individual?uri=" /> +<#--This should be a list of java objects where URI and name can be retrieved--> +<#list existingAuthorInfo as authorship> + <#local authorUri = authorship.authorUri/> + <#local authorName = authorship.authorName/> + +
  • + <#-- span.author will be used in the next phase, when we display a message that the author has been + removed. That text will replace the a.authorName, which will be removed. --> + + <#-- This span is here to assign a width to. We can't assign directly to the a.authorName, + for the case when it's followed by an em tag - we want the width to apply to the whole thing. --> + + <#if (authorUri?length > 0)> + ${authorName} + <#else> + ${authorship.authorshipName} (no linked author) + + + + Remove + +
  • + + <#--// A new author will be ranked last when added. @@ -65,10 +75,10 @@
    - + or - Return to Publication + Return to Publication
    @@ -92,12 +102,12 @@

    - - + + or - Cancel + Cancel

    * required fields

    @@ -105,16 +115,19 @@ +${stylesheets.add('')} ${stylesheets.add('', + '', '')} -${scripts.add('', - '', - '', + +${scripts.add(''), + '', + '', '')} \ No newline at end of file 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 991e6517..00e55421 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 @@ -124,9 +124,9 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements private void setVarNames(EditConfigurationVTwo editConfiguration) { - editConfiguration.setVarNameForSubject("person"); + editConfiguration.setVarNameForSubject("subject"); editConfiguration.setVarNameForPredicate("predicate"); - editConfiguration.setVarNameForObject("edTraining"); + editConfiguration.setVarNameForObject("conceptNode"); } protected void setTemplate(EditConfigurationVTwo editConfiguration, @@ -171,10 +171,8 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements */ private Map generateNewResources(VitroRequest vreq) { HashMap newResources = new HashMap(); - //TODO: Get default namespace - String defaultNamespace = vreq.getWebappDaoFactory().getDefaultNamespace(); - newResources.put("conceptNode", defaultNamespace + "individual"); - //Only the node itself will be new for a newly created concept node + //There are no new resources here, the concept node uri doesn't + //get created but already exists, and vocab uri should already exist as well return newResources; } @@ -221,6 +219,7 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements List urisOnForm = new ArrayList(); List literalsOnForm = new ArrayList(); //The URI of the node that defines the concept + urisOnForm.add("conceptURI"); urisOnForm.add("vocabURI"); //Also need to add the label of the concept literalsOnForm.add("conceptLabel"); @@ -249,7 +248,7 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements private HashMap generateSparqlForExistingUris(VitroRequest vreq) { HashMap map = new HashMap(); //Existing uris here might include is defined by - map.put("vocabURI", getExistingVocabURIQuery()); + //map.put("vocabURI", getExistingVocabURIQuery()); return map; } @@ -290,11 +289,23 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements */ private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) { - + setConceptNodeField(editConfiguration, vreq); setConceptLabelField(editConfiguration, vreq); setVocabURIField(editConfiguration, vreq); } + //this field will be hidden and include the concept node URI + private void setConceptNodeField(EditConfigurationVTwo editConfiguration, + VitroRequest vreq) { + editConfiguration.addField(new FieldVTwo(). + setName("conceptNode"). + setValidators(new ArrayList()). + setOptionsType("UNDEFINED")); + + } + + + private void setVocabURIField(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { editConfiguration.addField(new FieldVTwo(). 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 80bd2be8..2a7aae94 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 @@ -2,18 +2,386 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.servlet.http.HttpSession; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import com.hp.hpl.jena.rdf.model.Literal; +import com.hp.hpl.jena.vocabulary.RDFS; +import com.hp.hpl.jena.vocabulary.XSD; -public class AddAuthorsToInformationResourceGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator { +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.VTwo.DateTimeIntervalValidationVTwo; +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; + +public class AddAuthorsToInformationResourceGenerator extends VivoBaseGenerator implements EditConfigurationGenerator { @Override public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { - // TODO Auto-generated method stub - throw new Error(this.getClass().getName() + " is not yet implement"); + EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo(); + initBasics(editConfiguration, vreq); + initPropertyParameters(vreq, session, editConfiguration); + initObjectPropForm(editConfiguration, vreq); + //Overriding url to return to + setUrlToReturnTo(editConfiguration, vreq); + setVarNames(editConfiguration); + + + // Required N3 + editConfiguration.setN3Required(generateN3Required()); + + // Optional N3 + editConfiguration.setN3Optional( generateN3Optional()); + + editConfiguration.setNewResources( generateNewResources(vreq) ); + + //In scope + setUrisAndLiteralsInScope(editConfiguration, vreq); + + //on Form + setUrisAndLiteralsOnForm(editConfiguration, vreq); + + //Sparql queries + setSparqlQueries(editConfiguration, vreq); + + //set fields + setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq)); + + //template file + editConfiguration.setTemplate("addAuthorsToInformationResource.ftl"); + //no validators or preprocessors + + //Adding additional data, specifically edit mode + addFormSpecificData(editConfiguration, vreq); + return editConfiguration; } + + + + + private void setVarNames(EditConfigurationVTwo editConfiguration) { + editConfiguration.setVarNameForSubject("infoResource"); + editConfiguration.setVarNameForPredicate("predicate"); + editConfiguration.setVarNameForObject("authorshipUri"); + + } + + + + private void setUrlToReturnTo(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + editConfiguration.setUrlPatternToReturnTo(EditConfigurationUtils.getFormUrlWithoutContext(vreq)); + + } + + /***N3 strings both required and optional***/ + + public String getN3PrefixString() { + return "@prefix core: <" + vivoCore + "> ." + + "@prefix foaf: <" + foaf + "> . " ; + } + + + //n3 for new authorship, authorship rank assertion + private List generateN3Required() { + return list(getN3NewAuthorship(), + getN3AuthorshipRank()); + } + + private String getN3NewAuthorship() { + return getN3PrefixString() + + "?authorshipUri a core:Authorship ;" + + " core:linkedInformationResource ?infoResource ;" + + " core:authorRank ?rank . " + + "?infoResource core:informationResourceInAuthorship ?authorshipUri . "; + } + + private String getN3AuthorshipRank() { + return getN3PrefixString() + + "?authorshipUri core:authorRank ?rank ."; + } + + //first name, middle name, last name, and new perseon for new author being created, and n3 for existing person + //if existing person selected as author + private List generateN3Optional() { + return list(getN3NewPersonFirstName() , + getN3NewPersonMiddleName(), + getN3NewPersonLastName(), + getN3NewPerson(), + getN3ForExistingPerson()); + + } + + + private String getN3NewPersonFirstName() { + return getN3PrefixString() + + "?newPerson foaf:firstName ?firstName ."; + } + + private String getN3NewPersonMiddleName() { + return getN3PrefixString() + + "?newPerson core:middleName ?middleName ."; + } + + private String getN3NewPersonLastName() { + return getN3PrefixString() + + "?newPerson foaf:lastName ?lastName ."; + } + + private String getN3NewPerson() { + return getN3PrefixString() + + "?newPerson a foaf:Person ;" + + "<" + RDFS.label.getURI() + "> ?label ." + + "?authorshipUri core:linkedAuthor ?newPerson ." + + "?newPerson core:authorInAuthorship ?authorshipUri . "; + } + + private String getN3ForExistingPerson() { + return getN3PrefixString() + + "?authorshipUri core:linkedAuthor ?personUri ." + + "?personUri core:authorInAuthorship ?authorshipUri ."; + } + + /** Get new resources */ + //A new authorship uri will always be created when an author is added + //A new person may be added if a person not in the system will be added as author + private Map generateNewResources(VitroRequest vreq) { + String DEFAULT_NS_TOKEN=null; //null forces the default NS + + HashMap newResources = new HashMap(); + newResources.put("authorshipUri", DEFAULT_NS_TOKEN); + newResources.put("newPerson", DEFAULT_NS_TOKEN); + return newResources; + } + + /** Set URIS and Literals In Scope and on form and supporting methods */ + private void setUrisAndLiteralsInScope(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + //Uris in scope always contain subject and predicate + 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); + //no literals in scope + HashMap> literalsInScope = new HashMap>(); + editConfiguration.setLiteralsInScope(literalsInScope); + + } + + private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + List urisOnForm = new ArrayList(); + //If an existing person is being used as an author, need to get the person uri + urisOnForm.add("personUri"); + editConfiguration.setUrisOnform(urisOnForm); + + //for person who is not in system, need to add first name, last name and middle name + //Also need to store authorship rank and label of author + List literalsOnForm = list("firstName", + "middleName", + "lastName", + "rank", + "label"); + editConfiguration.setLiteralsOnForm(literalsOnForm); + } + + /** Set SPARQL Queries and supporting methods. */ + private void setSparqlQueries(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + //Sparql queries are all empty for existing values + //This form is different from the others that it gets multiple authors on the same page + //and that information will be queried and stored in the additional form specific data + HashMap map = new HashMap(); + editConfiguration.setSparqlForExistingUris(new HashMap()); + editConfiguration.setSparqlForExistingLiterals(new HashMap()); + editConfiguration.setSparqlForAdditionalUrisInScope(new HashMap()); + editConfiguration.setSparqlForAdditionalLiteralsInScope(new HashMap()); + } + + /** + * + * Set Fields and supporting methods + */ + + private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) { + setLabelField(editConfiguration); + setFirstNameField(editConfiguration); + setMiddleNameField(editConfiguration); + setLastNameField(editConfiguration); + setRankField(editConfiguration); + setPersonUriField(editConfiguration); + } + + private void setLabelField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("label"). + setValidators(list("datatype:" + XSD.xstring.toString())). + setRangeDatatypeUri(XSD.xstring.toString()) + ); + + } + + + private void setFirstNameField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("firstName"). + setValidators(list("datatype:" + XSD.xstring.toString())). + setRangeDatatypeUri(XSD.xstring.toString()) + ); + + } + + + private void setMiddleNameField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("middleName"). + setValidators(list("datatype:" + XSD.xstring.toString())). + setRangeDatatypeUri(XSD.xstring.toString()) + ); + + } + + + + + + private void setLastNameField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("lastName"). + setValidators(list("datatype:" + XSD.xstring.toString())). + setRangeDatatypeUri(XSD.xstring.toString()) + ); + + } + + private void setRankField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("rank"). + setValidators(list("nonempty")). + setRangeDatatypeUri(XSD.xint.toString()) + ); + + } + + + private void setPersonUriField(EditConfigurationVTwo editConfiguration) { + editConfiguration.addField(new FieldVTwo(). + setName("personUri"). + setValidators(list("")). + setObjectClassUri(personClass) + ); + + } + + //Form specific data + public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + HashMap formSpecificData = new HashMap(); + //Get the existing authorships + formSpecificData.put("existingAuthorInfo", getExistingAuthorships(vreq)); + formSpecificData.put("newRank", getMaxRank(vreq) + 1); + formSpecificData.put("rankPredicate", authorRankPredicate); + editConfiguration.setFormSpecificData(formSpecificData); + } + + private List getExistingAuthorships(VitroRequest vreq) { + Individual infoResource = EditConfigurationUtils.getSubjectIndividual(vreq); + List authorships = infoResource.getRelatedIndividuals( + EditConfigurationUtils.getPredicateUri(vreq)); + //TODO: Check if sorted correctly + sortAuthorshipIndividuals(authorships); + + return getAuthorshipInfo(authorships); + } + + private List getAuthorshipInfo( + List authorships) { + List info = new ArrayList(); + for ( Individual authorship : authorships ) { + String authorshipUri = authorship.getURI(); + String authorshipName = authorship.getName(); + String authorUri = ""; + String authorName = ""; + Individual author = authorship.getRelatedIndividual(linkedAuthorPredicate); + if(author != null) { + authorUri = author.getURI(); + authorName = author.getName(); + } + AuthorshipInfo aaInfo = new AuthorshipInfo(authorshipUri, authorshipName, authorUri, authorName); + info.add(aaInfo); + } + return info; + } + + private int getMaxRank(VitroRequest vreq) { + Individual infoResource = EditConfigurationUtils.getSubjectIndividual(vreq); + List authorships = infoResource.getRelatedIndividuals( + EditConfigurationUtils.getPredicateUri(vreq)); + sortAuthorshipIndividuals(authorships); + int maxRank = 0; + for(Individual authorship: authorships) { + DataPropertyStatement rankStmt = authorship.getDataPropertyStatement(authorRankPredicate); + if (rankStmt != null) { + maxRank = Integer.parseInt(rankStmt.getData()); + } + } + return maxRank; + } + + + + + private void sortAuthorshipIndividuals(List authorships) { + DataPropertyComparator comp = new DataPropertyComparator(authorRankPredicate); + Collections.sort(authorships, comp); + } + + //This is the information about authors the form will require + public class AuthorshipInfo { + //This is the authorship node information + private String authorshipUri; + private String authorshipName; + //Author information for authorship node + private String authorUri; + private String authorName; + + public AuthorshipInfo(String inputAuthorshipUri, + String inputAuthorshipName, + String inputAuthorUri, + String inputAuthorName) { + authorshipUri = inputAuthorshipUri; + authorshipName = inputAuthorshipName; + authorUri = inputAuthorUri; + authorName = inputAuthorName; + + } + + //Getters - specifically required for Freemarker template's access to POJO + public String getAuthorshipUri() { + return authorshipUri; + } + + public String getAuthorshipName() { + return authorshipName; + } + + public String getAuthorUri() { + return authorUri; + } + + public String getAuthorName() { + return authorName; + } + } + + } 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 a35c999f..bd719182 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 @@ -1,18 +1,153 @@ /* $This file is distributed under the terms of the license in /doc/license.txt$ */ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.servlet.http.HttpSession; +import com.hp.hpl.jena.rdf.model.Literal; + import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; public class AddPublicationToPersonGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator { - @Override - public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, - HttpSession session) { - // TODO Auto-generated method stub - throw new Error(this.getClass().getName() + " is not yet implement"); - } + @Override + public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, + HttpSession session) { + EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo(); + initBasics(editConfiguration, vreq); + initPropertyParameters(vreq, session, editConfiguration); + initObjectPropForm(editConfiguration, vreq); + //Overriding url to return to + setUrlToReturnTo(editConfiguration, vreq); + setVarNames(editConfiguration); + + + // Required N3 + editConfiguration.setN3Required(generateN3Required()); + + // Optional N3 + editConfiguration.setN3Optional( generateN3Optional()); + + editConfiguration.setNewResources( generateNewResources(vreq) ); + + //In scope + setUrisAndLiteralsInScope(editConfiguration, vreq); + + //on Form + setUrisAndLiteralsOnForm(editConfiguration, vreq); + + //Sparql queries + setSparqlQueries(editConfiguration, vreq); + + //set fields + setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq)); + + //template file + editConfiguration.setTemplate("addAuthorsToInformationResource.ftl"); + //no validators or preprocessors + + //Adding additional data, specifically edit mode + addFormSpecificData(editConfiguration, vreq); + return editConfiguration; + } + + + + + + private void setVarNames(EditConfigurationVTwo editConfiguration) { + editConfiguration.setVarNameForSubject("infoResource"); + editConfiguration.setVarNameForPredicate("predicate"); + editConfiguration.setVarNameForObject("authorshipUri"); + + } + + + + private void setUrlToReturnTo(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + editConfiguration.setUrlPatternToReturnTo(EditConfigurationUtils.getFormUrlWithoutContext(vreq)); + + } + + /***N3 strings both required and optional***/ + private List generateN3Optional() { + // TODO Auto-generated method stub + return null; + } + + + private List generateN3Required() { + // TODO Auto-generated method stub + return null; + } + + /** Get new resources */ + private Map generateNewResources(VitroRequest vreq) { + 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); + 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>(); + editConfiguration.setUrisInScope(urisInScope); + HashMap> literalsInScope = new HashMap>(); + editConfiguration.setLiteralsInScope(literalsInScope); + + } + + 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"); + editConfiguration.setUrisOnform(urisOnForm); + + //activity label and role label are literals on form + List literalsOnForm = new ArrayList(); + literalsOnForm.add("activityLabel"); + literalsOnForm.add("roleLabel"); + editConfiguration.setLiteralsOnForm(literalsOnForm); + } + + /** Set SPARQL Queries and supporting methods. */ + 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); + } + + /** + * + * Set Fields and supporting methods + */ + + private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) { + + } + + //Form specific data + public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + HashMap formSpecificData = new HashMap(); + editConfiguration.setFormSpecificData(formSpecificData); + } + } diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/VivoBaseGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/VivoBaseGenerator.java index 73690198..6e095621 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/VivoBaseGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/VivoBaseGenerator.java @@ -13,7 +13,7 @@ public abstract class VivoBaseGenerator extends BaseEditConfigurationGenerator i final static String vivoCore ="http://vivoweb.org/ontology/core#" ; final static String rdfs =VitroVocabulary.RDFS ; - + final static String foaf = "http://xmlns.com/foaf/0.1/"; final static String type =VitroVocabulary.RDF_TYPE ; final static String label =rdfs+"label" ; @@ -24,7 +24,9 @@ public abstract class VivoBaseGenerator extends BaseEditConfigurationGenerator i final static String degreeEarned =vivoCore+"degreeEarned" ; final static String degreeOutcomeOf =vivoCore+"degreeOutcomeOf" ; final static String trainingAtOrg =vivoCore+"trainingAtOrganization" ; - + final static String authorRankPredicate = vivoCore + "authorRank"; + final static String linkedAuthorPredicate = vivoCore + "linkedAuthor"; + final static String dateTimeValue =vivoCore+"dateTime"; final static String dateTimeValueType =vivoCore+"DateTimeValue"; final static String dateTimePrecision =vivoCore+"dateTimePrecision"; @@ -35,6 +37,7 @@ public abstract class VivoBaseGenerator extends BaseEditConfigurationGenerator i final static String intervalToEnd =vivoCore+"end"; final static String orgClass ="http://xmlns.com/foaf/0.1/Organization" ; + final static String personClass = foaf + "Person"; //TODO: Define these elsewhere final static String UMLSClass = vivoCore + "UMLS";