package com.psddev.cms.db; import java.util.Date; import java.util.Map; import java.util.UUID; import com.psddev.dari.db.Record; import com.psddev.dari.db.State; import com.psddev.dari.db.ObjectType; /** * Deleted object that can be restored later. * * @deprecated Use {@link Content.ObjectModification#setTrash} instead. */ @Deprecated public class Trash extends Record { @Indexed private Date deleteDate; @Indexed private ToolUser deleteUser; @Indexed private ObjectType objectType; @Indexed private UUID objectId; private Map<String, Object> objectValues; /** Creates a blank instance. */ protected Trash() { } /** Creates an instance based on the given {@code object}. */ public Trash(ToolUser user, Object object) { State objectState = State.getInstance(object); getState().setDatabase(objectState.getDatabase()); this.deleteDate = new Date(); this.deleteUser = user; this.objectType = objectState.getType(); this.objectId = objectState.getId(); this.objectValues = objectState.getValues(); } /** Returns the date when the object was deleted. */ public Date getDeleteDate() { return deleteDate; } /** Returns the user that deleted the object. */ public ToolUser getDeleteUser() { return deleteUser; } /** Returns the deleted object. */ public Object getObject() { if (objectType == null) { return null; } else { Object object = objectType.createObject(objectId); State state = State.getInstance(object); if (objectValues != null) { state.getValues().putAll(objectValues); } return object; } } }