Fixing build, adding unit tests
This commit is contained in:
parent
1446b9c039
commit
107c64dbf8
10 changed files with 145 additions and 61 deletions
|
@ -5,10 +5,10 @@ package edu.cornell.mannlib.vitro.webapp.edit;
|
||||||
import com.hp.hpl.jena.rdf.model.*;
|
import com.hp.hpl.jena.rdf.model.*;
|
||||||
import com.hp.hpl.jena.datatypes.RDFDatatype;
|
import com.hp.hpl.jena.datatypes.RDFDatatype;
|
||||||
import com.hp.hpl.jena.graph.Node;/**
|
import com.hp.hpl.jena.graph.Node;/**
|
||||||
* bdc34: I needed to have a representation of a rdf literal for
|
* bdc34: I needed to have a representation of a RDF literal for
|
||||||
* editing. Jena seems to have a Model associated with the literals and
|
* editing. Jena seems to have a Model associated with the literals and
|
||||||
* has deprecated the creation of simple Literals as if they were data
|
* has depreciated the creation of simple Literals as if they were data
|
||||||
* structures. So this code was writen.
|
* structures. So this code was written.
|
||||||
*
|
*
|
||||||
* THESE MAY NOT BE USED AS LITERALS WITH THE JENA LIBRARY
|
* THESE MAY NOT BE USED AS LITERALS WITH THE JENA LIBRARY
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -93,14 +93,17 @@ public class EditConfigurationVTwo {
|
||||||
/** When this is a DataPropertyStmt edit, the object is not used, the
|
/** When this is a DataPropertyStmt edit, the object is not used, the
|
||||||
* DataPropertyStatement is retrieved using the subject, predicate and the
|
* DataPropertyStatement is retrieved using the subject, predicate and the
|
||||||
* datapropKey. When this edit is for a ObjectPropertyStmt,
|
* datapropKey. When this edit is for a ObjectPropertyStmt,
|
||||||
* object is the uri without the quoting < or >.
|
* object is the URI, it has no quoting or < or >.
|
||||||
*/
|
*/
|
||||||
String object;
|
String object;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This can be the variable name for the object of a statement in
|
||||||
|
* a object property or data property form.
|
||||||
|
*/
|
||||||
String varNameForObject;
|
String varNameForObject;
|
||||||
|
|
||||||
Integer datapropKey=null;
|
Integer datapropKey=null;
|
||||||
String datapropValue;
|
|
||||||
|
|
||||||
|
|
||||||
/** urlPatternToReturnTo is the URL to use as the servlet to return to.
|
/** urlPatternToReturnTo is the URL to use as the servlet to return to.
|
||||||
* Usually it is "/individual" and entityToReturnTo will be added as a
|
* Usually it is "/individual" and entityToReturnTo will be added as a
|
||||||
|
@ -194,8 +197,7 @@ public class EditConfigurationVTwo {
|
||||||
editConfig.setVarNameForObject(this.getVarNameForObject());
|
editConfig.setVarNameForObject(this.getVarNameForObject());
|
||||||
|
|
||||||
editConfig.setDatapropKey(this.getDatapropKey());
|
editConfig.setDatapropKey(this.getDatapropKey());
|
||||||
//original set datapropValue, which in this case would be empty string but no way here
|
|
||||||
editConfig.setDatapropValue(this.datapropValue);
|
|
||||||
editConfig.setUrlPatternToReturnTo(this.getUrlPatternToReturnTo());
|
editConfig.setUrlPatternToReturnTo(this.getUrlPatternToReturnTo());
|
||||||
|
|
||||||
//n3 required
|
//n3 required
|
||||||
|
@ -686,11 +688,6 @@ public class EditConfigurationVTwo {
|
||||||
this.datapropKey = datapropKey;
|
this.datapropKey = datapropKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
//to allow for external setting
|
|
||||||
public void setDatapropValue(String datapropValue) {
|
|
||||||
this.datapropValue = datapropValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubjectUri() {
|
public String getSubjectUri() {
|
||||||
return subjectUri;
|
return subjectUri;
|
||||||
}
|
}
|
||||||
|
|
|
@ -321,6 +321,7 @@ public class ProcessRdfForm {
|
||||||
List<String> optionalAsserts, List<String> requiredRetracts,
|
List<String> optionalAsserts, List<String> requiredRetracts,
|
||||||
List<String> optionalRetracts) {
|
List<String> optionalRetracts) {
|
||||||
if( !log.isDebugEnabled() ) return;
|
if( !log.isDebugEnabled() ) return;
|
||||||
|
log.debug(msg);
|
||||||
logSubstitueN3( msg, requiredAsserts, "required assertions");
|
logSubstitueN3( msg, requiredAsserts, "required assertions");
|
||||||
logSubstitueN3( msg, optionalAsserts, "optional assertions");
|
logSubstitueN3( msg, optionalAsserts, "optional assertions");
|
||||||
logSubstitueN3( msg, requiredRetracts, "required retractions");
|
logSubstitueN3( msg, requiredRetracts, "required retractions");
|
||||||
|
@ -328,7 +329,7 @@ public class ProcessRdfForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logSubstitueN3(String msg, List<String> n3, String label){
|
private void logSubstitueN3(String msg, List<String> n3, String label){
|
||||||
if( n3 == null) return;
|
if( n3 == null || n3.size() == 0) return;
|
||||||
String out = label + ":\n";
|
String out = label + ":\n";
|
||||||
for( String str : n3 ){
|
for( String str : n3 ){
|
||||||
out += " " + str + "\n";
|
out += " " + str + "\n";
|
||||||
|
|
|
@ -91,10 +91,13 @@ public class DefaultDataPropertyFormGenerator extends BaseEditConfigurationGener
|
||||||
|
|
||||||
String subjectUri = editConfiguration.getSubjectUri();
|
String subjectUri = editConfiguration.getSubjectUri();
|
||||||
String predicateUri = editConfiguration.getPredicateUri();
|
String predicateUri = editConfiguration.getPredicateUri();
|
||||||
Integer dataHash = editConfiguration.getDatapropKey();
|
Integer dataHash = editConfiguration.getDatapropKey();
|
||||||
|
|
||||||
|
if( predicateUri == null )
|
||||||
|
throw new Error("predicateUri was null");
|
||||||
|
|
||||||
DataProperty dataproperty = dataPropertyDao.getDataPropertyByURI( predicateUri );
|
DataProperty dataproperty = dataPropertyDao.getDataPropertyByURI( predicateUri );
|
||||||
if( dataproperty == null )
|
if( dataproperty == null && ! VitroVocabulary.LABEL.equals( predicateUri ))
|
||||||
throw new Error("could not get data property for " + predicateUri);
|
throw new Error("could not get data property for " + predicateUri);
|
||||||
|
|
||||||
DataPropertyStatement dps = null;
|
DataPropertyStatement dps = null;
|
||||||
|
@ -105,32 +108,46 @@ public class DefaultDataPropertyFormGenerator extends BaseEditConfigurationGener
|
||||||
if (dps==null){
|
if (dps==null){
|
||||||
throw new Error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+dataHash);
|
throw new Error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+dataHash);
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
//Put data property statement's literal in scope
|
//Put data property statement's literal in scope
|
||||||
//TODO: Check if multiple statements might affect this implementation?
|
//TODO: Check if multiple statements might affect this implementation?
|
||||||
editConfiguration.addLiteralInScope(literalVar, new EditLiteral(dps.getData(),dps.getDatatypeURI(), dps.getLanguage()) );
|
editConfiguration.addLiteralInScope(
|
||||||
|
editConfiguration.getVarNameForObject(),
|
||||||
String statementDataType = null;
|
new EditLiteral(dps.getData(),dps.getDatatypeURI(), dps.getLanguage()) );
|
||||||
String statementLang = null;
|
|
||||||
|
dataTypeDebug( dps, dataproperty );
|
||||||
statementDataType = dps.getDatatypeURI();
|
|
||||||
if( statementDataType == null ){
|
|
||||||
log.debug("no range datatype uri set on data property statement when property's range datatype is "+dataproperty.getRangeDatatypeURI()+" in DefaultDataPropertyFormGenerator");
|
|
||||||
} else {
|
|
||||||
log.debug("range datatype uri of ["+statementDataType+"] on data property statement in DefaultDataPropertyFormGenerator");
|
|
||||||
}
|
|
||||||
statementLang = dps.getLanguage();
|
|
||||||
if( statementLang == null ) {
|
|
||||||
log.debug("no language attribute on data property statement in DefaultDataPropertyFormGenerator");
|
|
||||||
}else{
|
|
||||||
log.debug("language attribute of ["+statementLang+"] on data property statement in DefaultDataPropertyFormGenerator");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void dataTypeDebug(DataPropertyStatement dps,
|
||||||
|
DataProperty dataproperty) {
|
||||||
|
if( dps == null )
|
||||||
|
return;
|
||||||
|
|
||||||
|
String statementDataType = null;
|
||||||
|
String statementLang = null;
|
||||||
|
|
||||||
|
statementLang = dps.getLanguage();
|
||||||
|
if( statementLang == null ) {
|
||||||
|
log.debug("no language attribute on data property statement in DefaultDataPropertyFormGenerator");
|
||||||
|
}else{
|
||||||
|
log.debug("language attribute of ["+statementLang+"] on data property statement in DefaultDataPropertyFormGenerator");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( dataproperty == null )
|
||||||
|
return;
|
||||||
|
|
||||||
|
statementDataType = dps.getDatatypeURI();
|
||||||
|
if( statementDataType == null ){
|
||||||
|
log.debug("no range datatype uri set on data property statement when property's range datatype is "+dataproperty.getRangeDatatypeURI()+" in DefaultDataPropertyFormGenerator");
|
||||||
|
} else {
|
||||||
|
log.debug("range datatype uri of ["+statementDataType+"] on data property statement in DefaultDataPropertyFormGenerator");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -130,8 +130,6 @@ public class DefaultDeleteGenerator implements EditConfigurationGenerator {
|
||||||
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
|
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
|
||||||
//set data prop value, data prop key str,
|
//set data prop value, data prop key str,
|
||||||
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
|
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
|
||||||
//original set datapropValue, which in this case would be empty string but no way here
|
|
||||||
editConfiguration.setDatapropValue("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,19 +47,13 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
|
||||||
private Log log = LogFactory.getLog(DefaultObjectPropertyFormGenerator.class);
|
private Log log = LogFactory.getLog(DefaultObjectPropertyFormGenerator.class);
|
||||||
|
|
||||||
private String subjectUri = null;
|
private String subjectUri = null;
|
||||||
private String predicateUri = null;
|
private String predicateUri = null;
|
||||||
private String datapropKeyStr= null;
|
private Integer dataHash = null;
|
||||||
private int dataHash = 0;
|
|
||||||
private DataPropertyStatement dps = null;
|
|
||||||
private String literalName = "label";
|
private String literalName = "label";
|
||||||
|
|
||||||
private String template = "rdfsLabelForm.ftl";
|
private String template = "rdfsLabelForm.ftl";
|
||||||
private static HashMap<String,String> defaultsForXSDtypes ;
|
|
||||||
static {
|
|
||||||
defaultsForXSDtypes = new HashMap<String,String>();
|
|
||||||
//defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00");
|
|
||||||
defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now");
|
|
||||||
}
|
|
||||||
@Override
|
@Override
|
||||||
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
|
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
|
||||||
//Check if an edit configuration exists and return that, otherwise create a new one
|
//Check if an edit configuration exists and return that, otherwise create a new one
|
||||||
|
@ -145,18 +139,13 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
|
||||||
|
|
||||||
|
|
||||||
private void initDataParameters(VitroRequest vreq, HttpSession session) {
|
private void initDataParameters(VitroRequest vreq, HttpSession session) {
|
||||||
dataHash = EditConfigurationUtils.getDataHash(vreq);
|
dataHash = EditConfigurationUtils.getDataHash(vreq);
|
||||||
dps = EditConfigurationUtils.getDataPropertyStatement(vreq, session, dataHash, predicateUri);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
|
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
|
||||||
//set data prop value, data prop key str,
|
//set data prop value, data prop key str,
|
||||||
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
|
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
|
||||||
editConfiguration.setVarNameForObject(literalName);
|
editConfiguration.setVarNameForObject(literalName);
|
||||||
|
|
||||||
//original set datapropValue, which in this case would be empty string but no way here
|
|
||||||
editConfiguration.setDatapropValue("");
|
|
||||||
editConfiguration.setUrlPatternToReturnTo("/entity");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get N3 required
|
//Get N3 required
|
||||||
|
@ -333,10 +322,9 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
|
||||||
private void prepareForUpdate(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
|
private void prepareForUpdate(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
|
||||||
//Here, retrieve model from
|
//Here, retrieve model from
|
||||||
Model model = (Model) session.getServletContext().getAttribute("jenaOntModel");
|
Model model = (Model) session.getServletContext().getAttribute("jenaOntModel");
|
||||||
if(datapropKeyStr != null && datapropKeyStr.trim().length() > 0 ) {
|
if( editConfiguration.isDataPropertyUpdate() ){
|
||||||
editConfiguration.prepareForDataPropUpdate(model, vreq.getWebappDaoFactory().getDataPropertyDao());
|
editConfiguration.prepareForDataPropUpdate(model, vreq.getWebappDaoFactory().getDataPropertyDao());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class BasicValidationVTwoTest {
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Test
|
||||||
|
public void testHttpUrlValidate() {
|
||||||
|
BasicValidationVTwo bv = new BasicValidationVTwo(Collections.EMPTY_MAP);
|
||||||
|
String res;
|
||||||
|
res = bv.validate("httpUrl", "http://example.com/index");
|
||||||
|
Assert.assertEquals(res, BasicValidationVTwo.SUCCESS);
|
||||||
|
|
||||||
|
res = bv.validate("httpUrl", "http://example.com/index?bogus=skjd%20skljd&something=sdkf");
|
||||||
|
Assert.assertEquals(res, BasicValidationVTwo.SUCCESS);
|
||||||
|
|
||||||
|
res = bv.validate("httpUrl", "http://example.com/index#2.23?bogus=skjd%20skljd&something=sdkf");
|
||||||
|
Assert.assertEquals(res, BasicValidationVTwo.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Test
|
||||||
|
public void testEmptyValidate(){
|
||||||
|
BasicValidationVTwo bv = new BasicValidationVTwo(Collections.EMPTY_MAP);
|
||||||
|
|
||||||
|
Assert.assertEquals(
|
||||||
|
bv.validate("nonempty", null)
|
||||||
|
, BasicValidationVTwo.REQUIRED_FIELD_EMPTY_MSG);
|
||||||
|
|
||||||
|
|
||||||
|
Assert.assertEquals(
|
||||||
|
bv.validate("nonempty", "")
|
||||||
|
, BasicValidationVTwo.REQUIRED_FIELD_EMPTY_MSG);
|
||||||
|
|
||||||
|
Assert.assertEquals(
|
||||||
|
bv.validate("nonempty", "some value")
|
||||||
|
, BasicValidationVTwo.SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import stubs.javax.servlet.http.HttpServletRequestStub;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
|
||||||
|
public class EditConfigurationUtilsTest {
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetEditKey() {
|
||||||
|
HttpServletRequestStub req = new HttpServletRequestStub();
|
||||||
|
req.addParameter("datapropKey", "2343");
|
||||||
|
|
||||||
|
Integer hash = EditConfigurationUtils.getDataHash(new VitroRequest(req));
|
||||||
|
Assert.assertNotNull(hash);
|
||||||
|
Assert.assertEquals(new Integer(2343), hash);
|
||||||
|
|
||||||
|
|
||||||
|
req = new HttpServletRequestStub();
|
||||||
|
|
||||||
|
hash = EditConfigurationUtils.getDataHash(new VitroRequest(req));
|
||||||
|
Assert.assertNull( hash);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -121,7 +121,7 @@
|
||||||
DataPropertyStatement dps = null;
|
DataPropertyStatement dps = null;
|
||||||
if( dataHash != 0) {
|
if( dataHash != 0) {
|
||||||
Model model = (Model)application.getAttribute("jenaOntModel");
|
Model model = (Model)application.getAttribute("jenaOntModel");
|
||||||
dps = RdfLiteralHash.getPropertyStmtByHash(subject, predicateUri, dataHash, model);
|
dps = RdfLiteralHash.getPropertyStmtByHash(subject.getURI(), predicateUri, dataHash, model);
|
||||||
|
|
||||||
if (dps==null) {
|
if (dps==null) {
|
||||||
log.error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+datapropKeyStr);
|
log.error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+datapropKeyStr);
|
||||||
|
|
|
@ -374,7 +374,7 @@ and set a flag in the request to indicate "back button confusion"
|
||||||
|
|
||||||
Model model = (Model)application.getAttribute("jenaOntModel");
|
Model model = (Model)application.getAttribute("jenaOntModel");
|
||||||
int dpropHash = Integer.parseInt(editConfig.getDatapropKey());
|
int dpropHash = Integer.parseInt(editConfig.getDatapropKey());
|
||||||
DataPropertyStatement dps = RdfLiteralHash.getPropertyStmtByHash(subject, editConfig.getPredicateUri(), dpropHash, model);
|
DataPropertyStatement dps = RdfLiteralHash.getPropertyStmtByHash(subject.getURI(), editConfig.getPredicateUri(), dpropHash, model);
|
||||||
|
|
||||||
if (dps != null)
|
if (dps != null)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue