diff --git a/.idea/misc.xml b/.idea/misc.xml index 658b7fd..8de8a6e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,65 +3,30 @@ diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java index dd5cb03..220bc75 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/EditorJson.java @@ -1,11 +1,12 @@ package org.ntlab.acanthus_client.entities; import java.util.ArrayList; +import java.util.Collection; //----------------------------------------------------------------- // 作品編集者の一覧 public class EditorJson { - private ArrayList uidList = new ArrayList<>(); + private ArrayList uid = new ArrayList<>(); //----------------------------------------------------------------- public EditorJson() { @@ -13,13 +14,13 @@ //----------------------------------------------------------------- // getter - public ArrayList getUidList() { - return uidList; + public Collection getUid() { + return uid; } //----------------------------------------------------------------- // setter - public void addUid(Integer uid) { - this.uidList.add(uid); + public void setAid(ArrayList uid) { + this.uid = uid; } } diff --git a/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java b/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java index 6e8db8f..7f15a92 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java +++ b/app/src/main/java/org/ntlab/acanthus_client/entities/InvitesJson.java @@ -1,17 +1,18 @@ package org.ntlab.acanthus_client.entities; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.ArrayList; import java.util.Collection; public class InvitesJson { - private Collection invites; + @JsonProperty("invites") + private ArrayList invites = new ArrayList<>(); - public InvitesJson(Collection accounts) { - for(Account inviter : accounts){ - this.invites.add(inviter.getUid()); - } + public InvitesJson() { } - public Collection getInvitesJson() { + public ArrayList getInvites() { return invites; } diff --git a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java index 8aa03ae..ee28858 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java +++ b/app/src/main/java/org/ntlab/acanthus_client/resources/gallery/InvitesRest.java @@ -30,7 +30,7 @@ @FormUrlEncoded @PUT("gallery/{aid}/invites") - Call addInvite( + Call addInvite( @Path("aid") Integer aid, @Field("ownerUid") String ownerUid, @Field("invitedUid") String invitedUid, diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java index c01a1c9..6e9bee7 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteActivity.java @@ -16,7 +16,7 @@ import org.ntlab.acanthus_client.entities.Account; import org.ntlab.acanthus_client.entities.AccountJson; import org.ntlab.acanthus_client.entities.EditorJson; -import org.ntlab.acanthus_client.entities.FollowerUidJson; +import org.ntlab.acanthus_client.entities.FollowerJson; import org.ntlab.acanthus_client.entities.InvitesJson; import org.ntlab.acanthus_client.entities.WorkJson; import org.ntlab.acanthus_client.views.main_menu_ui.edit.EditViewModel; @@ -31,14 +31,12 @@ private Integer invitedUid; private String ownerToken; private Acanthus acanthus; - private Collection followersUidList = new ArrayList<>(); + private ArrayList followersUidList = new ArrayList<>(); + private ArrayList followersNameList = new ArrayList<>(); private ArrayList collectionAccountUid = new ArrayList<>(); - private Collection collectionAccountName = new ArrayList<>(); private EditorJson editorJson; private InvitesJson invitedUidList; - private static final String[] scenes = { - "UserName", - }; + private Integer followersNameIndex; //----------------------------------------------------------------- @Override @@ -57,10 +55,11 @@ //フォロワー情報を取得する inviteViewModel.startFollowersUidJson(uid, aid, ownerToken); - inviteViewModel.getFollowerUidJson().observe(this, new Observer() { + inviteViewModel.getFollowerUidJson().observe(this, new Observer() { @Override - public void onChanged(FollowerUidJson followerUidJson) { - followersUidList = (ArrayList) inviteViewModel.getFollowerUidJson().getValue().getFollowersUid(); + public void onChanged(FollowerJson followerUidJson) { + followersUidList = inviteViewModel.getFollowerUidJson().getValue().getFollowerUids(); + followersNameList = inviteViewModel.getFollowerUidJson().getValue().getFollowerNames(); inviteViewModel.startGalleryInvites(aid, ownerToken); } }); @@ -80,57 +79,42 @@ public void onChanged(EditorJson collectionAccount) { editorJson = inviteViewModel.getEditorJson().getValue(); - inviteViewModel.startAccountJson(); - } - }); - - //すべてのユーザIDと名前を取得 - inviteViewModel.getCollectionAccountJson().observe(this, new Observer>() { - @Override - public void onChanged(Collection collectionAccountJson) { - collectionAccountJson = (Collection) inviteViewModel.getCollectionAccountJson().getValue(); - if(collectionAccountJson != null){ - if(editorJson != null){ - for(Integer editorUid : editorJson.getUidList()){ - followersUidList.remove(editorUid); - } + if(editorJson != null){ + for(Integer editorUid : editorJson.getUid()){ + followersNameIndex = followersUidList.indexOf(editorUid); + followersUidList.remove(editorUid); + followersNameList.remove(followersNameIndex); } - - if(invitedUidList != null){ - for(Integer invitedUid : invitedUidList.getInvitesJson()){ - followersUidList.remove(invitedUid); - } - } - - - for(AccountJson accountJson : collectionAccountJson){ - if(followersUidList.contains(accountJson.getUid())) { - collectionAccountUid.add(accountJson.getUid()); - collectionAccountName.add(accountJson.getName()); - } - } - // BaseAdapter を継承したadapterのインスタンスを生成 - // レイアウトファイル list.xml を activity_main.xml に - // inflate するためにadapterに引数として渡す - BaseAdapter adapter = new ListViewAdapter(getApplication(), R.layout.list, (ArrayList) collectionAccountName); - - // ListViewにadapterをセット - listView.setAdapter(adapter); - - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long id) { - invitedUid = collectionAccountUid.get(position); - inviteViewModel.addInvite(aid, uid.toString(), invitedUid.toString(), ownerToken); - } - }); } + + if(invitedUidList != null){ + for(Integer invitedUid : invitedUidList.getInvites()){ + followersNameList.remove(followersUidList.indexOf(invitedUid)); + followersUidList.remove(invitedUid); + } + } + + // BaseAdapter を継承したadapterのインスタンスを生成 + // レイアウトファイル list.xml を activity_main.xml に + // inflate するためにadapterに引数として渡す + BaseAdapter adapter = new ListViewAdapter(getApplication(), R.layout.invites_list, followersNameList); + + // ListViewにadapterをセット + listView.setAdapter(adapter); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int position, long id) { + invitedUid = followersUidList.get(position); + inviteViewModel.addInvite(aid, uid.toString(), invitedUid.toString(), ownerToken); + } + }); } }); - inviteViewModel.getMessage().observe(this, new Observer() { + inviteViewModel.getMessage().observe(this, new Observer() { @Override - public void onChanged(String message) { + public void onChanged(Boolean message) { finish(); } }); diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java index 25b0742..5fda98b 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/InviteViewModel.java @@ -13,7 +13,7 @@ import org.ntlab.acanthus_client.entities.Animation; import org.ntlab.acanthus_client.entities.AnimationJson; import org.ntlab.acanthus_client.entities.EditorJson; -import org.ntlab.acanthus_client.entities.FollowerUidJson; +import org.ntlab.acanthus_client.entities.FollowerJson; import org.ntlab.acanthus_client.entities.InvitesJson; import org.ntlab.acanthus_client.resources.accounts.AccountsRest; import org.ntlab.acanthus_client.resources.accounts.FollowersRest; @@ -34,10 +34,10 @@ public class InviteViewModel extends ViewModel { - private MutableLiveData followersUidJsonMutableLiveData; + private MutableLiveData followersUidJsonMutableLiveData; private MutableLiveData> collectionAccountJsonMutableLiveData; private MutableLiveData collectionInvitesJsonMutableLiveData; - private MutableLiveData messageMutableLiveData; + private MutableLiveData messageMutableLiveData; private MutableLiveData editorJsonMutableLiveData; @@ -49,7 +49,7 @@ this.editorJsonMutableLiveData = new MutableLiveData<>(); } - public LiveData getFollowerUidJson() { + public LiveData getFollowerUidJson() { return this.followersUidJsonMutableLiveData; } @@ -61,7 +61,7 @@ return this.collectionInvitesJsonMutableLiveData; } - public LiveData getMessage() { + public LiveData getMessage() { return this.messageMutableLiveData; } @@ -75,10 +75,10 @@ .addConverterFactory(JacksonConverterFactory.create()) .build(); final FollowersRest followersRest = retrofit.create(FollowersRest.class); - Call call = followersRest.getFollowers(uid); - call.enqueue(new Callback() { + Call call = followersRest.getFollowers(uid); + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if(response.isSuccessful()){ if (response.body() != null) { followersUidJsonMutableLiveData.setValue(response.body()); @@ -87,7 +87,7 @@ } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { startGalleryInvites(aid, ownerToken); } }); @@ -136,35 +136,11 @@ @Override public void onFailure(Call call, Throwable t) { - startAccountJson(); + editorJsonMutableLiveData.setValue(null); } }); } - public void startAccountJson(){ - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/acanthus/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); - final AccountsRest accountsRest = retrofit.create(AccountsRest.class); - Call> call = accountsRest.getAccounts(null); - call.enqueue(new Callback>() { - @Override - public void onResponse(Call> call, Response> response) { - if(response.isSuccessful()){ - if (response.body() != null) { - collectionAccountJsonMutableLiveData.setValue(response.body()); - } - } - } - - @Override - public void onFailure(Call> call, Throwable t) { - } - }); - } - - public void addInvite(Integer aid, String ownerUid, String invitedUid, String ownerToken){ Retrofit retrofit = new Retrofit.Builder() @@ -172,10 +148,10 @@ .addConverterFactory(JacksonConverterFactory.create()) .build(); final InvitesRest invitesRest = retrofit.create(InvitesRest.class); - Call call = invitesRest.addInvite(aid, ownerUid, invitedUid, ownerToken); - call.enqueue(new Callback() { + Call call = invitesRest.addInvite(aid, ownerUid, invitedUid, ownerToken); + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if(response.isSuccessful()){ if (response.body() != null) { messageMutableLiveData.setValue(response.body()); @@ -184,7 +160,7 @@ } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { } }); } diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java index 462e862..e3d1bf5 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/ListViewAdapter.java @@ -41,7 +41,7 @@ convertView = inflater.inflate(itemLayoutId, parent, false); // ViewHolder を生成 holder = new ViewHolder(); - holder.textView = convertView.findViewById(R.id.textView); + holder.textView = convertView.findViewById(R.id.textViewInvitesName); convertView.setTag(holder); } // holder を使って再利用 diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java index a014d0c..0fa352e 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/models/InvitesConnectionModel.java @@ -50,15 +50,15 @@ String token = "abc0"; int dummyAid = 1111; - Call call = invitesRest.addInvite(dummyAid, owner.toString(), invitedUid.toString(), token); - call.enqueue(new Callback() { + Call call = invitesRest.addInvite(dummyAid, owner.toString(), invitedUid.toString(), token); + call.enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if (response.isSuccessful()) ; } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { } }); diff --git a/app/src/main/res/layout/invites_list.xml b/app/src/main/res/layout/invites_list.xml new file mode 100644 index 0000000..26edc44 --- /dev/null +++ b/app/src/main/res/layout/invites_list.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file