package com.jdroid.android.repository;
import com.jdroid.java.domain.Identifiable;
import com.jdroid.java.repository.InMemoryRepository;
import com.jdroid.java.date.DateUtils;
/**
*
* @param <T>
*/
public class SynchronizedInMemoryRepository<T extends Identifiable> extends InMemoryRepository<T> implements
SynchronizedRepository<T> {
// Default Refresh frequency (in milliseconds)
private static final Long DEFAULT_REFRESH_FREQUENCY = 5 * DateUtils.MILLIS_PER_MINUTE; // 5 min
private Long lastUpdateTimestamp;
/**
* @see com.jdroid.android.repository.SynchronizedRepository#refreshUpdateTimestamp()
*/
@Override
public void refreshUpdateTimestamp() {
lastUpdateTimestamp = DateUtils.nowMillis();
}
/**
* @see com.jdroid.android.repository.SynchronizedRepository#isOutdated()
*/
@Override
public Boolean isOutdated() {
return (lastUpdateTimestamp == null)
|| ((lastUpdateTimestamp + getRefreshFrequency()) < DateUtils.nowMillis());
}
/**
* @see com.jdroid.android.repository.SynchronizedRepository#getLastUpdateTimestamp()
*/
@Override
public Long getLastUpdateTimestamp() {
return lastUpdateTimestamp;
}
/**
* @see com.jdroid.android.repository.SynchronizedRepository#resetLastUpdateTimestamp()
*/
@Override
public void resetLastUpdateTimestamp() {
lastUpdateTimestamp = null;
}
protected Long getRefreshFrequency() {
return DEFAULT_REFRESH_FREQUENCY;
}
}