Adding a new boolean property to ObjectProperty. NIHVIVO-118
This commit is contained in:
parent
b00f1c50e2
commit
87a97cd8df
7 changed files with 85 additions and 8 deletions
|
@ -75,6 +75,8 @@ public class ObjectProperty extends Property implements Comparable<ObjectPropert
|
|||
private boolean offerCreateNewOption = false;
|
||||
private boolean forceStubObjectDeletion = false;
|
||||
|
||||
private boolean collateBySubclass = false;
|
||||
|
||||
public ObjectProperty() {
|
||||
super();
|
||||
}
|
||||
|
@ -252,6 +254,14 @@ public class ObjectProperty extends Property implements Comparable<ObjectPropert
|
|||
public void setInverseFunctional(boolean inverseFunctional) {
|
||||
this.inverseFunctional = inverseFunctional;
|
||||
}
|
||||
|
||||
public void setCollateBySubclass(boolean collate) {
|
||||
collateBySubclass = collate;
|
||||
}
|
||||
|
||||
public boolean getCollateBySubclass() {
|
||||
return collateBySubclass;
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a single ObjectPropertyStatement object to Property's object property statements List.
|
||||
|
|
|
@ -191,7 +191,8 @@ public class PropertyRetryController extends BaseEditController {
|
|||
request.setAttribute("inverseFunctional",propertyForEditing.getInverseFunctional());
|
||||
request.setAttribute("selectFromExisting",propertyForEditing.getSelectFromExisting());
|
||||
request.setAttribute("offerCreateNewOption", propertyForEditing.getOfferCreateNewOption());
|
||||
request.setAttribute("forceStubObjectDeletion", propertyForEditing.getForceStubObjectDeletion());
|
||||
request.setAttribute("forceStubObjectDeletion", propertyForEditing.getForceStubObjectDeletion());
|
||||
request.setAttribute("collateBySubclass", propertyForEditing.getCollateBySubclass());
|
||||
|
||||
//checkboxes are pretty annoying : we don't know if someone *unchecked* a box, so we have to default to false on updates.
|
||||
if (propertyForEditing.getURI() != null) {
|
||||
|
@ -201,7 +202,8 @@ public class PropertyRetryController extends BaseEditController {
|
|||
propertyForEditing.setInverseFunctional(false);
|
||||
propertyForEditing.setSelectFromExisting(false);
|
||||
propertyForEditing.setOfferCreateNewOption(false);
|
||||
propertyForEditing.setForceStubObjectDeletion(false);
|
||||
propertyForEditing.setForceStubObjectDeletion(false);
|
||||
propertyForEditing.setCollateBySubclass(false);
|
||||
}
|
||||
|
||||
epo.setFormObject(foo);
|
||||
|
|
|
@ -108,7 +108,8 @@ public class VitroVocabulary {
|
|||
public static final String MASKS_PROPERTY = vitroURI + "masksProperty";
|
||||
public static final String SKIP_EDIT_FORM = vitroURI + "skipEditForm";
|
||||
public static final String PROPERTY_DEPENDENCYPROPERTYANNOT = vitroURI + "dependencyPropertyAnnot";
|
||||
|
||||
public static final String PROPERTY_COLLATEBYSUBCLASSANNOT = vitroURI + "collateBySubclassAnnot";
|
||||
|
||||
// ================== keyword related ==================================
|
||||
|
||||
public static final String KEYWORD = vitroURI+"Keyword";
|
||||
|
@ -277,8 +278,5 @@ public class VitroVocabulary {
|
|||
public static final String NAMESPACE_ISCURRENTPREFIXMAPPING = vitroURI + "isCurrentPrefixMapping";
|
||||
|
||||
public static final String ONTOLOGY_PREFIX_ANNOT = vitroURI + "ontologyPrefixAnnot";
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ public class JenaBaseDaoCon {
|
|||
protected AnnotationProperty PROPERTY_SELECTFROMEXISTINGANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_SELECTFROMEXISTINGANNOT);
|
||||
protected AnnotationProperty PROPERTY_OFFERCREATENEWOPTIONANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_OFFERCREATENEWOPTIONANNOT);
|
||||
protected AnnotationProperty PROPERTY_INPROPERTYGROUPANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_INPROPERTYGROUPANNOT);
|
||||
protected AnnotationProperty PROPERTY_COLLATEBYSUBCLASSANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_COLLATEBYSUBCLASSANNOT);
|
||||
protected OntClass PROPERTYGROUP = _constModel.createClass(VitroVocabulary.PROPERTYGROUP);
|
||||
|
||||
protected OntClass KEYWORD = _constModel.createClass(VitroVocabulary.KEYWORD);
|
||||
|
|
|
@ -223,6 +223,9 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp
|
|||
Boolean forceStubObjectDeletionObj = getPropertyBooleanValue(op,PROPERTY_FORCESTUBDELETIONANNOT);
|
||||
p.setForceStubObjectDeletion(forceStubObjectDeletionObj==null ? false : forceStubObjectDeletionObj);
|
||||
|
||||
Boolean collateBySubclass = getPropertyBooleanValue(op,PROPERTY_COLLATEBYSUBCLASSANNOT);
|
||||
p.setCollateBySubclass(collateBySubclass==null ? false : collateBySubclass);
|
||||
|
||||
// the <i> thing from the old system causes sorting problems and ugliness; here is an inelegant way of dealing with it for now (Note <i>s will disappear on update)
|
||||
if (p.getDomainSidePhasedOut() != null) {
|
||||
p.setDomainSidePhasedOut(stripItalics(p.getDomainSidePhasedOut()));
|
||||
|
@ -364,8 +367,7 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp
|
|||
com.hp.hpl.jena.ontology.ObjectProperty p = ontModel.createObjectProperty(prop.getURI());
|
||||
com.hp.hpl.jena.ontology.ObjectProperty inv = null;
|
||||
if (hasInverse(prop)) {
|
||||
System.out.println(prop.getURIInverse());
|
||||
System.out.println("non-null inverse URI");
|
||||
log.debug("non-null inverse URI: " +prop.getURIInverse());
|
||||
errMsgStr = getWebappDaoFactory().checkURI(prop.getURIInverse());
|
||||
if (errMsgStr != null) {
|
||||
throw new InsertException("Unusable URI for inverse property: "+errMsgStr);
|
||||
|
@ -603,6 +605,7 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp
|
|||
updatePropertyBooleanValue(p,PROPERTY_SELECTFROMEXISTINGANNOT,prop.getSelectFromExisting(),ontModel,JenaBaseDao.KEEP_ONLY_IF_FALSE);
|
||||
updatePropertyBooleanValue(p,PROPERTY_OFFERCREATENEWOPTIONANNOT,prop.getOfferCreateNewOption(),ontModel,JenaBaseDao.KEEP_ONLY_IF_TRUE);
|
||||
updatePropertyBooleanValue(p,PROPERTY_FORCESTUBDELETIONANNOT,prop.getForceStubObjectDeletion(),ontModel,JenaBaseDao.KEEP_ONLY_IF_TRUE);
|
||||
updatePropertyBooleanValue(p,PROPERTY_COLLATEBYSUBCLASSANNOT,prop.getCollateBySubclass(),ontModel,JenaBaseDao.KEEP_ONLY_IF_TRUE);
|
||||
try {
|
||||
p.removeAll(PROPERTY_INPROPERTYGROUPANNOT);
|
||||
if (prop.getGroupURI() != null && prop.getGroupURI().length()>0) {
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
package edu.cornell.mannlib.vitro.webapp.dao.jena;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.hp.hpl.jena.ontology.OntModel;
|
||||
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.InsertException;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||
|
||||
|
||||
public class ObjectPropertyDaoJenaTest {
|
||||
|
||||
@Test
|
||||
public void testCollateBySubclass(){
|
||||
/* Check that we can save collateBySubclass */
|
||||
OntModel model = ModelFactory.createOntologyModel();
|
||||
WebappDaoFactory wdf = new WebappDaoFactoryJena(model);
|
||||
|
||||
ObjectProperty op1 = new ObjectProperty();
|
||||
String propURI = "http://example.com/testObjectProp" ;
|
||||
op1.setURI(propURI);
|
||||
Assert.assertFalse(op1.getCollateBySubclass());
|
||||
try {
|
||||
wdf.getObjectPropertyDao().insertObjectProperty(op1);
|
||||
ObjectProperty op2 = wdf.getObjectPropertyDao().getObjectPropertyByURI(propURI);
|
||||
Assert.assertNotNull(op2);
|
||||
Assert.assertFalse(op2.getCollateBySubclass());
|
||||
|
||||
op2.setCollateBySubclass(true);
|
||||
wdf.getObjectPropertyDao().updateObjectProperty(op2);
|
||||
|
||||
ObjectProperty op3 = wdf.getObjectPropertyDao().getObjectPropertyByURI(propURI);
|
||||
Assert.assertNotNull(op3);
|
||||
Assert.assertTrue(op3.getCollateBySubclass());
|
||||
|
||||
op3.setCollateBySubclass(false);
|
||||
wdf.getObjectPropertyDao().updateObjectProperty(op3);
|
||||
|
||||
ObjectProperty op4 = wdf.getObjectPropertyDao().getObjectPropertyByURI(propURI);
|
||||
Assert.assertNotNull(op4);
|
||||
Assert.assertFalse(op4.getCollateBySubclass());
|
||||
|
||||
} catch (InsertException e) {
|
||||
Assert.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -151,6 +151,19 @@
|
|||
<font size="2" color="red"><form:error name="ObjectIndividualSortPropertyURI"/></font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="5">
|
||||
<c:choose>
|
||||
<c:when test="${collateBySubclass}">
|
||||
<input name="CollateBySubclass" type="checkbox" value="TRUE" checked="checked"/>collate by subclass
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input name="CollateBySubclass" type="checkbox" value="TRUE"/>collate by subclass
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<font size="2" color="red"><form:error name="CollateBySubclass"/></font>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="1">
|
||||
<c:choose>
|
||||
|
|
Loading…
Add table
Reference in a new issue