Many changes to ProcessRdfForm.java

This commit is contained in:
briancaruso 2011-11-09 23:24:22 +00:00
parent 776241d423
commit 57934c5aec
3 changed files with 157 additions and 130 deletions

View file

@ -6,7 +6,13 @@
<#import "lib-vivo-form.ftl" as lvf>
<#if editConfig.object?has_content>
<#assign subjectName="Fake name hardcoded in FTL"/>
<#assign requiredHint="*"/>
<#assign yearHint="Do it his year!!!"/>
<#assign roleActivityUri="mysteryRoleActivityURI"/>
<#assign orgLabel="mysteryOrgLabel"/>
<#if editConfiguration.object?has_content>
<#assign editMode = "edit">
<#else>
<#assign editMode = "add">
@ -25,14 +31,17 @@
<#assign requiredHint = "<span class='requiredHint'> *</span>" />
<#assign yearHint = "<span class='hint'>(YYYY)</span>" />
<#--
<#if editMode = “ERROR”>
<div>This form is unable to handle the editing of this position because it is associated with
multiple Position individuals.</div>
<#else>
-->
<h2>${titleVerb}&nbsp;educational training entry for ${subjectName}</h2>
<#--
<#if errorTypeFieldIsEmpty??>
<#assign errorMessage = "Select a type of organization." />
</#if>
@ -40,6 +49,7 @@
<#if errorNameFieldIsEmpty??>
<#assign errorMessage = "Enter a name for the organization." />
</#if>
-->
<#if errorMessage?has_content>
<section id="error-alert" role="alert">
@ -49,32 +59,29 @@
</#if>
<section id="personHasEducationalTraining" role="region">
<@lvf.unsupportedBrowser>
<div id="ie67DisableWrapper">
<div id="ie67DisableContent">
<img src="/vivo/site_icons/iconAlertBig.png" alt="Alert Icon"/>
<p>This form is not supported in versions of Internet Explorer below version 8. Please upgrade your browser, or
switch to another browser, such as FireFox.</p>
</div>
</div>
<form id="personHasEducationalTraining" class="customForm noIE67" action="${submitUrl}" role="add/edit educational training">
<label for="orgType">Select Organization Type ${requiredHint}</label>
<select id="typeSelector" name="orgType" disabled="${disabledVal}" >
<option value="" selected="selected">Select one</option>
<#list rangeOptionKeys as key>
<opton value="${key}"
<#if editConfiguration.objectUri?has_contant && editConfiguration.object.Uri = key>selected</#if>
</#list>
</select>
<#assign orgTypeOpts = editConfiguration.pageData.orgType />
<select id="typeSelector" name="orgType" >
<option value="" selected="selected">Select one</option>
<#list orgTypeOpts?keys as key>
<#if editConfiguration.objectUri?has_content && editConfiguration.objectUri = key>
<option value="${key}" selected >${orgTypeOpts[key]}</option>
<#else>
<option value="${key}">${orgTypeOpts[key]}</option>
</#if>
</#list>
</select>
<p>
<label for="relatedIndLabel">Organization Name ${requiredHint}</label>
<input class="acSelector" size="50" type="text" id="relatedIndLabel" name="orgLabel" disabled="${disabledVal}" value="${???}" />
<input class="acSelector" size="50" type="text" id="relatedIndLabel" name="orgLabel" disabled="${disabledVal}" value="" />
</p>
<div class="acSelection">
<p class="inline">
<label>Selected Organization:</label>
@ -85,43 +92,50 @@
<input class="acLabelReceiver" type="hidden" id="existingOrgLabel" name="existingOrgLabel" value="${orgLabel}" />
</div>
<p>
<label for="dept">Department or School Name within the Organization</label>
<input size="50" type="text" id="dept" name="dept" value="" />
</p>
<div class="entry">
<label for="degreeUri">Degree</label>
<select name="degreeUri" id="degreeUri" >
<option value="" selected="selected">Select one</option>
<#list rangeOptionKeys as key>
<opton value="${key}"
<#if editConfiguration.objectUri?has_contant && editConfiguration.object.Uri = key>selected</#if>
</#list>
<#assign degreeOpts = editConfiguration.pageData.degree />
<select name="degree" id="degreeUri" >
<option value="" selected="selected">Select one</option>
<#list degreeOpts?keys as key>
<option value="${key}">${degreeOpts[key]}</option>
</#list>
</select>
</div>
<p>
<label for="majorField">Major Field of Degree</label>
<input type="text" id="majorField" name="majorField" size="30" value="${???}"/>
<input type="text" id="majorField" name="majorField" size="30" value=""/>
</p>
<p>
<label for="info">Supplemental Information</label>
<input size="50" type="text" id="info" name="info" value="${???}" />
<input size="50" type="text" id="info" name="info" value="" />
<p>e.g., <em>Postdoctoral training</em> or <em>Transferred</em></p>
</p>
<label for="startField">Start Year ${yearHint}</label>
<fieldset class="dateTime">
<input class="text-field" name="startField-year" id="startField-year" type="text" value="${startYear}" size="4" maxlength="4" />
<input class="text-field" name="startField-year" id="startField-year" type="text" value="" size="4" maxlength="4" />
</fieldset>
<label for="endField">End Year ${yearHint}</label>
<fieldset class="dateTime">
<input class="text-field" name="endField-year" id="endField-year" type="text" value="${endYear}" size="4" maxlength="4" />
<input class="text-field" name="endField-year" id="endField-year" type="text" value="" size="4" maxlength="4" />
</fieldset>
<input type="hidden" id="editKey" name="editKey" value="${editConfiguration.editKey}"/>
<p class="submit">
<input type="submit" id="submit" value="editConfiguration.submitLabel"/><span class="or"> or </span><a class="cancel" href="${editConfiguration.cancelUrl}">Cancel</a>
<input type="submit" id="submit" value="editConfiguration.submitLabel"/><span class="or"> or </span>
<a class="cancel" href="${editConfiguration.cancelUrl}">Cancel</a>
</p>
<p id="requiredLegend" class="requiredHint">* required fields</p>
@ -130,14 +144,18 @@
<#assign acUrl="/autocomplete?tokenize=true&stem=true" >
<#--
<script type="text/javascript">
var customFormData = {
acUrl: '${acUrl?url}',
acUrl: '${acUrl}',
editMode: '${editMode}',
submitButtonTextType: 'compound',
defaultTypeName: 'organization'
};
</script>
-->
</section>
</#if>

