package com.aconex.scrutineer; import com.aconex.scrutineer.javautil.SystemTimeSource; import com.aconex.scrutineer.javautil.TimeSource; import org.elasticsearch.common.joda.time.format.ISODateTimeFormat; public class CoincidentFilteredStreamVerifierListener implements IdAndVersionStreamVerifierListener { private static final org.slf4j.Logger LOGGER = LogUtils.loggerForThisClass(); private final IdAndVersionStreamVerifierListener otherListener; private final long runStartTime; public CoincidentFilteredStreamVerifierListener(IdAndVersionStreamVerifierListener otherListener) { this(new SystemTimeSource(), otherListener); } public CoincidentFilteredStreamVerifierListener(TimeSource timeSource, IdAndVersionStreamVerifierListener otherListener) { this.otherListener = otherListener; this.runStartTime = timeSource.getCurrentTime(); LogUtils.info(LOGGER, "Will suppress any inconsistency detected on or after %s", ISODateTimeFormat.dateTime().print(runStartTime)); } @Override public void onMissingInSecondaryStream(IdAndVersion idAndVersion) { if (idAndVersion.getVersion() < runStartTime) { otherListener.onMissingInSecondaryStream(idAndVersion); } } @Override public void onMissingInPrimaryStream(IdAndVersion idAndVersion) { if (idAndVersion.getVersion() < runStartTime) { otherListener.onMissingInPrimaryStream(idAndVersion); } } @Override public void onVersionMisMatch(IdAndVersion primaryItem, IdAndVersion secondaryItem) { if (primaryItem.getVersion() < runStartTime && secondaryItem.getVersion() < runStartTime) { otherListener.onVersionMisMatch(primaryItem, secondaryItem); } } }