Fixing build, adding unit tests

This commit is contained in:
briancaruso 2011-11-16 14:56:11 +00:00
parent 1446b9c039
commit 107c64dbf8
10 changed files with 145 additions and 61 deletions

View file

@ -5,10 +5,10 @@ package edu.cornell.mannlib.vitro.webapp.edit;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.datatypes.RDFDatatype;
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
* has deprecated the creation of simple Literals as if they were data
* structures. So this code was writen.
* has depreciated the creation of simple Literals as if they were data
* structures. So this code was written.
*
* THESE MAY NOT BE USED AS LITERALS WITH THE JENA LIBRARY
*/

View file

@ -93,14 +93,17 @@ public class EditConfigurationVTwo {
/** When this is a DataPropertyStmt edit, the object is not used, the
* DataPropertyStatement is retrieved using the subject, predicate and the
* 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;
/**
* This can be the variable name for the object of a statement in
* a object property or data property form.
*/
String varNameForObject;
Integer datapropKey=null;
String datapropValue;
/** urlPatternToReturnTo is the URL to use as the servlet to return to.
* Usually it is "/individual" and entityToReturnTo will be added as a
@ -194,8 +197,7 @@ public class EditConfigurationVTwo {
editConfig.setVarNameForObject(this.getVarNameForObject());
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());
//n3 required
@ -686,11 +688,6 @@ public class EditConfigurationVTwo {
this.datapropKey = datapropKey;
}
//to allow for external setting
public void setDatapropValue(String datapropValue) {
this.datapropValue = datapropValue;
}
public String getSubjectUri() {
return subjectUri;
}

View file

@ -321,6 +321,7 @@ public class ProcessRdfForm {
List<String> optionalAsserts, List<String> requiredRetracts,
List<String> optionalRetracts) {
if( !log.isDebugEnabled() ) return;
log.debug(msg);
logSubstitueN3( msg, requiredAsserts, "required assertions");
logSubstitueN3( msg, optionalAsserts, "optional assertions");
logSubstitueN3( msg, requiredRetracts, "required retractions");
@ -328,7 +329,7 @@ public class ProcessRdfForm {
}
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";
for( String str : n3 ){
out += " " + str + "\n";

View file

@ -93,8 +93,11 @@ public class DefaultDataPropertyFormGenerator extends BaseEditConfigurationGener
String predicateUri = editConfiguration.getPredicateUri();
Integer dataHash = editConfiguration.getDatapropKey();
if( predicateUri == null )
throw new Error("predicateUri was null");
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);
DataPropertyStatement dps = null;
@ -105,32 +108,46 @@ public class DefaultDataPropertyFormGenerator extends BaseEditConfigurationGener
if (dps==null){
throw new Error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+dataHash);
}else{
//Put data property statement's literal in scope
//TODO: Check if multiple statements might affect this implementation?
editConfiguration.addLiteralInScope(literalVar, new EditLiteral(dps.getData(),dps.getDatatypeURI(), dps.getLanguage()) );
String statementDataType = null;
String statementLang = null;
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");
}
editConfiguration.addLiteralInScope(
editConfiguration.getVarNameForObject(),
new EditLiteral(dps.getData(),dps.getDatatypeURI(), dps.getLanguage()) );
dataTypeDebug( dps, dataproperty );
}
}
}
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");
}
}
}

View file

@ -130,8 +130,6 @@ public class DefaultDeleteGenerator implements EditConfigurationGenerator {
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
//set data prop value, data prop key str,
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
//original set datapropValue, which in this case would be empty string but no way here
editConfiguration.setDatapropValue("");
}

View file

@ -48,18 +48,12 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
private String subjectUri = null;
private String predicateUri = null;
private String datapropKeyStr= null;
private int dataHash = 0;
private DataPropertyStatement dps = null;
private Integer dataHash = null;
private String literalName = "label";
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
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {
//Check if an edit configuration exists and return that, otherwise create a new one
@ -146,17 +140,12 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
private void initDataParameters(VitroRequest vreq, HttpSession session) {
dataHash = EditConfigurationUtils.getDataHash(vreq);
dps = EditConfigurationUtils.getDataPropertyStatement(vreq, session, dataHash, predicateUri);
}
private void processDataPropForm(VitroRequest vreq, EditConfigurationVTwo editConfiguration) {
//set data prop value, data prop key str,
editConfiguration.setDatapropKey( EditConfigurationUtils.getDataHash(vreq) );
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
@ -333,10 +322,9 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
private void prepareForUpdate(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
//Here, retrieve model from
Model model = (Model) session.getServletContext().getAttribute("jenaOntModel");
if(datapropKeyStr != null && datapropKeyStr.trim().length() > 0 ) {
if( editConfiguration.isDataPropertyUpdate() ){
editConfiguration.prepareForDataPropUpdate(model, vreq.getWebappDaoFactory().getDataPropertyDao());
}
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -121,7 +121,7 @@
DataPropertyStatement dps = null;
if( dataHash != 0) {
Model model = (Model)application.getAttribute("jenaOntModel");
dps = RdfLiteralHash.getPropertyStmtByHash(subject, predicateUri, dataHash, model);
dps = RdfLiteralHash.getPropertyStmtByHash(subject.getURI(), predicateUri, dataHash, model);
if (dps==null) {
log.error("No match to existing data property \""+predicateUri+"\" statement for subject \""+subjectUri+"\" via key "+datapropKeyStr);

View file

@ -374,7 +374,7 @@ and set a flag in the request to indicate "back button confusion"
Model model = (Model)application.getAttribute("jenaOntModel");
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)
return false;