View file

@ -2,14 +2,14 @@
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import com.hp.hpl.jena.vocabulary.XSD;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
@ -66,11 +66,13 @@ public class PersonHasEducationalTraining extends VivoBaseGenerator implements
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
EditConfigurationVTwo conf = new EditConfigurationVTwo();
initBasics(conf, vreq);
initPropertyParameters(vreq, session, conf);
initObjectPropForm(conf, vreq);
conf.setTemplate("personHasEducationalTraining.ftl");
conf.setVarNameForSubject("person");
conf.setVarNameForPredicate("predicate");
conf.setVarNameForObject("edTraining");
@ -107,7 +109,7 @@ public class PersonHasEducationalTraining extends VivoBaseGenerator implements
conf.addSparqlForExistingUris("endNode", existingEndNodeQuery);
conf.addSparqlForExistingUris("startField-precision", existingStartPrecisionQuery);
conf.addSparqlForExistingUris("endField-precision", existingEndPrecisionQuery);
conf.addField( new FieldVTwo().
setName("degree").
setOptionsType( FieldVTwo.OptionsType.INDIVIDUALS_VIA_VCLASS ).
@ -118,15 +120,7 @@ public class PersonHasEducationalTraining extends VivoBaseGenerator implements
setName("majorField").
setRangeDatatypeUri( XSD.xstring.toString() ).
setAssertions( majorFieldAssertion ));
//setValidators( ) datatype:stringDatatypeUriJson
conf.addField( new FieldVTwo().
setName("startField").
setAssertions(n3ForStart));
conf.addField( new FieldVTwo().
setName("endField").
setAssertions(n3ForEnd));
//setValidators( ) datatype:stringDatatypeUriJson
conf.addField( new FieldVTwo().
setName("org").
@ -158,10 +152,25 @@ public class PersonHasEducationalTraining extends VivoBaseGenerator implements
setName("info").
setRangeDatatypeUri( XSD.xstring.toString() ).
setAssertions( infoAssertion));
conf.addField(new FieldVTwo().
setName("startField").
setAssertions(n3ForStart).
setEditElement(
new DateTimeWithPrecisionVTwo(null,
VitroVocabulary.Precision.YEAR.uri(),
VitroVocabulary.Precision.NONE.uri())));
conf.addField( new FieldVTwo().
setName("endField").
setAssertions(n3ForEnd).
setEditElement(
new DateTimeWithPrecisionVTwo(null,
VitroVocabulary.Precision.YEAR.uri(),
VitroVocabulary.Precision.NONE.uri())));
return conf;
}
/* N3 assertions for working with educational training */
@ -170,135 +179,135 @@ public class PersonHasEducationalTraining extends VivoBaseGenerator implements
"?org a ?orgType .";
final static String orgLabelAssertion =
"?org "+ label +" ?orgLabel .";
"?org <"+ label +"> ?orgLabel .";
final static String degreeAssertion =
"?edTraining "+ degreeEarned +" ?degree ."+
"?degree "+ degreeOutcomeOf +" ?edTraining .";
"?edTraining <"+ degreeEarned +"> ?degree .\n"+
"?degree <"+ degreeOutcomeOf +"> ?edTraining .";
final static String majorFieldAssertion =
"?edTraining "+ majorFieldPred +" ?majorField .";
"?edTraining <"+ majorFieldPred +"> ?majorField .";
final static String n3ForStart =
"?edTraining "+ ToInterval +" ?intervalNode . "+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToStart +" ?startNode . "+
"?startNode "+ type +" "+ dateTimeValueType +" ."+
"?startNode "+ dateTimeValue +" ?startField-value ."+
"?startNode "+ dateTimePrecision +" ?startField-precision .";
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?startNode <"+ dateTimeValue +"> ?startField-value .\n"+
"?startNode <"+ dateTimePrecision +"> ?startField-precision .";
final static String n3ForEnd =
"?edTraining "+ ToInterval +" ?intervalNode . "+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToEnd +" ?endNode ."+
"?endNode "+ type +" "+ dateTimeValueType +" ."+
"?endNode "+ dateTimeValue +" ?endField-value ."+
"?endNode "+ dateTimePrecision +" ?endField-precision .";
"?edTraining <"+ toInterval +"> ?intervalNode . \n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimeValue +"> ?endField-value .\n"+
"?endNode <"+ dateTimePrecision +"> ?endField-precision .";
final static String deptAssertion =
"?edTraining "+ deptPred +" ?dept .";
"?edTraining <"+ deptPred +"> ?dept .";
final static String infoAssertion =
"?edTraining "+ infoPred +" ?info .";
"?edTraining <"+ infoPred +"> ?info .";
final static String n3ForNewEdTraining =
"@prefix core: "+ vivoCore +" . "+
"?person core:educationalTraining ?edTraining ."+
"?edTraining a core:EducationalTraining ;"+
"core:educationalTrainingOf ?person ;"+
""+ trainingAtOrg +" ?org .";
"@prefix core: <"+ vivoCore +"> .\n"+
"?person core:educationalTraining ?edTraining .\n"+
"?edTraining a core:EducationalTraining ;\n"+
"core:educationalTrainingOf ?person ;\n"+
"<"+ trainingAtOrg +"> ?org .\n";
final static String n3ForEdTrainingToOrg =
"?edTraining "+ trainingAtOrg +" ?org .";
"?edTraining <"+ trainingAtOrg +"> ?org .";
/* Queries for editing an existing educational training entry */
final static String orgQuery =
"SELECT ?existingOrg WHERE {"+
"?edTraining "+ trainingAtOrg +" ?existingOrg . }";
"SELECT ?existingOrg WHERE {\n"+
"?edTraining <"+ trainingAtOrg +"> ?existingOrg . }\n";
final static String orgLabelQuery =
"SELECT ?existingOrgLabel WHERE {"+
"?edTraining "+ trainingAtOrg +" ?existingOrg ."+
"?existingOrg "+ label +" ?existingOrgLabel ."+
"SELECT ?existingOrgLabel WHERE {\n"+
"?edTraining <"+ trainingAtOrg +"> ?existingOrg .\n"+
"?existingOrg "+ label +" ?existingOrgLabel .\n"+
"}";
/* Limit type to subclasses of foaf:Organization. Otherwise, sometimes owl:Thing or another
type is returned and we don't get a match to the select element options. */
final static String orgTypeQuery =
"PREFIX rdfs: "+ rdfs +" "+
"SELECT ?existingOrgType WHERE {"+
"?edTraining "+ trainingAtOrg +" ?existingOrg ."+
"?existingOrg a ?existingOrgType ."+
"?existingOrgType rdfs:subClassOf "+ orgClass +" ."+
"PREFIX rdfs: <"+ rdfs +"> \n"+
"SELECT ?existingOrgType WHERE {\n"+
"?edTraining <"+ trainingAtOrg +"> ?existingOrg .\n"+
"?existingOrg a ?existingOrgType .\n"+
"?existingOrgType rdfs:subClassOf "+ orgClass +" .\n"+
"}";
final static String degreeQuery =
"SELECT ?existingDegree WHERE {"+
"SELECT ?existingDegree WHERE {\n"+
"?edTraining "+ degreeEarned +" ?existingDegree . }";
final static String majorFieldQuery =
"SELECT ?existingMajorField WHERE {"+
"?edTraining "+ majorFieldPred +" ?existingMajorField . }";
"SELECT ?existingMajorField WHERE {\n"+
"?edTraining <"+ majorFieldPred +"> ?existingMajorField . }";
final static String deptQuery =
"SELECT ?existingDept WHERE {"+
"?edTraining "+ deptPred +" ?existingDept . }";
"SELECT ?existingDept WHERE {\n"+
"?edTraining <"+ deptPred +"> ?existingDept . }";
final static String infoQuery =
"SELECT ?existingInfo WHERE {"+
"?edTraining "+ infoPred +" ?existingInfo . }";
"SELECT ?existingInfo WHERE {\n"+
"?edTraining <"+ infoPred +"> ?existingInfo . }";
final static String existingIntervalNodeQuery =
"SELECT ?existingIntervalNode WHERE {"+
"?edTraining "+ ToInterval +" ?existingIntervalNode ."+
"?existingIntervalNode "+ type +" "+ intervalType +" . }";
"SELECT ?existingIntervalNode WHERE {\n"+
"?edTraining <"+ toInterval +"> ?existingIntervalNode .\n"+
"?existingIntervalNode <"+ type +"> <"+ intervalType +"> . }";
final static String existingStartNodeQuery =
"SELECT ?existingStartNode WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToStart +" ?existingStartNode . "+
"?existingStartNode "+ type +" "+ dateTimeValueType +" .} ";
"SELECT ?existingStartNode WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?existingStartNode . \n"+
"?existingStartNode <"+ type +"> <"+ dateTimeValueType +"> .}";
final static String existingStartDateQuery =
"SELECT ?existingDateStart WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToStart +" ?startNode ."+
"?startNode "+ type +" "+ dateTimeValueType +" ."+
"?startNode "+ dateTimeValue +" ?existingDateStart . }";
"SELECT ?existingDateStart WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?startNode <"+ dateTimeValue +"> ?existingDateStart . }";
final static String existingStartPrecisionQuery =
"SELECT ?existingStartPrecision WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToStart +" ?startNode ."+
"?startNode "+ type +" "+ dateTimeValueType +" . "+
"?startNode "+ dateTimePrecision +" ?existingStartPrecision . }";
"SELECT ?existingStartPrecision WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToStart +"> ?startNode .\n"+
"?startNode <"+ type +"> <"+ dateTimeValueType +"> . \n"+
"?startNode <"+ dateTimePrecision +"> ?existingStartPrecision . }";
final static String existingEndNodeQuery =
"SELECT ?existingEndNode WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToEnd +" ?existingEndNode . "+
"?existingEndNode "+ type +" "+ dateTimeValueType +" .} ";
"SELECT ?existingEndNode WHERE { \n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?existingEndNode . \n"+
"?existingEndNode <"+ type +"> <"+ dateTimeValueType +"> .}";
final static String existingEndDateQuery =
"SELECT ?existingEndDate WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToEnd +" ?endNode ."+
"?endNode "+ type +" "+ dateTimeValueType +" ."+
"?endNode "+ dateTimeValue +" ?existingEndDate . }";
"SELECT ?existingEndDate WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimeValue +"> ?existingEndDate . }";
final static String existingEndPrecisionQuery =
"SELECT ?existingEndPrecision WHERE {"+
"?edTraining "+ ToInterval +" ?intervalNode ."+
"?intervalNode "+ type +" "+ intervalType +" ."+
"?intervalNode "+ intervalToEnd +" ?endNode ."+
"?endNode "+ type +" "+ dateTimeValueType +" . "+
"?endNode "+ dateTimePrecision +" ?existingEndPrecision . }";
"SELECT ?existingEndPrecision WHERE {\n"+
"?edTraining <"+ toInterval +"> ?intervalNode .\n"+
"?intervalNode <"+ type +"> <"+ intervalType +"> .\n"+
"?intervalNode <"+ intervalToEnd +"> ?endNode .\n"+
"?endNode <"+ type +"> <"+ dateTimeValueType +"> .\n"+
"?endNode <"+ dateTimePrecision +"> ?existingEndPrecision . }";
}

View file

@ -29,7 +29,7 @@ public abstract class VivoBaseGenerator extends BaseEditConfigurationGenerator i
final static String dateTimeValueType =vivoCore+"DateTimeValue";
final static String dateTimePrecision =vivoCore+"dateTimePrecision";
final static String ToInterval =vivoCore+"dateTimeInterval";
final static String toInterval =vivoCore+"dateTimeInterval";
final static String intervalType =vivoCore+"DateTimeInterval";
final static String intervalToStart =vivoCore+"start";
final static String intervalToEnd =vivoCore+"end";