package org.ntlab.radishforandroidstudio.CactusCleanArchitecture.Controller; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.widget.Toast; import net.arnx.jsonic.JSON; import net.arnx.jsonic.TypeReference; import org.ntlab.radishforandroidstudio.CactusCleanArchitecture.Entities.CactusConnection; import org.ntlab.radishforandroidstudio.CactusCleanArchitecture.UseCases.UserLoginBoundary; import org.ntlab.radishforandroidstudio.CactusCleanArchitecture.UseCases.UserLoginControllerBoundary; import org.ntlab.radishforandroidstudio.CactusCleanArchitecture.UseCases.UserLoginUseCases; import org.ntlab.radishforandroidstudio.R; import org.ntlab.radishforandroidstudio.cactusClient.Cactus; import org.ntlab.radishforandroidstudio.cactusClient.models.account.Account; import org.ntlab.radishforandroidstudio.cactusClient.models.account.URIAddressedAccount; import org.ntlab.radishforandroidstudio.cactusClient.views.InstancesFragment; import org.ntlab.radishforandroidstudio.framework.network.CallBack; /** * Webサーバと通信を行いデータのやりとりをするクラス * * @author n-konishi */ public class UserLoginController { private String userID; private String userPass; private FragmentManager manager; private CactusConnection loginConnection; private FragmentActivity fragmentActivity; private UserLoginControllerBoundary userLoginControllerBoundary; public UserLoginController(FragmentActivity fragmentActivity, FragmentManager fragmentManager, UserLoginControllerBoundary userLoginControllerBound) { this.fragmentActivity = fragmentActivity; this.manager = fragmentManager; this. userLoginControllerBoundary = userLoginControllerBound; this.userID = userLoginControllerBoundary.getUserID(); this.userPass = userLoginControllerBoundary.getUserPass(); UserLoginBoundary userLoginBoundary = null; UserLoginUseCases loginUseCases = new UserLoginUseCases(userLoginBoundary); String login_URL = loginUseCases.userLoginURL(); loginConnection = new CactusConnection(login_URL); } public void addFormParam() { loginConnection.addFormParam("userID", userID); loginConnection.addFormParam("userPass", userPass); loginConnection.doPut(); } private void decodeJson(String response) { URIAddressedAccount lac = JSON.decode(response, new TypeReference<URIAddressedAccount>() { }); System.out.println(response); Account user = lac.getAccount(); if (user.isLogin()) { System.out.println("成功"); Toast.makeText(fragmentActivity,"ログインに成功しました。", Toast.LENGTH_SHORT).show(); Cactus userCactus = (Cactus) fragmentActivity.getApplication(); userCactus.setMyAccount(user); userCactus.setAddressedAccount(lac); //画面遷移 FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.fragment_place, new InstancesFragment()); transaction.commit(); } else { Toast.makeText(fragmentActivity,"ログインに失敗しました。", Toast.LENGTH_SHORT).show(); } } public void loginResponse() { loginConnection.setCallBack(new CallBack() { @Override public void onResponse(String response) { decodeJson(response); } }); } }