//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.history; import com.google.common.collect.ImmutableMap; /** * This helper utility allows the core history events to be created in a type * safe manner. * * * */ public class HistoryEvents { public static final String ADDED_TYPE = "added"; public static final String MERGED_TYPE = "merged"; public static final String REMOVED_TYPE = "removed"; public static final String PARAM_MERGED_ID = "mergedId"; private HistoryEvents() { } /** * Create a history event which represents a merge. * * @param timestamp * the timestamp of the merge * @param recordable * the recordable which was remains * @param referrer * the object which merged the entities * @param mergedId * the item which was merged into the recordable */ public static HistoryEvent createMerged(long timestamp, Recordable recordable, String referrer, long mergedId) { return new RecordableHistoryEvent(MERGED_TYPE, timestamp, recordable, referrer, String.format("merged [%d]", mergedId), ImmutableMap.of(PARAM_MERGED_ID, Long.toString(mergedId))); } /** * /** Create a history event which represents a merge, with a specific * time. * * @param recordable * the recordable which was remains * @param referrer * the object which merged the entities * @param mergedId * the item which was merged into the recordable * @return */ public static HistoryEvent createMerged(Recordable recordable, String referrer, long mergedId) { return createMerged(System.currentTimeMillis(), recordable, referrer, mergedId); } /** * New history signifying the addition of a recordable, with timestamp. * * @param timestamp * the time of creation * @param recordable * the created recordable * @param referrer * the object which performed the action */ public static HistoryEvent createAdded(long timestamp, Recordable recordable, String referrer) { return new RecordableHistoryEvent(ADDED_TYPE, timestamp, recordable, referrer, "added"); } /** * New history signifying the addition of a recordable, with now as the * timestamp. * * @param recordable * the created recordable * @param referrer * the object which performed the action */ public static HistoryEvent createAdded(Recordable recordable, String referrer) { return createAdded(System.currentTimeMillis(), recordable, referrer); } /** * New history signifying the removal/deletion of a recordable, with * timestamp. * * @param timestamp * the timestamp of the event * @param recordable * the recordable which was removed * @param referrer * the object which removed the recordable */ public static HistoryEvent createRemoved(long timestamp, Recordable recordable, String referrer) { return new RecordableHistoryEvent(REMOVED_TYPE, timestamp, recordable, referrer, "removed"); } /** * New history signifying the removal/deletion of a recordable, with now as * timestamp. * * * @param recordable * the recordable which was removed * @param referrer * the object which removed the recordable */ public static HistoryEvent createRemoved(Recordable recordable, String referrer) { return createRemoved(System.currentTimeMillis(), recordable, referrer); } }