#118 - ENH: Add support for for Soft Deletes (Logical Deletion) ... - initial

This commit is contained in:
Robin Bygrave
2015-12-01 23:21:11 +13:00
parent 51bee836d4
commit 0ad52cf6a7
24 changed files with 531 additions and 105 deletions
@@ -229,6 +229,10 @@ public class BeanProperty implements ElPropertyValue {
final boolean draftReset;
final boolean softDelete;
final Object softDeleteValue;
final boolean indexed;
final String indexName;
@@ -258,6 +262,8 @@ public class BeanProperty implements ElPropertyValue {
this.draftDirty = deploy.isDraftDirty();
this.draftOnly = deploy.isDraftOnly();
this.draftReset = deploy.isDraftReset();
this.softDelete = deploy.isSoftDelete();
this.softDeleteValue = deploy.getSoftDeleteValue();
this.secondaryTable = deploy.isSecondaryTable();
if (secondaryTable) {
@@ -345,6 +351,8 @@ public class BeanProperty implements ElPropertyValue {
this.draftDirty = source.draftDirty;
this.draftOnly = source.draftOnly;
this.draftReset = source.draftReset;
this.softDelete = source.softDelete;
this.softDeleteValue = source.softDeleteValue;
this.fetchEager = source.fetchEager;
this.unidirectionalShadow = source.unidirectionalShadow;
this.discriminator = source.discriminator;
@@ -616,6 +624,25 @@ public class BeanProperty implements ElPropertyValue {
}
}
public String getSoftDeleteDbSet() {
return dbColumn +"=true";
}
/**
* Return the DB literal predicate used to filter out soft deleted rows from a query.
*/
public String getSoftDeleteDbPredicate(String tableAlias) {
return tableAlias+"."+dbColumn+"=false";
}
/**
* Set the soft delete property value on the bean without invoking lazy loading.
*/
public void setSoftDeleteValue(EntityBean bean) {
setValue(bean, softDeleteValue);
bean._ebean_getIntercept().setChangedProperty(propertyIndex);
}
/**
* Set the value of the property without interception or
* PropertyChangeSupport.
@@ -1056,6 +1083,13 @@ public class BeanProperty implements ElPropertyValue {
return draftReset;
}
/**
* Return true if this property is the soft delete property.
*/
public boolean isSoftDelete() {
return softDelete;
}
/**
* Return true if this property should be included in an Insert.
*/