-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathCleanUpDatabaseTask.java
More file actions
55 lines (47 loc) · 2.82 KB
/
CleanUpDatabaseTask.java
File metadata and controls
55 lines (47 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package io.split.android.client.service;
import androidx.annotation.NonNull;
import io.split.android.client.service.executor.SplitTask;
import io.split.android.client.service.executor.SplitTaskExecutionInfo;
import io.split.android.client.service.SplitTaskType;
import io.split.android.client.service.impressions.observer.PersistentImpressionsObserverCacheStorage;
import io.split.android.client.storage.events.PersistentEventsStorage;
import io.split.android.client.storage.impressions.PersistentImpressionsCountStorage;
import io.split.android.client.storage.impressions.PersistentImpressionsStorage;
import io.split.android.client.storage.impressions.PersistentImpressionsUniqueStorage;
import static io.split.android.client.utils.Utils.checkNotNull;
import java.util.concurrent.TimeUnit;
public class CleanUpDatabaseTask implements SplitTask {
private final PersistentEventsStorage mEventsStorage;
private final PersistentImpressionsStorage mImpressionsStorage;
private final PersistentImpressionsCountStorage mImpressionsCountStorage;
private final PersistentImpressionsUniqueStorage mImpressionsUniqueStorage;
private final PersistentImpressionsObserverCacheStorage mImpressionsObserverCacheStorage;
private final long mMaxTimestamp;
public CleanUpDatabaseTask(PersistentEventsStorage eventsStorage,
PersistentImpressionsStorage impressionsStorage,
PersistentImpressionsCountStorage persistentImpressionsCountStorage,
PersistentImpressionsUniqueStorage persistentImpressionsUniqueStorage,
PersistentImpressionsObserverCacheStorage persistentImpressionsObserverCacheStorage,
long maxTimestamp) {
mEventsStorage = checkNotNull(eventsStorage);
mImpressionsStorage = checkNotNull(impressionsStorage);
mImpressionsCountStorage = checkNotNull(persistentImpressionsCountStorage);
mImpressionsUniqueStorage = checkNotNull(persistentImpressionsUniqueStorage);
mImpressionsObserverCacheStorage = checkNotNull(persistentImpressionsObserverCacheStorage);
mMaxTimestamp = maxTimestamp;
}
@Override
@NonNull
public SplitTaskExecutionInfo execute() {
try {
mEventsStorage.deleteInvalid(mMaxTimestamp);
mImpressionsStorage.deleteInvalid(mMaxTimestamp);
mImpressionsCountStorage.deleteInvalid(mMaxTimestamp);
mImpressionsUniqueStorage.deleteInvalid(mMaxTimestamp);
mImpressionsObserverCacheStorage.deleteOutdated(TimeUnit.SECONDS.toMillis(mMaxTimestamp));
return SplitTaskExecutionInfo.success(SplitTaskType.CLEAN_UP_DATABASE);
} catch (Throwable t) {
return SplitTaskExecutionInfo.error(SplitTaskType.CLEAN_UP_DATABASE);
}
}
}