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)

Gets a number of instances moved to trash, for entity with given class name. This will only consider the instances, that have been moved to trash on the current entity schema version.

  • className – fully qualified entity class name

trash instances count


void emptyTrash(Collection<String> entitiesClassNames)

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.

  • entitiesClassNames – the list of class names for which the trash should get cleared


Object findTrashById(Long trashId, String entityClassName)

Return instance with given id from trash.

  • trashId – id of the trash instance
  • entityClassName – the className of the 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 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.
  • schemaVersion – the current version of the schema for the entity

See also: .isTrashMode()


void removeFromTrash(Object trash)

Deletes trashed instance from trash.

  • trash – trashed instance to be removed


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.