package org.wikipedia.media; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.apache.commons.lang3.StringUtils; class State { private enum LoadState { DEINIT, INIT, LOADING, LOADED } private enum PlayState { STOPPED, PLAYING, PAUSED } @NonNull private LoadState loadState = LoadState.DEINIT; @NonNull private PlayState playState = PlayState.STOPPED; @Nullable private String path; @Nullable public String getPath() { return path; } public boolean isDeinit() { return loadState == LoadState.DEINIT; } public void setDeinit() { loadState = LoadState.DEINIT; playState = PlayState.STOPPED; } public boolean isInit() { return !isDeinit(); } public void setInit() { loadState = LoadState.INIT; } public boolean isLoading() { return loadState == LoadState.LOADING; } public boolean isLoading(@Nullable String path) { return isLoading() && isPathIdentical(path); } public void setLoading(@Nullable String path) { if (!isLoaded(path)) { loadState = LoadState.LOADING; this.path = path; } } public boolean isLoaded() { return loadState == LoadState.LOADED; } public boolean isLoaded(@Nullable String path) { return isLoaded() && isPathIdentical(path); } public void setLoaded() { loadState = LoadState.LOADED; } public boolean isStopped() { return playState == PlayState.STOPPED; } public void setStopped() { playState = PlayState.STOPPED; } public boolean isPlaying() { return playState == PlayState.PLAYING; } public void setPlaying() { playState = PlayState.PLAYING; } public boolean isPaused() { return playState == PlayState.PAUSED; } public void setPaused() { playState = PlayState.PAUSED; } private boolean isPathIdentical(@Nullable String path) { return StringUtils.equals(this.path, path); } }