com.nytimes.android.external.store.util.Result Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of store3 Show documentation
Show all versions of store3 Show documentation
Store3 is built with RxJava2
package com.nytimes.android.external.store.util;
/**
* Result is a container with meta data for the parsed object.
*
* @param data type after parsing
*/
public final class Result {
public enum Source {
CACHE, NETWORK
}
private final Source source;
private final Parsed value;
private Result(Source source, Parsed value) {
this.source = source;
this.value = value;
}
/**
* Convenient method to create a result object from {SOURCE_CACHE}.
* @param value data type after parsing
* @param data type after parsing
* @return a Result object with T passed
*/
public static Result createFromCache(T value) {
return new Result<>(Source.CACHE, value);
}
/**
* Convenient method to create a result object from {SOURCE_NETWORK}.
* @param value data type after parsing
* @param data type after parsing
* @return a Result object with T passed
*/
public static Result createFromNetwork(T value) {
return new Result<>(Source.NETWORK, value);
}
public Source source() {
return source;
}
public Parsed value() {
return value;
}
public boolean isFromNetwork() {
return source == Source.NETWORK;
}
public boolean isFromCache() {
return source == Source.CACHE;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Result> result = (Result>) o;
if (source != null && !source.equals(result.source)) {
return false;
}
if (source == null && result.source != null) {
return false;
}
if (value != null) {
return value.equals(result.value);
}
return result.value == null;
}
@Override
public int hashCode() {
int result = 0;
if (source != null) {
result = source.hashCode();
}
result = 31 * result;
if (value != null) {
result += value.hashCode();
}
return result;
}
}