package com.doumee.lib_coremodel.bean;
import androidx.annotation.Nullable;
import com.doumee.lib_coremodel.base.livedata.StatusEvent;
/**
* @author Jenly
*/
public class Resource {
@StatusEvent.Status
public int status;
@Nullable
public String message;
@Nullable
public T data;
@Nullable
public Throwable error;
public Resource(@StatusEvent.Status int status) {
this(status,null);
}
public Resource(@StatusEvent.Status int status, @Nullable String message) {
this(status,message,null);
}
public Resource(@StatusEvent.Status int status, @Nullable String message, @Nullable T data) {
this(status,message,data,null);
}
public Resource(@StatusEvent.Status int status, @Nullable String message, @Nullable T data, @Nullable Throwable error) {
this.status = status;
this.message = message;
this.data = data;
this.error = error;
}
public boolean isLoading(){
return status == StatusEvent.Status.LOADING;
}
public boolean isSuccess(){
return status == StatusEvent.Status.SUCCESS;
}
public boolean isFailure(){
return status == StatusEvent.Status.FAILURE;
}
public boolean isError(){
return status == StatusEvent.Status.ERROR;
}
public static Resource loading() {
return new Resource<>(StatusEvent.Status.LOADING);
}
public static Resource loading(@Nullable T data) {
return new Resource<>(StatusEvent.Status.LOADING, null,data);
}
public static Resource success(@Nullable T data) {
return new Resource<>(StatusEvent.Status.SUCCESS,null,data);
}
public static Resource failure(String msg) {
return new Resource<>(StatusEvent.Status.FAILURE, msg);
}
public static Resource error(Throwable t) {
return error(t,null);
}
public static Resource error(Throwable t, String msg) {
return new Resource<>(StatusEvent.Status.ERROR, msg,null,t);
}
}