Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt
Nơi tạo java/com/vantinviet/adayroionline/repository
Tạo một thư mục có tên item trong java/com/vantinviet/adayroionline/repository
Tạo file file ItemsListRepository bên trong java/com/vantinviet/adayroionline/repository/item
Nội dung file
package com.vantinviet.adayroionline.repository.item;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.vantinviet.adayroionline.ApiResponse.ApiResponseGetItemList;
import com.vantinviet.adayroionline.AppExecutors;
import com.vantinviet.adayroionline.api.ApiResponse;
import com.vantinviet.adayroionline.api.PSApiService;
import com.vantinviet.adayroionline.db.ItemDao;
import com.vantinviet.adayroionline.db.PSCoreDb;
import com.vantinviet.adayroionline.repository.common.PSRepository;
import com.vantinviet.adayroionline.utils.Utils;
import com.vantinviet.adayroionline.viewobject.Item;
import com.vantinviet.adayroionline.viewobject.common.Resource;
import java.io.IOException;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import retrofit2.Response;
@Singleton
public class ItemListRepository extends PSRepository {
//region variable
private final ItemDao itemDao;
//end region
//region constructor
@Inject
ItemListRepository(PSApiService psApiService, AppExecutors appExecutors, PSCoreDb db, ItemDao itemDao) {
super(psApiService, appExecutors, db);
this.itemDao = itemDao;
}
//region User Repository Functions for ViewModel
public LiveData<Resource<List<Item>>> getAllItem(String api_key,String limit, String offset) {
final MutableLiveData<Resource<List<Item>>> statusLiveData = new MutableLiveData<>(); // To update the status to the listener
appExecutors.networkIO().execute(() -> {
try {
// Call the API Service
Response<ApiResponseGetItemList> response =
psApiService.getAllItem(api_key,limit,offset).execute();
// Wrap with APIResponse Class
ApiResponse<ApiResponseGetItemList> apiResponseGetItemList = new ApiResponse<>(response);
if(apiResponseGetItemList.body.code.equals("101")){
statusLiveData.postValue(Resource.error(apiResponseGetItemList.body.errorMessage, null));
return;
}
// If response is successful
if (apiResponseGetItemList.isSuccessful()) {
db.beginTransaction();
try {
itemDao.deleteAll();
db.setTransactionSuccessful();
} catch (Exception e) {
Utils.psErrorLog("Error in doing transaction of recent transaction list.", e);
} finally {
db.endTransaction();
}
statusLiveData.postValue(Resource.success(apiResponseGetItemList.body.itemList));
} else {
statusLiveData.postValue(Resource.error(apiResponseGetItemList.errorMessage, null));
}
} catch (IOException e) {
statusLiveData.postValue(Resource.error(e.getMessage(), null));
}
});
return statusLiveData;
}
// Get next page transaction list
public LiveData<Resource<Boolean>> getNextPageItemList(String api_key,String limit,String offset) {
final MutableLiveData<Resource<Boolean>> statusLiveData = new MutableLiveData<>(); // To update the status to the listener
appExecutors.networkIO().execute(() -> {
try {
// Call the API Service
Response<ApiResponseGetItemList> response =
psApiService.getAllItem(api_key,limit,offset).execute();
// Wrap with APIResponse Class
ApiResponse<ApiResponseGetItemList> apiResponseGetItemList = new ApiResponse<>(response);
if(apiResponseGetItemList.body.code.equals("101")){
statusLiveData.postValue(Resource.error(apiResponseGetItemList.body.errorMessage, null));
return;
}
// If response is successful
if (apiResponseGetItemList.isSuccessful()) {
db.beginTransaction();
try {
itemDao.deleteAll();
itemDao.insertAll(apiResponseGetItemList.body.itemList);
db.setTransactionSuccessful();
} catch (Exception e) {
Utils.psErrorLog("Error in doing transaction of recent item list.", e);
} finally {
db.endTransaction();
}
} else {
statusLiveData.postValue(Resource.error(apiResponseGetItemList.errorMessage, null));
}
} catch (IOException e) {
statusLiveData.postValue(Resource.error(e.getMessage(), null));
}
});
return statusLiveData;
}
public LiveData<Item> getItemById(String item_id) {
return itemDao.getItemById(item_id);
}
}
Chưa có câu hỏi nào cho bài này.