diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 675c8ed..0e9093e 100644 --- a/.idea/caches/build_file_checksums.ser +++ b/.idea/caches/build_file_checksums.ser Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 8d58ebc..02b0f1a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,4 +38,6 @@ implementation group: 'net.arnx', name: 'jsonic', version: '1.3.10' implementation 'com.android.support:cardview-v7:27.1.1' implementation 'com.google.android.gms:play-services-maps:15.0.1' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4fb2447..e9f8039 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -41,6 +41,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java new file mode 100644 index 0000000..8fe2513 --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Account.java @@ -0,0 +1,68 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import net.arnx.jsonic.JSONHint; + +public class Account { + private String id, name, token, pass, uniqueID; + private boolean login = false; + + public Account(String userID, String userName, String userPass, String uniqueID) { + setId(userID); + setName(userName); + setPass(userPass); + setUniqueID(uniqueID); + formToken(); + login = true; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @JSONHint(ignore=true) + public String getPass() { + return pass; + } + + public void setPass(String pass) { + this.pass = pass; + } + + public boolean isLogin() { + return login; + } + + public void setLogin(boolean login) { + this.login = login; + } + + public String getToken() { + return token; + } + + public String formToken() { + token = RandomStringGenerator.generateRandomString(64, RandomStringGenerator.ALPHA_NUMERIC); + return token; + } + + @JSONHint(ignore=true) + public String getUniqueID() { + return uniqueID; + } + + public void setUniqueID(String uniqueID) { + this.uniqueID = uniqueID; + } +} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java deleted file mode 100644 index 15154d7..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/AddressedEntity.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models; - -/** - * 各リソースをPOSTで作成した際に, 当該リソースの実体とURIを呼び出し元に返すときに用いるクラス - * @author r-isitani - * - */ - -public abstract class AddressedEntity { - private Entity body; - - protected AddressedEntity() { - // JSONDecode時の呼び出し用 - } - - public AddressedEntity(Entity body) { - setBody(body); - } - - public Entity getBody() { - return body; - } - - public void setBody(Entity body) { - this.body = body; - } -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java deleted file mode 100644 index f0997b9..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/Entity.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models; - -/** - * AddressedEntityクラスにて扱う実体を表す抽象クラス - * @author r-isitani - * - */ - -public abstract class Entity { - -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/RandomStringGenerator.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/RandomStringGenerator.java new file mode 100644 index 0000000..6796d1d --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/RandomStringGenerator.java @@ -0,0 +1,29 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import java.util.Set; + +import org.apache.commons.lang3.RandomStringUtils; + +public class RandomStringGenerator { + public static final String ALPHA_NUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + + private RandomStringGenerator() { + + } + + static public String generateRandomString(int num, String seed) { + return RandomStringUtils.random(num, seed); + } + + static public boolean checkString(String str, Set set) { + return set.contains(str); + } + + static public String generateUniqueString(int num, String seed, Set set) { + String str; + do { + str = generateRandomString(num, seed); + } while (checkString(str, set)); + return str; + } +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java new file mode 100644 index 0000000..634ccaf --- /dev/null +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedAccount.java @@ -0,0 +1,39 @@ +package org.ntlab.radishforandroidstudio.cactusClient.models; + +import java.net.URI; + +public class URIAddressedAccount{ + private URI uri; + private Account account; + + private URIAddressedAccount() { + // JSONDecode時の呼び出し用 + } + + public URIAddressedAccount(URI uri, Account body) { + setAccount(body); + setUri(uri); + } + + public URIAddressedAccount(String str, Account body) { + setAccount(body); + setUri(URI.create(str)); + } + + public URI getUri() { + return uri; + } + + public void setUri(URI uri) { + this.uri = uri; + } + + public Account getAccount() { + return account; + } + + public void setAccount(Account account) { + this.account = account; + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java deleted file mode 100644 index fddd54d..0000000 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/models/URIAddressedEntity.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.ntlab.radishforandroidstudio.cactusClient.models; - -import java.net.URI; - -public class URIAddressedEntity extends AddressedEntity { - private URI uri; - - private URIAddressedEntity() { - // JSONDecode時の呼び出し用 - } - - public URIAddressedEntity(URI uri, Entity body) { - super(body); - setUri(uri); - } - - public URIAddressedEntity(String str, Entity body) { - super(body); - setUri(URI.create(str)); - } - - public URI getUri() { - return uri; - } - - public void setUri(URI uri) { - this.uri = uri; - } - -} diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java index 3c678f2..9aabc51 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/InstancesFragment.java @@ -1,7 +1,6 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; -import android.accounts.Account; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -9,41 +8,60 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; -import android.widget.EditText; -import android.widget.Toast; - +import android.widget.ListView; import org.ntlab.radishforandroidstudio.R; +import java.util.ArrayList; +import java.util.List; + public class InstancesFragment extends Fragment { + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + + //このあたりで、サーバーと通信して、インスタンスの情報をとってくる + //............................................................... + // + + // Inflate the layout for this fragment return inflater.inflate(R.layout.instances_fragment, container, false); } + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + // ListViewに表示するデータ + final ArrayList items = new ArrayList<>(); + items.add("データ1"); + items.add("データ2"); + items.add("データ3"); - public void onStart() { - super.onStart(); - - Button button = (Button) getActivity().findViewById(R.id.Instance1); - //↓↓↓↓↓↓↓↓画面遷移↓↓↓↓↓↓↓↓ - button.setOnClickListener(new View.OnClickListener() { - + // ListViewをセット + final ArrayAdapter adapter = new ArrayAdapter(this.getContext(), android.R.layout.simple_list_item_1, items); + ListView listView = (ListView) view.findViewById(R.id.list_view); + listView.setAdapter(adapter); + // セルを選択されたら詳細画面フラグメント呼び出す + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override - public void onClick(View v) { - //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); + public void onItemClick(AdapterView parent, View v, int position, long id) { + + //ここでサーバーに何番のインスタンスが選ばれたのかを送信して、受け取った値に応じてキャラクターを送信しなければならない + //................................................... + // FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); - transaction.replace(R.id.fragment_place, new CharactersFragment()); - transaction.commit(); } }); } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java index 4cc9675..93f93d4 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/LoginFragment.java @@ -1,7 +1,5 @@ package org.ntlab.radishforandroidstudio.cactusClient.views; - -import android.accounts.Account; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -11,16 +9,9 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; -import android.widget.Toast; - -import net.arnx.jsonic.JSON; - import org.ntlab.radishforandroidstudio.R; -import org.ntlab.radishforandroidstudio.cactusClient.Cactus; import org.ntlab.radishforandroidstudio.cactusClient.connections.LoginFragmentConnection; -import org.ntlab.radishforandroidstudio.cactusClient.views.InstancesFragment; -import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedEntity; -import org.ntlab.radishforandroidstudio.framework.network.CallBack; + public class LoginFragment extends Fragment { private LoginFragmentConnection connection; @@ -44,13 +35,10 @@ @Override public void onClick(View v) { //Toast.makeText(getActivity(), "hoge!", Toast.LENGTH_SHORT).show(); - FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); - transaction.addToBackStack(null); transaction.replace(R.id.fragment_place, new SignUpFragment()); - transaction.commit(); } }); @@ -63,51 +51,48 @@ EditText userName = (EditText)getActivity().findViewById(R.id.inputUserName); EditText passWord = (EditText)getActivity().findViewById(R.id.checkPassword); +// /**************************************************************** +// テストするなら以下を実行するとパスの入力をしなくても画面遷移します + FragmentManager manager = getFragmentManager(); + FragmentTransaction transaction = manager.beginTransaction(); + transaction.replace(R.id.fragment_place, new InstancesFragment()); - if (userName.getText().toString().isEmpty()) { - Toast.makeText(getActivity(), "ユーザー名が未記入です", Toast.LENGTH_SHORT).show(); - } else if(passWord.getText().toString().isEmpty()){ - Toast.makeText(getActivity(), "パスワードが未記入です", Toast.LENGTH_SHORT).show(); - } else { + transaction.commit(); +// **********************************************************************/ - connection = new LoginFragmentConnection(); - connection.setCallBack(new CallBack() { - @Override - public void onResponse(String response) { - //通信した時の処理を書くのだよ - URIAddressedEntity lac = JSON.decode(response, URIAddressedEntity.class); - - System.out.println("///////////////////////////////////////////////"); - - - - - System.out.println(response); - - //Cactus.setMyAccount((Account)lac.getBody()); - - - if(response.contains("\"login\":true,")){ - Toast.makeText(getActivity(),"ログインに成功しました。", Toast.LENGTH_SHORT).show(); - - FragmentManager manager = getFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - - transaction.replace(R.id.fragment_place, new InstancesFragment()); - - transaction.commit(); - - }else { - Toast.makeText(getActivity(),"ログインに失敗しました。", Toast.LENGTH_SHORT).show(); - } - - } - }); - connection.addFormParam("userID", userName.getText().toString()); - connection.addFormParam("userPass", passWord.getText().toString()); - connection.doPut(); - } +// +// if (userName.getText().toString().isEmpty()) { +// Toast.makeText(getActivity(), "ユーザー名が未記入です", Toast.LENGTH_SHORT).show(); +// } else if(passWord.getText().toString().isEmpty()){ +// Toast.makeText(getActivity(), "パスワードが未記入です", Toast.LENGTH_SHORT).show(); +// } else { +// +// connection = new LoginFragmentConnection(); +// connection.setCallBack(new CallBack() { +// @Override +// public void onResponse(String response) { +// //通信した時の処理を書くのだよ +// URIAddressedEntity lac = JSON.decode(response, URIAddressedEntity.class); +// System.out.println("///////////////////////////////////////////////"); +// System.out.println(response); +// +// if(response.contains("\"login\":true,")){ +// Toast.makeText(getActivity(),"ログインに成功しました。", Toast.LENGTH_SHORT).show(); +// FragmentManager manager = getFragmentManager(); +// FragmentTransaction transaction = manager.beginTransaction(); +// transaction.replace(R.id.fragment_place, new InstancesFragment()); +// transaction.commit(); +// }else { +// Toast.makeText(getActivity(),"ログインに失敗しました。", Toast.LENGTH_SHORT).show(); +// } +// +// } +// }); +// connection.addFormParam("userID", userName.getText().toString()); +// connection.addFormParam("userPass", passWord.getText().toString()); +// connection.doPut(); +// } } }); diff --git a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java index 4506291..57064dc 100644 --- a/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java +++ b/app/src/main/java/org/ntlab/radishforandroidstudio/cactusClient/views/SignUpFragment.java @@ -13,7 +13,7 @@ import net.arnx.jsonic.JSON; import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.connections.SignUpFragmentConnection; -import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedEntity; +import org.ntlab.radishforandroidstudio.cactusClient.models.URIAddressedAccount; import org.ntlab.radishforandroidstudio.framework.network.CallBack; public class SignUpFragment extends Fragment { @@ -78,7 +78,7 @@ @Override public void onResponse(String response) { //通信した時の処理を書くのだよ - URIAddressedEntity ac = JSON.decode(response, URIAddressedEntity.class); + URIAddressedAccount ac = JSON.decode(response, URIAddressedAccount.class); System.out.println(ac.getUri()); System.out.println(response); Toast.makeText(getActivity(),response, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/res/layout/instances_fragment.xml b/app/src/main/res/layout/instances_fragment.xml index eca4d58..633c39a 100644 --- a/app/src/main/res/layout/instances_fragment.xml +++ b/app/src/main/res/layout/instances_fragment.xml @@ -6,9 +6,24 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -