package com.doumee.lib_coremodel.bean; 
 | 
  
 | 
  
 | 
import androidx.annotation.Nullable; 
 | 
  
 | 
import com.doumee.lib_coremodel.base.livedata.StatusEvent; 
 | 
  
 | 
  
 | 
/** 
 | 
 * @author <a href="mailto:jenly1314@gmail.com">Jenly</a> 
 | 
 */ 
 | 
public class Resource<T> { 
 | 
  
 | 
    @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 <T> Resource<T> loading() { 
 | 
        return new Resource<>(StatusEvent.Status.LOADING); 
 | 
    } 
 | 
  
 | 
    public static <T> Resource<T> loading(@Nullable T data) { 
 | 
        return new Resource<>(StatusEvent.Status.LOADING, null,data); 
 | 
    } 
 | 
  
 | 
    public static <T> Resource<T> success(@Nullable T data) { 
 | 
        return new Resource<>(StatusEvent.Status.SUCCESS,null,data); 
 | 
    } 
 | 
  
 | 
    public static <T> Resource<T> failure(String msg) { 
 | 
        return new Resource<>(StatusEvent.Status.FAILURE, msg); 
 | 
    } 
 | 
  
 | 
    public static <T> Resource<T> error(Throwable t) { 
 | 
        return error(t,null); 
 | 
    } 
 | 
  
 | 
    public static <T> Resource<T> error(Throwable t, String msg) { 
 | 
        return new Resource<>(StatusEvent.Status.ERROR, msg,null,t); 
 | 
    } 
 | 
  
 | 
} 
 |