package org.wikipedia.readinglist.page.database.disk; import android.support.annotation.NonNull; import org.wikipedia.model.CodeEnum; import org.wikipedia.model.EnumCode; import org.wikipedia.model.EnumCodeMap; public enum DiskStatus implements EnumCode { /** Only cache when explicitly requested but do not pre-cache or save to disk. No transaction * pending. */ ONLINE(0), /** Saved to disk. No transaction pending. */ SAVED(1), /** Download or re-download pending. When complete, status is {@link #SAVED}. */ OUTDATED(2), /** Possibly downloaded previously and delete from disk pending. When complete, status is * {@link #ONLINE}. */ UNSAVED(3), /** Possibly downloaded previously and delete from disk pending. When complete, row is * removed. */ DELETED(4); public static final CodeEnum<DiskStatus> CODE_ENUM = new CodeEnum<DiskStatus>() { @NonNull @Override public DiskStatus enumeration(int code) { return of(code); } }; private static final EnumCodeMap<DiskStatus> MAP = new EnumCodeMap<>(DiskStatus.class); private final int code; public static DiskStatus of(int code) { return MAP.get(code); } public boolean savedOrSaving() { return this == SAVED || this == OUTDATED; } @Override public int code() { return code; } DiskStatus(int code) { this.code = code; } }