diff --git a/app/src/main/java/com/example/cosmosclient/entities/Request.java b/app/src/main/java/com/example/cosmosclient/entities/Request.java index 5d98ea0..999dcb9 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/Request.java +++ b/app/src/main/java/com/example/cosmosclient/entities/Request.java @@ -1,5 +1,7 @@ package com.example.cosmosclient.entities; +import com.fasterxml.jackson.annotation.JsonIgnore; + import java.util.Date; public class Request { @@ -13,9 +15,13 @@ private Date deadline; // private String location; private int location; + @JsonIgnore private String name; //消 private boolean done = false; + public Request() { + } + public Request(String rId, String uri/*, UserJsonforRequests issuer*/, String product, Date date, Date deadline, int location, String name, boolean done) { this.rId = rId; this.uri = uri; diff --git a/app/src/main/java/com/example/cosmosclient/entities/Requests.java b/app/src/main/java/com/example/cosmosclient/entities/Requests.java new file mode 100644 index 0000000..df14a88 --- /dev/null +++ b/app/src/main/java/com/example/cosmosclient/entities/Requests.java @@ -0,0 +1,52 @@ +package com.example.cosmosclient.entities; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.util.ArrayList; +import java.util.List; + +public class Requests { + private List requests; + + public Requests() { + + } + + public Requests(List requests) { + this.requests = requests; + } + + public List getRequests() { + return requests; + } + + public void setRequests(List requests) { + this.requests = requests; + } + + public void addRequests(Request r) { + requests.add(r); + } + + public Request getRequest(int index) { + return requests.get(index); + } + + public void clearRequest() { + requests.clear(); + } + + public void removeRequest(int index) { + requests.remove(index); + } + + public int getRequestCount() { + return requests.size(); + } + +// @Override +// public boolean equals(Object other) { +// if (!(other instanceof Container)) return false; +// return components.equals(((Container)other).components); +// } +} diff --git a/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java b/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java index aa1b1c4..bf816eb 100644 --- a/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java +++ b/app/src/main/java/com/example/cosmosclient/entities/UserJsonforRequests.java @@ -18,12 +18,9 @@ */ public String uId, uri, name, iconUri; - public boolean login = true; //仕様ではStringを返すため //public Set tokens = new HashSet<>(); //public Set tokens = new HashSet<>(); - public String token; - private String dummyToken = "a9965652-c2ec-4a0d-a78a-b457e8b2deca"; public UserJsonforRequests() { @@ -34,9 +31,6 @@ setUri(uri); setName(name); setIconUri(iconUri); - setToken(this.dummyToken); - //addToken(this.dummyToken); - this.login = true; } public String getuId() { @@ -71,22 +65,6 @@ this.iconUri = iconUri; } - public boolean getLogin() { - return login; - } - - public void setLogin(boolean login) { - this.login = login; - } - - public void setToken(String token) { - this.token = token; - } - - public String getToken() { - return token; - } - /* * //仕様ではStringで返すため * public Set getTokens(){ diff --git a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java index 1b0e6fe..70aa7a3 100644 --- a/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java +++ b/app/src/main/java/com/example/cosmosclient/resources/GroupsRest.java @@ -4,6 +4,7 @@ import com.example.cosmosclient.entities.CreateGroupResponse; import com.example.cosmosclient.entities.Group; import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.entities.Requests; import com.example.cosmosclient.entities.User; import java.util.ArrayList; @@ -24,11 +25,11 @@ Call createGroup(@Field("name") String name, @Field("uId") String uId, @Field("token") String token); @GET("groups/{gId}/requests") - Call> getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail); + Call getRequestsListByGid(@Path("gId") String gId, @Query("token") String token, @Query("detail") boolean detail, @Query("quantity") int quantity); @POST("groups/{gId}/requests") @FormUrlEncoded - Call addRequests(@Path("gId") String gId, @Field("uId") String uId, @Field("product") String product, @Field("deadline") Date deadline, @Field("location") int location, @Field("token") String token); + Call addRequests(@Path("gId") String gId, @Field("uId") String uId, @Field("product") String product, /*@Field("deadline") Date deadline,*/ @Field("location") int location, @Field("token") String token); // @GET("{gId}/requests/{rId}") // Call getRequestsDetailByGidAndRid(@Path("gid") String gid, @Path("rid") String rid, @Query("token") String token); diff --git a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java index 934bfa0..fceaa7b 100644 --- a/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/AddRequestActivity.java @@ -144,12 +144,14 @@ Cosmos app = (Cosmos) getApplication(); // final String uId = app.getuId(); // final String gid = app.getgId(); - final String uId = "0e6f93d7-a040-4bbb-9b53-9934d4707fb7"; - final String gId = "321da586-7a50-4af4-9cb2-b4f9005051be"; - final String token = app.getToken(); + final String uId = "cbc24743-643b-4a8b-bbac-8bedb77f8ae5"; + final String gId = "8f924678-e489-4640-b827-dddc0246b30c"; +// final String token = app.getToken(); + final String token = "hoge"; final boolean detail = true; - Call call = addRequestsService.addRequests(gId, uId, inputProduct, new Date(curYear, curMonth, curDayOfMonth), Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); +// Call call = addRequestsService.addRequests(gId, uId, inputProduct, new Date(curYear, curMonth, curDayOfMonth), Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); + Call call = addRequestsService.addRequests(gId, uId, inputProduct, Yolp.getInstance().getCodeBySubcategory(selectedSubCategory), token); //サーバからのレスポンス call.enqueue(new Callback() { diff --git a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java index 4cd9ffe..fe76016 100644 --- a/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java +++ b/app/src/main/java/com/example/cosmosclient/views/RequestListActivity.java @@ -26,6 +26,7 @@ import com.example.cosmosclient.R; import com.example.cosmosclient.app.Cosmos; import com.example.cosmosclient.entities.Request; +import com.example.cosmosclient.entities.Requests; import com.example.cosmosclient.resources.GroupsRest; import com.example.cosmosclient.yolp.Yolp; @@ -35,6 +36,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.List; import java.util.Locale; import retrofit2.Call; @@ -53,6 +55,7 @@ //Request List public static ArrayList requestlist = new ArrayList<>(); + Requests requests; //Color制御 boolean productColorFlag = true; //買うもの (true:白, false:黒) boolean deadlineColorFlag = true; //購入期限 @@ -82,7 +85,7 @@ product.setColorFilter(null); productColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -116,7 +119,7 @@ deadline.setColorFilter(null); deadlineColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); if(!deadlineRotationFlag) { deadline.setRotation(0); } @@ -157,7 +160,7 @@ location.setColorFilter(null); locationColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -191,7 +194,7 @@ name.setColorFilter(null); nameColorFlag = true; ResetRequestListTable(); - AddRequestListTable(requestlist); + AddRequestListTable(requests); } else { if(deadlineRotationFlag) { deadlineRotationFlag = false; @@ -263,51 +266,6 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_request_list); - //retrofitの処理 - final Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); - - //interfaceから実装を取得 - final GroupsRest requestsService = retrofit.create(GroupsRest.class); - - //RequestList取得するための必要な情報 - Cosmos app = (Cosmos) getApplication(); - final String gId = app.getgId(); - final String token = app.getToken(); - final boolean detail = true; - - final Call> requestsListByGidCall = requestsService.getRequestsListByGid(gId, token, detail); - - //サーバからのレスポンス - requestsListByGidCall.enqueue(new Callback>() { - //成功時 - @Override - public void onResponse(Call> call, Response> response) { - if (response.isSuccessful()) { - ArrayList requestlist = response.body(); - - Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show(); - } else { - try { - System.out.println("a" + response.errorBody().string()); - } catch (IOException e) { - e.printStackTrace(); - } - //onFailureでキャッチできないエラーの処理 - Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); - } - } - - //失敗時 - @Override - public void onFailure(Call> call, Throwable t) { - //t.printStackTrace(); - Toast.makeText(RequestListActivity.this, "RequestListの取得失敗しました", Toast.LENGTH_SHORT).show(); - } - }); - Toolbar toolbar = (Toolbar) findViewById(R.id.requestlist_toolbar); setSupportActionBar(toolbar); @@ -322,15 +280,12 @@ } }); - requestlist.clear(); - - //Add Request - requestlist.add(new Request("a", "a", "わさび", new Date(2019, 6, 7), new Date(2019, 6, 7), 205002, "a-hongo", false)); - requestlist.add(new Request("b", "b","ケーキ" , new Date(2019, 6, 6), new Date(2019, 6, 6), 205001, "t-sugisawa", false)); - requestlist.add(new Request("c", "c", "からし", new Date(2018, 6, 4), new Date(2018, 6, 4), 205002, "n-kande", false)); - - //Add RequestList Table - AddRequestListTable(requestlist); +// requestlist.clear(); +// +// //Add Request +// requestlist.add(new Request("a", "a", "わさび", new Date(2019, 6, 7), new Date(2019, 6, 7), 205002, "a-hongo", false)); +// requestlist.add(new Request("b", "b","ケーキ" , new Date(2019, 6, 6), new Date(2019, 6, 6), 205001, "t-sugisawa", false)); +// requestlist.add(new Request("c", "c", "からし", new Date(2018, 6, 4), new Date(2018, 6, 4), 205002, "n-kande", false)); //LEFT hamburger button DrawerLayout requestlistDrawer = (DrawerLayout) findViewById(R.id.request_list_drawer_layout); @@ -357,13 +312,72 @@ } @Override + protected void onStart() { + super.onStart(); + + //retrofitの処理 + final Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + + //interfaceから実装を取得 + final GroupsRest requestsService = retrofit.create(GroupsRest.class); + + //RequestList取得するための必要な情報 + Cosmos app = (Cosmos) getApplication(); +// final String gId = app.getCurentGroup().getgId(); + final String gId = "8f924678-e489-4640-b827-dddc0246b30c"; +// final String token = app.getToken(); + final String token = "hoge"; + final boolean detail = true; + int quantity = 20; + + final Call requestsListByGidCall = requestsService.getRequestsListByGid(gId, token, detail, quantity); + + //サーバからのレスポンス + requestsListByGidCall.enqueue(new Callback() { + //成功時 + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + requests = response.body(); + + //Add RequestList Table + AddRequestListTable(requests); + + Toast.makeText(RequestListActivity.this, "RequestListを取得しました", Toast.LENGTH_SHORT).show(); + } else { + try { + System.out.println("a" + response.errorBody().string()); + } catch (IOException e) { + e.printStackTrace(); + } + //onFailureでキャッチできないエラーの処理 + Toast.makeText(RequestListActivity.this, "通信エラー", Toast.LENGTH_SHORT).show(); + } + } + + //失敗時 + @Override + public void onFailure(Call call, Throwable t) { + t.printStackTrace(); + Toast.makeText(RequestListActivity.this, "RequestListの取得失敗しました", Toast.LENGTH_SHORT).show(); + } + }); + + } + + @Override protected void onRestart() { super.onRestart(); ResetRequestListTable(); - //Add RequestList Table - AddRequestListTable(requestlist); + requests.clearRequest(); + +// //Add RequestList Table +// AddRequestListTable(requests); } @SuppressWarnings("StatementWithEmptyBody") @@ -393,21 +407,21 @@ return true; } - private int ConvertMonth(int i, ArrayList requestList) { - return requestList.get(i).getDeadline().getMonth() + 1; + private int ConvertMonth(int i, Requests requests) { + return requests.getRequest(i).getDeadline().getMonth() + 1; } @TargetApi(Build.VERSION_CODES.O) - private void AddRequestListTable(ArrayList requestList) { + private void AddRequestListTable(Requests requests) { Date now = new Date(); TableLayout requesttable = (TableLayout)findViewById(R.id.RequestList); requesttable.setShrinkAllColumns(true); - for (int i = 0; i < requestList.size(); i++) { + for (int i = 0; i < requests.getRequestCount(); i++) { TableRow tableRow = new TableRow(this); TextView textProduct = new TextView(this); - textProduct.setText(requestList.get(i).getProduct()); + textProduct.setText(requests.getRequest(i).getProduct()); textProduct.setTextSize(20); textProduct.setHeight(150); textProduct.setGravity(Gravity.CENTER); @@ -423,7 +437,9 @@ // if (requestList.get(i).getDeadline().getMonth() == now.getMonth() && requestList.get(i).getDeadline().getDate() - now.getDate() == 1) { // textDeadline.setText("明日まで"); // } - textDeadline.setText(ConvertMonth(i, requestList) + "/" + requestList.get(i).getDeadline().getDate()); + if(requests.getRequest(i).getDeadline() != null) { + textDeadline.setText(ConvertMonth(i, requests) + "/" + requests.getRequest(i).getDeadline().getDate()); + } // textDeadline.setText(now.getMonth() + "/" + now.getDate()); textDeadline.setTextSize(20); textDeadline.setHeight(150); @@ -431,7 +447,9 @@ tableRow.addView(textDeadline, new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT)); TextView textLocation = new TextView(this); - textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requestList.get(i).getLocation()).getSubName()); + if(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()) != null) { + textLocation.setText(Yolp.getInstance().getSubCategoryByCode(requests.getRequest(i).getLocation()).getSubName()); + } textLocation.setTextSize(20); textLocation.setHeight(150); textLocation.setGravity(Gravity.CENTER); @@ -439,7 +457,7 @@ TextView textName = new TextView(this); // requestList.get(i).getIssuer().getName(); - textName.setText(requestList.get(i).getName()); + textName.setText(requests.getRequest(i).getIssuer().getName()); textName.setTextSize(20); textName.setHeight(150); textName.setGravity(Gravity.CENTER); @@ -459,38 +477,38 @@ } } - private ArrayList SortProduct() { - ArrayList productsortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortProduct() { + List productsortRequestlist = (List) requests.getRequests(); Collections.sort(productsortRequestlist, productSortComparator); - return productsortRequestlist; + return new Requests(productsortRequestlist); } - private ArrayList SortDeadline() { - ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortDeadline() { + List deadlinesortRequestlist = (List) requests.getRequests(); Collections.sort(deadlinesortRequestlist, deadlineSortComparator); - return deadlinesortRequestlist; + return new Requests(deadlinesortRequestlist); } - private ArrayList ReverseDeadline() { - ArrayList deadlinesortRequestlist = (ArrayList) requestlist.clone(); + private Requests ReverseDeadline() { + List deadlinesortRequestlist = (List) requests.getRequests(); Collections.sort(deadlinesortRequestlist, deadlineReverseComparator); - return deadlinesortRequestlist; + return new Requests(deadlinesortRequestlist); } - private ArrayList SortLocation() { - ArrayList locationsortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortLocation() { + List locationsortRequestlist = (List) requests.getRequests(); Collections.sort(locationsortRequestlist, locationSortComparator); - return locationsortRequestlist; + return new Requests(locationsortRequestlist); } - private ArrayList SortName() { - ArrayList namesortRequestlist = (ArrayList) requestlist.clone(); + private Requests SortName() { + List namesortRequestlist = (List) requests.getRequests(); Collections.sort(namesortRequestlist, nameSortComparator); - return namesortRequestlist; + return new Requests(namesortRequestlist); } } \ No newline at end of file