package org.commcare.logging;
import org.commcare.android.javarosa.AndroidLogEntry;
import org.commcare.models.database.SqlStorage;
import org.javarosa.core.log.LogEntry;
import org.javarosa.core.log.StreamLogSerializer;
import org.javarosa.core.services.storage.EntityFilter;
import org.javarosa.core.util.SortedIntSet;
import java.util.Hashtable;
/**
* Implementation of a log purger shared by all Android log serializers
*
* @author Aliza Stone
*/
public class AndroidLogPurger<T extends AndroidLogEntry> implements StreamLogSerializer.Purger {
private final SqlStorage<T> logStorage;
public AndroidLogPurger(SqlStorage<T> logStorage) {
this.logStorage = logStorage;
}
@Override
public void purge(final SortedIntSet IDs) {
logStorage.removeAll(new EntityFilter<LogEntry>() {
@Override
public int preFilter(int id, Hashtable<String, Object> metaData) {
return IDs.contains(id) ? PREFILTER_INCLUDE : PREFILTER_EXCLUDE;
}
@Override
public boolean matches(LogEntry e) {
throw new RuntimeException("can't happen");
}
});
}
}