| |
---|
| | public class RoomViewModel extends TimerViewModel { |
---|
| | |
---|
| | //フィールド |
---|
| | private String rid; |
---|
| | private boolean roomExist; |
---|
| | final private Retrofit retrofit; |
---|
| | final private RoomsRest roomsRest; |
---|
| | final private MutableLiveData<List<Member>> membersLiveData; |
---|
| | final private MutableLiveData<Settings> settingsMutableLiveData; |
---|
| | final private MutableLiveData<Integer> stateLiveData; |
---|
| | final private Retrofit retrofit; |
---|
| | |
---|
| | //更新比較用フィールド |
---|
| | private List<Member> sortedMembersList; |
---|
| | private List<Member> membersPreData; |
---|
| |
---|
| | this.retrofit = new Retrofit.Builder() |
---|
| | .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") |
---|
| | .addConverterFactory(JacksonConverterFactory.create()) |
---|
| | .build(); |
---|
| | this.roomsRest = retrofit.create(RoomsRest.class); |
---|
| | setRoomExist(true); |
---|
| | } |
---|
| | |
---|
| | //----------------------------------------------------------------- |
---|
| | //setter |
---|
| | public void setRid(String rid){ |
---|
| | this.rid = rid; |
---|
| | } |
---|
| | private void setRoomExist(boolean bool) { |
---|
| | this.roomExist = bool; |
---|
| | } |
---|
| | |
---|
| | // getter |
---|
| | public LiveData<List<Member>> getMembersLiveData() { |
---|
| | return this.membersLiveData; |
---|
| | } |
---|
| |
---|
| | } |
---|
| | public LiveData<Integer> getStateLiveData() { |
---|
| | return this.stateLiveData; |
---|
| | } |
---|
| | |
---|
| | public boolean getRoomExist(){ |
---|
| | return this.roomExist; |
---|
| | } |
---|
| | private boolean compareMembers(List<Member> a, List<Member> b) { |
---|
| | |
---|
| | int i; |
---|
| | for(i = 0; i < a.size(); i++ ) { |
---|
| |
---|
| | |
---|
| | //全ての要素が一緒ならtrueを返す |
---|
| | return true; |
---|
| | } |
---|
| | |
---|
| | private List<Member> sortMembersList(List<Member> oldMembers) { |
---|
| | List<Member> sortedMembers = new ArrayList<>(); |
---|
| | List<List<Integer>> priorityInteger = new ArrayList<>(5); |
---|
| | List<Integer> list0 = new ArrayList<Integer>(); |
---|
| |
---|
| | for(int i = 0; i < 5; i++) { |
---|
| | priorityInteger.get(i).forEach(num -> sortedMembers.add(oldMembers.get(num))); |
---|
| | } |
---|
| | |
---|
| | //System.out.println(sortedMembers); |
---|
| | //sortedMembers.forEach(k -> System.out.println(k.getNickname() + " " + k.getBelongs() + " " + k.isMaster())); |
---|
| | return sortedMembers; |
---|
| | } |
---|
| | |
---|
| | //----------------------------------------------------------------------------- |
---|
| | //各Activityでのボタン処理 |
---|
| | //チーム&マスター変更 |
---|
| | public void changeBelongsAndMaster(String rid, String nickname, String belongs, Boolean isMaster) { |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | //final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<String> call = roomsRest.putMember(rid, nickname, belongs, isMaster); |
---|
| | |
---|
| | call.enqueue(new Callback<String>() { |
---|
| | @Override |
---|
| |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //メンバー削除 |
---|
| | //メンバー削除(MemberActivityのみ) |
---|
| | public void deleteMember(String rid, String nickname) { |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<RoomJson> call = roomsRest.deleteMember(rid, nickname); |
---|
| | //final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<String> call = roomsRest.deleteMember(rid, nickname); |
---|
| | |
---|
| | call.enqueue(new Callback<String>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<String> call, Response<String> response) { |
---|
| | if (response.isSuccessful()){ |
---|
| | System.out.println("通信成功:退出しました"); |
---|
| | } |
---|
| | } |
---|
| | @Override |
---|
| | public void onFailure(Call<String> call, Throwable t) { |
---|
| | System.out.println("通信失敗:"); |
---|
| | System.out.println(t); |
---|
| | } |
---|
| | }); |
---|
| | |
---|
| | } |
---|
| | |
---|
| | //部屋の削除(OwnerActivityのみ) |
---|
| | public void deleteRoom(String rid){ |
---|
| | Call<Void> call = roomsRest.deleteRooms(rid); |
---|
| | |
---|
| | call.enqueue(new Callback<Void>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<Void> call, Response<Void> response) { |
---|
| | setRoomExist(false); |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onFailure(Call<Void> call, Throwable t) { |
---|
| | System.out.println("通信失敗:deleteRoom"); |
---|
| | System.out.println(t); |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //スタートボタンの処理(OwnerActivityのみ) |
---|
| | public void startDrawing(String rid, String nickname) { |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | //final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<Void> call = roomsRest.putState(rid,nickname,2); |
---|
| | |
---|
| | call.enqueue(new Callback<Void>() { |
---|
| | @Override |
---|
| |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //ランダムボタンの処理(OwnerActivityのみ) |
---|
| | public void randomTeam(String rid, String nickname) { |
---|
| | Call<Void> call = roomsRest.putMembers(rid, nickname); |
---|
| | |
---|
| | call.enqueue(new Callback<Void>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<Void> call, Response<Void> response) { |
---|
| | System.out.println("ランダムにチーム変更へ"); |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onFailure(Call<Void> call, Throwable t) { |
---|
| | System.out.println("通信失敗:randomTeam"); |
---|
| | System.out.println(t); |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //設定情報の変更処理(OwnerActivityのみ) |
---|
| | public void changeSettings(String rid, boolean dTimer, int dTimerTimes, boolean gTimer, int gTimerTimes, int gTimerFTTimes) { |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<Void> call = roomsRest.putSettings(rid, dTimer, dTimerTimes, gTimer, gTimerTimes, gTimerFTTimes); |
---|
| | |
---|
| | call.enqueue(new Callback<Void>() { |
---|
| | @Override |
---|
| |
---|
| | } |
---|
| | |
---|
| | //部屋の情報の更新(List<Members>) |
---|
| | public void updateMembers(String rid) { |
---|
| | |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<List<Member>> call = roomsRest.getRoomMember(rid); |
---|
| | |
---|
| | call.enqueue(new Callback<List<Member>>() { |
---|
| | @Override |
---|
| |
---|
| | } |
---|
| | |
---|
| | //設定情報の更新(Settings) |
---|
| | public void updateSettings(String rid) { |
---|
| | |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<Settings> call = roomsRest.getSettings(rid); |
---|
| | |
---|
| | call.enqueue(new Callback<Settings>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<Settings> call, Response<Settings> response) { |
---|
| | if (response.isSuccessful()){ |
---|
| | |
---|
| | |
---|
| | settingsMutableLiveData.setValue(response.body()); |
---|
| | settingsPreData = response.body(); |
---|
| | |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onFailure(Call<Settings> call, Throwable t) { |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //部屋の状態情報の更新(Integer) |
---|
| | public void updateState(String rid) { |
---|
| | Call<Integer> call = roomsRest.getState(rid); |
---|
| | |
---|
| | call.enqueue(new Callback<Integer>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<Integer> call, Response<Integer> response) { |
---|
| | if (response.isSuccessful()){ |
---|
| | |
---|
| | stateLiveData.setValue(response.body()); |
---|
| | |
---|
| | /* |
---|
| | if(response.body().equals(settingsPreData)){ |
---|
| | //値が一緒なら書き換えない |
---|
| |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onFailure(Call<Settings> call, Throwable t) { |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |
---|
| | //部屋の状態情報の更新(Integer) |
---|
| | public void updateState(String rid) { |
---|
| | final RoomsRest roomsRest = retrofit.create(RoomsRest.class); |
---|
| | Call<Integer> call = roomsRest.getState(rid); |
---|
| | |
---|
| | call.enqueue(new Callback<Integer>() { |
---|
| | @Override |
---|
| | public void onResponse(Call<Integer> call, Response<Integer> response) { |
---|
| | if (response.isSuccessful()){ |
---|
| | |
---|
| | stateLiveData.setValue(response.body()); |
---|
| | |
---|
| | /* |
---|
| | if(response.body().equals(settingsPreData)){ |
---|
| | //値が一緒なら書き換えない |
---|
| | }else{ |
---|
| | //値が異なるときのみライブデータを上書き |
---|
| | settingsMutableLiveData.setValue(response.body()); |
---|
| | settingsPreData = response.body(); |
---|
| | }*/ |
---|
| | |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | @Override |
---|
| | public void onFailure(Call<Integer> call, Throwable t) { |
---|
| | } |
---|
| | }); |
---|
| | } |
---|
| | |