diff --git a/app/src/main/java/com/example/citrusclient/viewmodels/TodoViewModel.java b/app/src/main/java/com/example/citrusclient/viewmodels/TodoViewModel.java deleted file mode 100644 index 41deb9e..0000000 --- a/app/src/main/java/com/example/citrusclient/viewmodels/TodoViewModel.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.citrusclient.viewmodels; - -import androidx.lifecycle.ViewModel; - -public class TodoViewModel extends ViewModel { -} diff --git a/app/src/main/java/com/example/citrusclient/viewmodels/TodosViewModel.java b/app/src/main/java/com/example/citrusclient/viewmodels/TodosViewModel.java new file mode 100644 index 0000000..722398e --- /dev/null +++ b/app/src/main/java/com/example/citrusclient/viewmodels/TodosViewModel.java @@ -0,0 +1,229 @@ +package com.example.citrusclient.viewmodels; + +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import com.example.citrusclient.models.Todo; +import com.example.citrusclient.models.Book; +import com.example.citrusclient.rest.TodosRest; + + +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 TodosViewModel extends ViewModel { + private final Retrofit retrofit; + private final TodosRest todosRest; + + //LiveData + private final MutableLiveData>>>> allTodosLiveData; + private final MutableLiveData>> TodosByMonthLiveData; + private final MutableLiveData> TodosByDayLiveData; + private final MutableLiveData TodoByIdLiveData; + private final MutableLiveData errorLiveData; + + //Constructor + public TodosViewModel() + { + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + this.todosRest = retrofit.create(TodosRest.class); + this.allTodosLiveData = new MutableLiveData<>(); + this.TodosByMonthLiveData = new MutableLiveData<>(); + this.TodosByDayLiveData = new MutableLiveData<>(); + this.TodoByIdLiveData = new MutableLiveData<>(); + this.errorLiveData = new MutableLiveData<>(); + } + + //getter + public MutableLiveData>>>> getTodosLiveData() + { + return allTodosLiveData; + } + public MutableLiveData getErrorLiveData() {return errorLiveData;} + + + public void getAllTodos(String accountId,Integer bookId, String token) + { + Call>>>> call = todosRest.getAllTodos(accountId, bookId, token); + call.enqueue(new Callback>>>>() { + @Override + public void onResponse(Call>>>> call, Response>>>> response) { + if (response.isSuccessful()) { + System.out.println("Success: getAllTodos"); + allTodosLiveData.setValue(response.body()); + } else { + System.out.println("Error: getAllTodos" + response.code()); + errorLiveData.setValue(parseStatusCode(response.code())); + } + } + @Override + public void onFailure(Call>>>> call, Throwable t) { + System.out.println("CommunicationError: getAllTodos" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + + }); + } + + public void getTodosByMonth(String accountId,Integer bookId, Integer year, Integer month, + String token) + { + Call>> call = todosRest.getTodosByMonth(accountId, bookId, year, month, token); + call.enqueue(new Callback>>() { + @Override + public void onResponse(Call>> call, Response>> response) { + if (response.isSuccessful()) { + System.out.println("Success: getTodosByMonth"); + TodosByMonthLiveData.setValue(response.body()); + } else { + System.out.println("Error: getTodosByMonth" + response.code()); + } + } + @Override + public void onFailure(Call>> call, Throwable t) { + System.out.println("CommunicationError: getTodosByMonth" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + + }); + } + + public void getTodosByDay(String accountId,Integer bookId, Integer year, Integer month, + Integer day, String token) + { + Call> call = todosRest.getTodosByDay(accountId, bookId, year, month, day, token); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + System.out.println("Success: getTodosByDay"); + TodosByDayLiveData.setValue(response.body()); + } else { + System.out.println("Error: getTodosByDay" + response.code()); + } + } + @Override + public void onFailure(Call> call, Throwable t) { + System.out.println("CommunicationError: getTodosByDay" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + + }); + } + + public void getTodoById(String accountId,Integer bookId, Integer year, Integer month, + Integer day, Integer todoId, String token) + { + Call call = todosRest.getTodoById(accountId, bookId, year, month, day, todoId, token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + System.out.println("Success: getTodoById"); + TodoByIdLiveData.setValue(response.body()); + } else { + System.out.println("Error: getTodoById" + response.code()); + } + } + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("CommunicationError: getTodoById" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + + }); + } + + public void createTodo(String accountId,Integer bookId, Integer year, Integer month, + Integer day, String title, String token) + { + Call call = todosRest.createTodo(accountId, bookId, year, month, day, title, token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + System.out.println("Success: createTodo"); + + } else { + System.out.println("Error: createTodo" + response.code()); + } + } + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("CommunicationError: createTodo" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + + }); + } + + public void setCheck(String accountId, Integer BookId, Integer year, Integer month, + Integer day, Integer todoId, boolean check, String token) + { + Call call = todosRest.setCheck(accountId, BookId, year, month, day, todoId, check, token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + System.out.println("Success: setCheck"); + + } else { + System.out.println("Error: setCheck" + response.code()); + } + } + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("CommunicationError: setCheck" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + }); + } + + public void deleteTodo(String accountId, Integer BookId, Integer year, Integer month, + Integer day, Integer todoId, String token) + { + Call call = todosRest.deleteTodoById(accountId, BookId, year, month, day, todoId, token); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + System.out.println("Success: deleteTodo"); + + } else { + System.out.println("Error: deleteTodo" + response.code()); + } + } + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("CommunicationError: deleteTodo" + t); + errorLiveData.setValue(parseStatusCode(-1)); + } + }); + } + + + + private String parseStatusCode(Integer stats) { + switch (stats) { + case 404: + return "NotFound"; + case 401: + return "InvalidToken"; + case 400: + return "ResponseError"; + case 500: + return "ServerError"; + default: + return "UnknownError"; + } + } +}