class AbstractDao implements CrudDao<T, ID> {

  private void updateAuditInfo(final Object value) {
    updateAuditInfo(value, principalName.get(), new Date(),
      mapper.getCreatedByColumnName(), mapper.getCreatedDateColumnName(),
      mapper.getUpdatedByColumnName(), mapper.getUpdatedDateColumnName());
  }

  protected  AbstractDao(Mapper<T, ID> mapper, Supplier<Object, Object, Object, Object> supplier);

}