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;
//座標指定
private double defaultLat = 34.74;
private double defaultLong = 135.26;
private float defaultZoom = 15f;
@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)){
//座標指定(仮)
nemophila.setCameraLatitude(defaultLat);
nemophila.setCameraLongitude(defaultLong);
nemophila.setZoom(defaultZoom);
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());
//座標指定(仮)
nemophila.setCameraLatitude(defaultLat);
nemophila.setCameraLongitude(defaultLong);
nemophila.setZoom(defaultZoom);
//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);
}
});
}
}