public interface TrashService

The TrashService provides methods related with the module trash mode (by default the mode is active and it can be turned off by the user).



long countTrashRecords(String className)


void emptyTrash()

Cleans the module trash. All instances in trash should be removed permanently and if they contain any historical data they should also be removed permanently.

This method should only be executed by the job created in the scheduleEmptyTrashJob() method.


Object findTrashById(Object instanceId, Object entityId)

Return instance with given id from trash.

  • instanceId – id of instance
  • entityId – id of instance entity


Collection getInstancesFromTrash(String entityName, QueryParams queryParams)

Returns the collection of instances from trash of a certain entity. Returned collection contains only instances that are on the current schema version.

  • entityName – Instances of what entity should be looked for
  • queryParams – Query parameters such as page number, size of page and sort direction. If null method will return all records in trash.

Collection of instances on the current schema version in trash


boolean isTrashMode()

Checks if trash mode is active. This method should be used before executing the moveToTrash(Object,Long) method to resolve whether the given instance should be moved to trash or removed permanently.

Returns:true if delete mode is equal to org.motechproject.mds.config.DeleteMode.TRASH; false otherwise.


void moveFromTrash(Object newInstance, Object trash)

Sets history for given trashed instance to match the new one and deletes trashed one from trash.

  • newInstance – instance to be returned from trash
  • trash – trashed instance to be removed


void moveToTrash(Object instance, Long schemaVersion)

Moves the given instance to the trash. This method should only be executed, when the module trash mode is active.

  • instance – an instance created from the given entity definition.

See also: .isTrashMode()


void scheduleEmptyTrashJob()

Sets the repeating schedule job that will be executed from time to time. Execution time depends on the value of time value and time unit (defined in org.motechproject.mds.util.Constants.Config.MODULE_FILE).

Before scheduling new job, the old one should be unscheduled to prevent the errors.