001package org.nuxeo.box.api.marshalling.dao;
002
003import com.fasterxml.jackson.annotation.JsonProperty;
004
005import java.util.Map;
006
007public class BoxEvent extends BoxItem {
008
009    // Json fields.
010    public final static String FIELD_EVENT_TYPE = "event_type";
011
012    public final static String FIELD_SOURCE = "source";
013
014    public final static String FIELD_EVENT_ID = "event_id";
015
016    // Event types.
017    public static final String EVENT_TYPE_ITEM_CREATE = "ITEM_CREATE";
018
019    public static final String EVENT_TYPE_ITEM_UPLOAD = "ITEM_UPLOAD";
020
021    public static final String EVENT_TYPE_COMMENT_CREATE = "COMMENT_CREATE";
022
023    public static final String EVENT_TYPE_ITEM_DOWNLOAD = "ITEM_DOWNLOAD";
024
025    public static final String EVENT_TYPE_ITEM_PREVIEW = "ITEM_PREVIEW";
026
027    public static final String EVENT_TYPE_ITEM_MOVE = "ITEM_MOVE";
028
029    public static final String EVENT_TYPE_ITEM_COPY = "ITEM_COPY";
030
031    public static final String EVENT_TYPE_TASK_ASSIGNMENT_CREATE = "TASK_ASSIGNMENT_CREATE";
032
033    public static final String EVENT_TYPE_LOCK_CREATE = "LOCK_CREATE";
034
035    public static final String EVENT_TYPE_LOCK_DESTROY = "LOCK_DESTROY";
036
037    public static final String EVENT_TYPE_ITEM_TRASH = "ITEM_TRASH";
038
039    public static final String EVENT_TYPE_ITEM_UNDELETE_VIA_TRASH = "ITEM_UNDELETE_VIA_TRASH";
040
041    public static final String EVENT_TYPE_COLLAB_ADD_COLLABORATOR = "COLLAB_ADD_COLLABORATOR";
042
043    public static final String EVENT_TYPE_COLLAB_INVITE_COLLABORATOR = "COLLAB_INVITE_COLLABORATOR";
044
045    public static final String EVENT_TYPE_ITEM_SYNC = "ITEM_SYNC";
046
047    public static final String EVENT_TYPE_ITEM_UNSYNC = "ITEM_UNSYNC";
048
049    public static final String EVENT_TYPE_ITEM_RENAME = "ITEM_RENAME";
050
051    public static final String EVENT_TYPE_ITEM_SHARED_CREATE = "ITEM_SHARED_CREATE";
052
053    public static final String EVENT_TYPE_ITEM_SHARED_UNSHARE = "ITEM_SHARED_UNSHARE";
054
055    public static final String EVENT_TYPE_ITEM_SHARED = "ITEM_SHARED";
056
057    public static final String EVENT_TYPE_TAG_ITEM_CREATE = "TAG_ITEM_CREATE";
058
059    public static final String EVENT_TYPE_ADD_LOGIN_ACTIVITY_DEVICE = "ADD_LOGIN_ACTIVITY_DEVICE";
060
061    /**
062     * Constructor.
063     */
064    public BoxEvent() {
065        setType(BoxResourceType.EVENT.toString());
066    }
067
068    /**
069     * Copy constructor, this does deep copy for all the fields.
070     *
071     * @param obj
072     */
073    public BoxEvent(BoxEvent obj) {
074        super(obj);
075    }
076
077    /**
078     * Instantiate the object from a map. Each entry in the map reflects to a field.
079     *
080     * @param map
081     */
082    public BoxEvent(Map<String, Object> map) {
083        super(map);
084    }
085
086    /**
087     * Get event id.
088     *
089     * @return event id.
090     */
091    @Override
092    @JsonProperty(FIELD_EVENT_ID)
093    public String getId() {
094        return (String) getValue(FIELD_EVENT_ID);
095    }
096
097    /**
098     * Setter. This is only used by {@see <a href="http://jackson.codehaus .org">Jackson JSON processer</a>}
099     *
100     * @param eventId Event id.
101     */
102    @JsonProperty(FIELD_EVENT_ID)
103    private void setId(String eventId) {
104        put(FIELD_EVENT_ID, eventId);
105    }
106
107    /**
108     * Get event type.
109     *
110     * @return event type.
111     */
112    @JsonProperty(FIELD_EVENT_TYPE)
113    public String getEventType() {
114        return (String) getValue(FIELD_EVENT_TYPE);
115    }
116
117    /**
118     * Setter. This is only used by {@see <a href="http://jackson.codehaus .org">Jackson JSON processer</a>}
119     *
120     * @param eventType Event type. See http://developers.box.com/docs/#events
121     */
122    @JsonProperty(FIELD_EVENT_TYPE)
123    private void setEventType(String eventType) {
124        put(FIELD_EVENT_TYPE, eventType);
125    }
126
127    /**
128     * Get the source item for this event.
129     *
130     * @return source item of this event.
131     */
132    @JsonProperty(FIELD_SOURCE)
133    public BoxTypedObject getSource() {
134        return (BoxTypedObject) getValue(FIELD_SOURCE);
135    }
136
137    /**
138     * Set the source item for this event.
139     *
140     * @param sourceItem source item for this event.
141     */
142    @JsonProperty(FIELD_SOURCE)
143    private void setSource(BoxTypedObject sourceItem) {
144        put(FIELD_SOURCE, sourceItem);
145    }
146
147}