Skip to content

Conditional Delivery Of Deleted Objects

Consider a data table called Order. The table contains a column named orderAmount. The code below adds a listener for the delete event for the Order table.

EventHandler<Map> orderEventHandler = Backendless.Data.of( "Order" ).rt();

orderEventHandler.addDeleteListener( "orderAmount > 1000", new AsyncCallback<Map>()
{
  @Override
  public void handleResponse( Map deletedOrder )
  {
    Log.i( "MYAPP", "an Order object has been deleted. Object ID - " + deletedOrder.get( "objectId" ) );
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
     Log.e( "MYAPP", "Server reported an error " + fault.getDetail() );
  }
} );
EventHandler<Order> orderEventHandler = Backendless.Data.of( Order.class ).rt();

orderEventHandler.addDeleteListener( "orderAmount > 1000", new AsyncCallback<Order>()
{
  @Override
  public void handleResponse( Order deletedOrder )
  {
    Log.i( "MYAPP", "an Order object has been deleted. Object ID - " + deletedOrder.objectId ); 
  }

  @Override
  public void handleFault( BackendlessFault fault )
  {
     Log.e( "MYAPP", "Server reported an error " + fault.getDetail() );
  }
} );

The event listener will receive only the deleted Order objects with the order amount exceeding 1000. This is achieved with the first argument in the addDeleteListener method. The argument is a where clause condition, which references the orderAmount column and requests that the real-time database sends only the matching objects. The second argument is a callback object which will receive any deleted object which matches the where clause condition. Notice the argument of the response callback method is the actual object deleted from the database.

For more information about the whereClause syntax, see the Condition Syntax section of the guide.