diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f677df0..85fa6bb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,6 +83,12 @@ + + + + + + diff --git a/app/src/main/java/com/example/cosmosclient/entities/RequestList.java b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java index 3a5b319..8ae645b 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/RequestList.java +++ b/app/src/main/java/com/example/cosmosclient/entities/RequestList.java @@ -32,6 +32,15 @@ return requests.get(index); } + public Request getRequestById(String rId){ + for(Request request : getRequests()){ + if(request.getrId().equals(rId)){ + return request; + } + } + return null; + } + public void clearRequest() { requests.clear(); } diff --git a/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java b/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java index 14935c6..92d5bcc 100644 --- a/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java +++ b/app/src/main/java/com/example/cosmosclient/services/CosmosBackgroundService.java @@ -44,6 +44,7 @@ import java.util.TimeZone; import java.util.Timer; import java.util.TimerTask; +import java.util.UUID; import retrofit2.Call; import retrofit2.Callback; @@ -51,6 +52,8 @@ import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; +import static android.app.Notification.EXTRA_NOTIFICATION_ID; + public class CosmosBackgroundService extends IntentService implements LocationListener { private Context context; @@ -263,12 +266,17 @@ private void sendNotifications(CosmosBackgroundService cosmosBackgroundService, List notifications) { int notificationId = 1; -// MainActivity→broadcastreseiver(?)に変更 -// Intent intent = new Intent(cosmosBackgroundService, MainActivity.class); -// 以下二行はボタンについてだよ -// PendingIntent pendingIntent = PendingIntent.getActivity(cosmosBackgroundService, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); -// android.app.Notification.Action action = new android.app.Notification.Action(R.drawable.notification_icon, "ボタンだよ", pendingIntent); + //以下はボタンについてだよ + Intent intent = new Intent(cosmosBackgroundService, NotificationDone.class); + //snoozeIntent.setAction(ACTION_NOTIFICATION_OFF); + intent.putExtra(EXTRA_NOTIFICATION_ID, 0); + //以下2行はテスト用。本来はNotificationから取ってくる。 + intent.putExtra("gId", UUID.randomUUID().toString()); + intent.putExtra("rId", "rid2"); + int randamCode = (int)(Math.random()*100000); + PendingIntent pendingIntent = PendingIntent.getBroadcast(cosmosBackgroundService, randamCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); +// android.app.Notification.Action action = new android.app.Notification.Action(R.drawable.notification_icon, "ボタンだよ", pendingIntent); android.app.Notification notification = new android.app.Notification.Builder(cosmosBackgroundService) .setContentTitle("通知タイトル") .setContentText("通知ないよう") diff --git a/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java b/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java new file mode 100644 index 0000000..af55e7c --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/services/NotificationDone.java @@ -0,0 +1,86 @@ +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(String gId, Request request){ + //Date型のフォーマット設定 + String deadline = null; + 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 updateRequestCall = requestsService.updateRequest(gId, request.getrId(), request.getIssuer().getuId(), request.getProduct(), deadline, request.getLocation(), true, "token"); + Response 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(); + + } + } +} diff --git a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java index bafa874..8db61a1 100644 --- a/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/SignupActivity.java @@ -216,23 +216,23 @@ @Override public void afterTextChanged(Editable s){ + final int maxStringLength = 21; switch(view.getId()) { case R.id.NameText: - if (s.length() > 0) { + if (0 < s.length() && s.length() < maxStringLength){ nameEnable = true; - } else { - nameEnable = false; + } else { nameEnable = false; } break; case R.id.PasswordText: - if(s.length()>0){ + if(0 < s.length() && s.length() < maxStringLength){ pwEnable=true; }else{ pwEnable=false; } break; case R.id.ConfirmPasswordText: - if(s.length()>0){ + if(0 < s.length() && s.length() < maxStringLength){ cpwEnable=true; }else{ cpwEnable=false; diff --git a/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java b/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java new file mode 100644 index 0000000..79a5bbe --- /dev/null +++ b/app/src/test/java/com/example/cosmosclient/NotificationDoneTestMain.java @@ -0,0 +1,28 @@ +package com.example.cosmosclient; + +import com.example.cosmosclient.entities.Feature; +import com.example.cosmosclient.entities.Group; +import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.entities.UserJsonforRequests; +import com.example.cosmosclient.services.Notification; +import com.example.cosmosclient.services.NotificationDone; + +import java.util.Date; +import java.util.List; + +public class NotificationDoneTestMain { + public static void main(String[] args) { + //以下の変数は、変更したいリクエストに合わせて変更する必要があります。 + String rid = "a87c2716-0174-40bc-bb41-a1ce8b6009bb"; + String rUri = "http://nitta-lab-www.is.konan-u.ac.jp/cosmos/rset/groups/909221c1-c343-405e-8b39-f0dbed60e48b/requests/a87c2716-0174-40bc-bb41-a1ce8b6009bb"; + String product = "mimiz"; + int location = 20501; + String gid = "909221c1-c343-405e-8b39-f0dbed60e48b"; + String issuerUid = "d3c73732-1287-4fa4-bb74-c9342be81fde"; + + NotificationDone notificationDone = new NotificationDone(); +// Notification notification = new Notification(new Request(rid, rUri, product, new Date(), new Date(), location, "name", false), new Group(gid, "uri", "name", "uId"), null); + Request request = new Request(rid, rUri, product, new Date(), new Date(), location, "name", true); + notificationDone.doneRequest(gid, request); + } +} \ No newline at end of file