- package com.example.citrusclient.viewmodels;
-
- import androidx.lifecycle.MutableLiveData;
- import androidx.lifecycle.ViewModel;
-
- import com.example.citrusclient.models.Book;
- import com.example.citrusclient.rest.BooksRest;
-
- import java.util.ArrayList;
- import java.util.HashMap;
-
- import retrofit2.Call;
- import retrofit2.Callback;
- import retrofit2.Response;
- import retrofit2.Retrofit;
- import retrofit2.converter.jackson.JacksonConverterFactory;
-
- public class BooksViewModel extends ViewModel {
-
- private final Retrofit retrofit;
- private final BooksRest booksRest;
- private final MutableLiveData<HashMap<Integer, Book>> booksLiveData;
- private final MutableLiveData<HashMap<Integer,Book>> booksIdLiveData;
- private final MutableLiveData<String> titleLiveData;
- private final MutableLiveData<String> colorLiveData;
- private final MutableLiveData<String> publicityLiveData;
- private final MutableLiveData<String> favoritedLiveData;
- private final MutableLiveData<String> errorLiveData;
- private final MutableLiveData<Boolean> successDeleteBookLiveData;
- private final MutableLiveData<String> delBookErrorLivedata;
-
- public BooksViewModel(MutableLiveData<HashMap<Integer, Book>> booksIdLiveData) {
- this.retrofit = new Retrofit.Builder()
- .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/")
- .addConverterFactory(JacksonConverterFactory.create())
- .build();
- this.booksRest = retrofit.create(BooksRest.class);
- this.booksLiveData = new MutableLiveData<>();
- this.booksIdLiveData = booksIdLiveData;
- this.titleLiveData = new MutableLiveData<>();
- this.colorLiveData = new MutableLiveData<>();
- this.publicityLiveData = new MutableLiveData<>();
- this.favoritedLiveData = new MutableLiveData<>();
- this.errorLiveData = new MutableLiveData<>();
- this.successDeleteBookLiveData = new MutableLiveData<>();
- this.delBookErrorLivedata = new MutableLiveData<>();
- }
-
- public MutableLiveData<HashMap<Integer, Book>> getBookLiveData() { return this.booksLiveData;}//本の一覧を返す
- public MutableLiveData<HashMap<Integer,Book>> getBooksIdLiveData() {return this.booksIdLiveData;}//本の情報を取得
- public MutableLiveData<String> getTitleLiveData() {return this.titleLiveData;}//本のタイトルを返す
- public MutableLiveData<String> getPublicityLiveData() {return this.publicityLiveData;}//本の公開状態を返す
-
-
- public MutableLiveData<Boolean> getSuccessDeleteBookLiveData() {return successDeleteBookLiveData;}
-
- public void createBook(String accountId, String title, String color, Boolean publicity, String token ){
- Call<Book> call = booksRest.createBook(accountId , title, color, publicity, token);
-
- call.enqueue(new Callback<Book>() {
- @Override
- public void onResponse(Call<Book> call, Response<Book> response) {
- if(response.isSuccessful()) {
- System.out.println("success!" + response.body());
- }else {
- System.out.println("fail");
- errorLiveData.setValue(parseStatusCode(response.code()));
- }
- }
-
- @Override
- public void onFailure(Call<Book> call, Throwable t) {
-
- }
- });
-
- }
-
- public void loadBooks(String account_id, String token){
- Call<HashMap<Integer, Book>> call = booksRest.getBooks(account_id, token);
-
- call.enqueue(new Callback<HashMap<Integer, Book>>() {
- @Override
- public void onResponse(Call<HashMap<Integer, Book>> call, Response<HashMap<Integer, Book>> response) {
- if (response.isSuccessful()) {
- HashMap<Integer, Book> book = response.body();
- booksLiveData.setValue(book);
- System.out.println(response.code());
- }else System.out.println(response.code());
- }
-
- @Override
- public void onFailure(Call<HashMap<Integer, Book>> call, Throwable t) {
- System.out.println("fail");
- }
- });
- }
-
- public void deleteBook(String account_id, Integer book_id, String token){
- Call<String> call = booksRest.deleteBook(account_id, book_id, token);
-
- call.enqueue(new Callback<String>() {
- @Override
- public void onResponse(Call<String> call, Response<String> response) {
- if (response.isSuccessful()) {
- successDeleteBookLiveData.setValue(true);
- System.out.println("DELETE");
- } else {
- System.out.println("response error");
- }
- }
-
- @Override
- public void onFailure(Call<String> call, Throwable t) {
- System.out.println("correspondence error" + t);
- }
- });
- }
-
- /*private void deleteBookLiveData(String account_id, Integer book_id) {
- HashMap<Integer,Book> delData = new HashMap<>();
- for (Book book: booksLiveData.getValue()) {
- if (book.getBookId().equals(book_id)) {
- continue;
- }
- delData.add(book);
- }
- booksLiveData.setValue(delData);
- }*/
-
- public void setTitle(String account_id, Integer book_id, String title, String token){
- Call<String> call = booksRest.putTitle(account_id, book_id, title, token);
-
- call.enqueue(new Callback<String>() {
- @Override
- public void onResponse(Call<String> call, Response<String> response) {
- if (response.isSuccessful()){
- titleLiveData.setValue(title);
- System.out.println(response.code());
- System.out.println("Success SetTiTle" + title);
- } else {
- System.out.println("response error");
- }
- }
-
- @Override
- public void onFailure(Call<String> call, Throwable t) {
- System.out.println("NetWorkError" + t);
- }
- });
- }
-
- public void setColor(String account_id, Integer book_id, String color, String token){
- Call<String> call = booksRest.putColor(account_id, book_id, color, token);
-
- call.enqueue(new Callback<String>() {
- @Override
- public void onResponse(Call<String> call, Response<String> response) {
- if (response.isSuccessful()){
- colorLiveData.setValue(color);
- System.out.println(response.code());
- System.out.println("Success SetTiTle" + color);
- } else {
- System.out.println("response error");
- }
- }
-
- @Override
- public void onFailure(Call<String> call, Throwable t) {
- System.out.println("NetWorkError" + t);
- }
- });
- }
-
- public void setPublicity(String account_id, Integer book_id, Boolean publicity, String token){
- Call<String> call = booksRest.putPublicity(account_id, book_id, publicity, token);
-
- call.enqueue(new Callback<String>() {
- @Override
- public void onResponse(Call<String> call, Response<String> response) {
- if (response.isSuccessful()){
- String pub = String.valueOf(publicity);
- publicityLiveData.setValue(pub);
- System.out.println(response.code());
- System.out.println("Success SetTiTle" + publicity);
- } else {
- System.out.println("response error");
- }
- }
-
- @Override
- public void onFailure(Call<String> call, Throwable t) {
- System.out.println("NetWorkError" + t);
- }
- });
- }
-
- private String parseStatusCode(Integer code) {
- switch (code) {
- case 404:
- System.out.println("見つかりませんでした");
- return null;
- case 401:
- System.out.println("トークンが違います");
- return null;
- case 400:
- System.out.println("レスポンスエラー");
- return null;
- case 500:
- System.out.println("サーバーエラー");
- return null;
- default:
- System.out.println("不明なエラー");
- return null;
- }
- }
- }