working on serial/login/pictogram activity refactorization (v)

parent 3f51c451
......@@ -31,7 +31,7 @@ android {
debug {
resValue "string", "db_name", "PCB.db"
resValue "bool", "force_db_create", "true"
resValue "bool", "force_db_create", "false"
resValue "bool", "ssl_connect", "false"
resValue "bool", "force_img_download", "false"
resValue "integer", "netservice_timing", "20"
......
......@@ -62,6 +62,22 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
private String username = null;
private String password = null;
private void show_login_failed(int msg) {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage(getString(msg))
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert = builder.create();
alert.show();
}
private void load_offline_supervisor(String username, String password) {
}
/**
* If there is Internet connection it calls the WS to recover the pairs student-supervisor
* @param savedInstanceState
......@@ -78,40 +94,6 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
if (offline){
username=intent.getStringExtra("username");
password=intent.getStringExtra("password");
}
// Activo el modo KIOSKO
//startLockTask();
//DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
//ComponentName mDeviceAdminSample = new ComponentName(this, LoginActivity.class);
/*
if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) {
// Device owner
String[] packages = {this.getPackageName()};
myDevicePolicyManager.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
// Not a device owner - prompt user or show error
}
*/
//String[] packages = {this.getPackageName()};
//myDevicePolicyManager.setLockTaskPackages(mDeviceAdminSample, packages);
/*
if (myDevicePolicyManager.isLockTaskPermitted(this.getPackageName())) {
// Lock allowed
startLockTask();
} else {
// Lock not allowed - show error or something useful here
}
*/
//startLockTask();
// FIN del modo Kiosko
// Compruebo si tengo acceso a internet y al servicio web
if (!RestapiWrapper.ping(getResources().getString(R.string.server),"server/ping")) {
// MODO OFFLINE
try {
Log.d(LOG_TAG, "username utilizado:" + username);
Log.d(LOG_TAG, "password utilizado:" + password);
......@@ -147,47 +129,9 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
} catch (JSONException e) {
e.printStackTrace();
} catch (LoginException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
if (e.known_supervisor()){
// El password del supervisor no es correcto
builder.setMessage("La contraseña indicada no es correcta. Inténtelo de nuevo.")
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Vuelvo al serial para que se identifique
Intent serialActivity = new Intent(LoginActivity.this, SerialActivity.class);
serialActivity.putExtra("activity_name","SerialActivity");
startActivity(serialActivity);
}
});
} else if (e.no_students()){
// Este supervisor existe pero no tiene estudiantes
builder.setMessage("El usuario indicado no tiene alumnos asignados. Asigne estudiantes desde el panel de control.")
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Vuelvo al serial para que se identifique
Intent serialActivity = new Intent(LoginActivity.this, SerialActivity.class);
serialActivity.putExtra("activity_name","SerialActivity");
startActivity(serialActivity);
}
});
} else{
// El supervisor indicado no existe
builder.setMessage("El usuario indicado no es correcto. Inténtelo de nuevo.")
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Vuelvo al serial para que se identifique
Intent serialActivity = new Intent(LoginActivity.this, SerialActivity.class);
serialActivity.putExtra("activity_name","SerialActivity");
startActivity(serialActivity);
}
});
}
AlertDialog alert = builder.create();
alert.show();
e.printStackTrace();
show_login_failed(e.known_supervisor() ? R.string.passErrorMsg
: e.no_students() ? R.string.noStudentsError
: R.string.userErrorMsg);
}
} else{
// Modo ONLINE
......
......@@ -51,9 +51,6 @@ public class SerialActivity extends Activity {
private static final String TAG_ATTRIBUTES = "attributes";
//private static final String TAG_TTSENGINE = "ttsEngine";
private Integer st_id=-1;
// String constant for logs
private final String LOG_TAG = this.getClass().getSimpleName(); // Or .getCanonicalName()
......@@ -65,7 +62,7 @@ public class SerialActivity extends Activity {
final Intent loginActivity = new Intent(SerialActivity.this, LoginActivity.class);
if (online) {
final ProgressDialog progressDialog = ProgressDialog.show(SerialActivity.this, SerialActivity.this.getBaseContext().getString(R.string.userLoadingMsg),
SerialActivity.this.getBaseContext().getString(R.string.userLoadingTxt), false, false);;
SerialActivity.this.getBaseContext().getString(R.string.userLoadingTxt), false, false);
final String operation = "sup/login";
Hashtable<String, String> postDataParams = new Hashtable<String, String>();
......@@ -96,7 +93,7 @@ public class SerialActivity extends Activity {
e.printStackTrace();
jsonToken = null;
user = null;
Log.e(LOG_TAG, e.getMessage());
SerialActivity.this.error(e);
}
try {
......@@ -105,6 +102,7 @@ public class SerialActivity extends Activity {
loginActivity.putExtra("offline", false);
loginActivity.putExtra("sup_id", su_id_int);
loginActivity.putExtra("token", jsonToken);
startActivity(loginActivity);
} catch (JSONException e) {
SerialActivity.this.error(e);
......@@ -114,59 +112,28 @@ public class SerialActivity extends Activity {
@Override
public void error(Exception e) {
progressDialog.dismiss();
SerialActivity.this.error(e);
}
});
} else{
loginActivity.putExtra("offline", true);
loginActivity.putExtra("username", username);
loginActivity.putExtra("password", password);
startActivity(loginActivity);
}
}
private void set_student_oline(User student, String token, final Intent pictogramActivity) {
final ProgressDialog progressDialog=ProgressDialog.show(this, getString(R.string.userLoadingTxt),getString(R.string.loadingGrammar));
Vector<User> vstudent = new Vector<>(1);
vstudent.add(student);
try {
PCBcontext.getDevice().synchronizeUsers(vstudent, new iImgDownloaderListener() {
@Override
public void loadComplete() {
}
@Override
public void loadImg(Img image) {
Log.d(LOG_TAG, "Load a single image with ID: " + image.get_id());
}
});
} catch (JSONException e) {
e.printStackTrace();
}
PCBcontext.set_user(student, token, new iImgDownloaderListener() {
@Override
public void loadComplete() {
progressDialog.dismiss();
startActivity(pictogramActivity);
Log.i(SerialActivity.this.LOG_TAG, "4 FERNANDO pA");
}
@Override
public void loadImg(Img image) {
}
});
}
private void manageStudentLogin(final String username, final String password, boolean online)
{
final ProgressDialog progressDialog=ProgressDialog.show(this, getString(R.string.userLoadingTxt),getString(R.string.userLoadingMsg));
final Intent pictogramActivity = new Intent(SerialActivity.this, PictogramActivity.class);
if (online) {
final ProgressDialog progressDialog=ProgressDialog.show(this, getString(R.string.userLoadingTxt),getString(R.string.userLoadingTxt));
String operation = "stu/login";
Hashtable<String, String> postDataParams = new Hashtable<String, String>();
postDataParams.put("username", username);
postDataParams.put("password", password);
Log.i(this.LOG_TAG, "2 FERNANDO username:" + username);
PCBcontext.getRestapiWrapper().ask(operation, postDataParams, "post", new iRestapiListener() {
@Override
public void preExecute() {
......@@ -180,11 +147,13 @@ Log.i(this.LOG_TAG, "2 FERNANDO username:" + username);
@Override
public void result(JSONObject result) {
progressDialog.dismiss();
try {
if (checkLogin(result)) {
JSONObject user = result.getJSONObject(TAG_USER);
// Es un estudiante
st_id = user.getInt(TAG_ID);
int st_id_int = st_id.intValue();
int st_id_int = user.getInt(TAG_ID);
String st_name = user.getString(TAG_NAME);
String st_surname = user.getString(TAG_SURNAME);
String st_pic = user.getString(TAG_PIC);
......@@ -204,9 +173,8 @@ Log.i(this.LOG_TAG, "2 FERNANDO username:" + username);
st_attributes,
User.NO_SUPERVISOR, "", "", "", "", "", "M", "es-es", "")
, result.getString(TAG_TOKEN)
,pictogramActivity);
Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
, pictogramActivity);
}
} catch (JSONException e) {
SerialActivity.this.error(e);
progressDialog.dismiss();
......@@ -216,8 +184,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
@Override
public void error(Exception e) {
SerialActivity.this.error(e);
progressDialog.dismiss();
SerialActivity.this.error(e);
}
});
}
......@@ -225,35 +193,52 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
try {
Vector<User> localUsers = PCBcontext.getDevice().findUser(username, password);
PCBcontext.set_user(localUsers.elementAt(0), null, null);
startActivity(pictogramActivity);
} catch (JSONException e) {
e.printStackTrace();
} catch (LoginException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(SerialActivity.this);
if (e.knonwn_student()){
// El password no es correcto
builder.setMessage(getString(R.string.passErrorMsg))
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
if (e.knonwn_student())
this.show_pwd_unknown();
else
this.show_user_unknown();
}
});
} else {
// El usuario no existe
builder.setMessage(getString(R.string.userErrorMsg))
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
} //offline student login
}
});
private void set_student_oline(User student, String token, final Intent pictogramActivity) {
final ProgressDialog progressDialog=ProgressDialog.show(this, getString(R.string.userLoadingTxt),getString(R.string.loadingGrammar));
Vector<User> vstudent = new Vector<>(1);
vstudent.add(student);
try {
PCBcontext.getDevice().synchronizeUsers(vstudent, new iImgDownloaderListener() {
@Override
public void loadComplete() {
}
@Override
public void loadImg(Img image) {
Log.d(LOG_TAG, "Load a single image with ID: " + image.get_id());
}
});
} catch (JSONException e) {
e.printStackTrace();
}
PCBcontext.set_user(student, token, new iImgDownloaderListener() {
@Override
public void loadComplete() {
progressDialog.dismiss();
startActivity(pictogramActivity);
} //offline student login
}
@Override
public void loadImg(Img image) {
}
});
}
private void login(String username, String password) {
boolean online=RestapiWrapper.ping(this.getResources().getString(R.string.server),"server/ping");
if (username.contains("@"))
......@@ -264,18 +249,21 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
private boolean checkLogin(JSONObject result) {
String error;
try {
error = result.getString("error");
} catch (JSONException e) {
e.printStackTrace();
error= null;
}
if (error!=null){
Log.d(LOG_TAG, "JSON en result:" + result.toString());
if (result.toString().contains("error")){
if (result.toString().contains("Invalid password"))
if (error.contains("Invalid password") || error.contains("No credentials sent"))
show_pwd_unknown();
else if (result.toString().contains("User not found"))
else if (error.contains("User not found"))
show_user_unknown();
result = null;
}
return result==null;
return error==null;
}
private void show_login_failed(int msg) {
......@@ -300,7 +288,7 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
}
private void error(Exception e) {
Log.e(this.getClass().getName(), " Server restapi error: " + e.getLocalizedMessage());
Log.e(this.getClass().getName(), e.getLocalizedMessage());
AlertDialog.Builder builder = new AlertDialog.Builder(SerialActivity.this);
builder.setMessage(getString(R.string.serverError) + ":" + e.getLocalizedMessage())
......@@ -333,9 +321,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
// Escribo el último valor indicado de username
mSerialViewMail.setText(username);
username="";
Log.i(this.LOG_TAG, "1 FERNANDO username:" + username);
if (username.equals("")) { // No tengo aún usuario. Espero a que lo indique
if (username.equals("") || password.equals("")) { // No tengo aún usuario. Espero a que lo indique
Button mEntrarButton = (Button) findViewById(R.id.entrar_button);
mEntrarButton.setOnClickListener(new OnClickListener() {
......
......@@ -22,7 +22,7 @@
<string name="userErrorMsg">The user is not correct. Try again.</string>
<string name="userLoadingTxt">Loading</string>
<string name="userLoadingMsg">Loading students. Please wait.</string>
<string name="noStudentsError">El usuario indicado no tiene alumnos asignados. Asigne estudiantes desde el panel de control</string>
<!-- Alert dialogs -->
<string name="exitPictogram">Exit Pictogram</string>
<string name="enterEscapeCode">Type escape code</string>
......
......@@ -23,7 +23,7 @@
<string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string>
<string name="userLoadingTxt">Cargando</string>
<string name="userLoadingMsg">Cargando alumnos. Por favor espere.</string>
<string name="noStudentsError">El usuario indicado no tiene alumnos asignados. Asigne estudiantes desde el panel de control</string>
<!-- Alert dialogs -->
<string name="exitPictogram">Salir de Pictogram</string>
......
......@@ -11,7 +11,7 @@
<string name="title_activity_splash_screen">SplashScreenActivity</string>
<!-- Strings de serial -->
<!-- Strings de serial y login activity-->
<string name="title_activity_serial">Indique los datos de acceso</string>
<string name="prompt_serial_mail">Usuario</string>
<string name="prompt_serial_pass">Contraseña</string>
......@@ -23,6 +23,7 @@
<string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string>
<string name="userLoadingTxt">Cargando</string>
<string name="userLoadingMsg">Cargando alumnos. Por favor espere.</string>
<string name="noStudentsError">El usuario indicado no tiene alumnos asignados. Asigne estudiantes desde el panel de control</string>
<!-- Alert dialogs -->
<string name="exitPictogram">Salir de Pictogram</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment