package com.example.cosmosclient.services; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import com.example.cosmosclient.app.Cosmos; import com.example.cosmosclient.entities.AddRequestsResponse; import com.example.cosmosclient.entities.Group; import com.example.cosmosclient.entities.Request; import com.example.cosmosclient.resources.GroupsRest; import java.io.IOException; import retrofit2.Call; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; public class NotificationDone extends BroadcastReceiver { //retrofitの処理 final Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rest/") // .baseUrl("http://10.0.2.2:8080/rest/") .addConverterFactory(JacksonConverterFactory.create()) .build(); //interfaceから実装を取得 final GroupsRest requestsService = retrofit.create(GroupsRest.class); @Override public void onReceive(Context context, Intent intent) { Cosmos app = (Cosmos) context.getApplicationContext(); String gId = intent.getExtras().getString("gId"); Request editRequest = app.getGroup(gId).getRequestList().getRequestById(intent.getExtras().getString("rId")); if(gId == null){ System.out.println("error"); return; } if(editRequest == null){ System.out.println("cannot find Request"); return; } doneRequest(gId, editRequest); } //引数で受け取ったリクエストを達成する public void doneRequest(final String gId, final Request request){ new Thread(new Runnable() { public void run() { String deadline = null; //Date型のフォーマット設定 if (request.getDeadline() != null) { deadline = String.format("%d-%02d-%02d %02d:%02d:%02d", request.getDeadline().getYear(), request.getDeadline().getMonth() + 1, request.getDeadline().getDate() + 1, 23, 59, 59); } final Call<AddRequestsResponse> updateRequestCall = requestsService.updateRequest(gId, request.getrId(), request.getIssuer().getuId(), request.getProduct(), deadline, request.getLocation(), true, "token"); Response<AddRequestsResponse> response; try { response = updateRequestCall.execute(); if (response.isSuccessful()) { AddRequestsResponse result = response.body(); // Toast.makeText(RequestListActivity.this, "RequestListを達成しました", Toast.LENGTH_SHORT).show(); // requestList.removeRequests(selectedRequestList); // handler.post(new Runnable() { // @Override // public void run() { // ResetRequestListTable(); // AddRequestListTable(requestList); // } // }); } else { // onFailure try { System.out.println(response.errorBody().string()); } catch (IOException e) { e.printStackTrace(); } //onFailureでキャッチできないエラーの処理 // Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); } } catch (IOException e) { e.printStackTrace(); // Toast.makeText(RequestListActivity.this, "RequestListの達成失敗しました", Toast.LENGTH_SHORT).show(); } } }).start(); } }