Newer
Older
NemophilaClient / app / src / main / java / com / example / nemophila / LoginActivity.java
package com.example.nemophila;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.example.nemophila.entities.Account;
import com.example.nemophila.entities.AccountJson;
import com.example.nemophila.resources.AccountsRest;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;

@JsonIgnoreProperties(ignoreUnknown=true)
public class LoginActivity extends AppCompatActivity {

    private Retrofit retrofit;
    private AccountsRest AccountsRest;
    private Nemophila nemophila;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        //Nemophilaと連携
        nemophila = (Nemophila) this.getApplication();
        //Nemophilaにtokenとuidがある場合ログイン画面をスキップ
        if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){
            Intent intent = new Intent(LoginActivity.this,MapsActivity.class);
            startActivity(intent);
            return;
        }

        //通信の初期化
        this.retrofit = new Retrofit.Builder()
                .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
        this.AccountsRest = retrofit.create(AccountsRest.class);

//Loginボタンを押したとき
        findViewById(R.id.LoginButton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //IDとpwの入力
                EditText edituid = (EditText) findViewById(R.id.editTextUserID);
                String uid = edituid.getText().toString();
                EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword);
                String pw = editpw.getText().toString();

                // 通信
                Call<AccountJson> call = AccountsRest.getAccounts(uid,pw);

                call.enqueue (new Callback<AccountJson>() {
                    @Override
                    public void onResponse(Call<AccountJson> call, Response<AccountJson> response) {
                        if (response.isSuccessful()) {
                            System.out.println("通信成功:changeBelongsAndMaster");

                            //nemophila(自端末)にname,id,tokenを記憶
                            nemophila.setName(response.body().getName());
                            nemophila.setUid(response.body().getId());
                            nemophila.setToken(response.body().getToken());

                            //mainに画面遷移
                            Intent intent = new Intent(LoginActivity.this,MapsActivity.class);
                            startActivity(intent);
                        } else {
                            System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
                                if (response.code() == 500){
                                    ((TextView) findViewById(R.id.textView)).setText("Invalid UserID or Password");
                                } else if (response.code() == 404){
                                    ((TextView) findViewById(R.id.textView)).setText("Login failed. Please enter the correct credentials.");
                                }
                        }
                    }

                    @Override
                    public void onFailure(Call<AccountJson> call, Throwable t) {
                        System.out.println("通信失敗:changeBelongsAndMaster");
                        System.out.println(t);
                    }
                });
            }
        });
//SignUpボタンを押したとき
        findViewById(R.id.SignUp).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(LoginActivity.this,SignUpActivity.class);
                startActivity(intent);
            }
        });
//ForgotPasswordボタンを押したとき(処理未記入)
        findViewById(R.id.ForgotPW).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                Intent intent = new Intent(LoginActivity.this, ChangePwActivity.class);
//                startActivity(intent);
            }
        });
    }
}