Giải pháp chuyển đổi số trọn gói cho doanh nghiệp Việt

Tạo ItemListRepository - Tài liệu lập trình android

Tài liệu lập trình android

← Toàn bộ tài liệu


Bước 12: Tạo ItemListRepository

Bài 12/36 Xem dạng sách

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);
}

}

Sơ đồ quan hệ các bảng

Table Name: {{table.name}}
Num Name Type
{{field_index+1}}
{{field.name}} {{field.type}}

Hỏi đáp

Gửi với tên {{comment_full_name}}

Chưa có câu hỏi nào cho bài này.

Zalo 0936.006.058 Hotline 0936.006.058