//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.history.helpers; import java.util.Collection; import java.util.stream.Collectors; import uk.gov.dstl.baleen.core.history.BaleenHistory; import uk.gov.dstl.baleen.core.history.DocumentHistory; import uk.gov.dstl.baleen.core.history.HistoryEvent; /** A basic parent class to help with the implementation of the document history. * * Use of this base class only makes sense if the BaleenHistory which owns it * is provides the closeHistory functionality. * * Also the getAllHistory() method performs a filter on all history which would be * wasteful (unless this is the only way). * * * * @param <T> the type of history */ public abstract class AbstractDocumentHistory<T extends BaleenHistory> implements DocumentHistory { private T history; private String documentId; /** New instance, * @param history the history owning this * @param documentId the document id */ public AbstractDocumentHistory(T history, String documentId) { this.history = history; this.documentId = documentId; } protected String getDocumentId() { return documentId; } protected T getHistory() { return history; } @Override public Collection<HistoryEvent> getHistory(long recordableId) { return getAllHistory().stream().filter(e -> e.getRecordable().getInternalId() == recordableId) .collect(Collectors.toList()); } @Override public void close() { getHistory().closeHistory(documentId); } }