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

parent 3f51c451
...@@ -31,7 +31,7 @@ android { ...@@ -31,7 +31,7 @@ android {
debug { debug {
resValue "string", "db_name", "PCB.db" 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", "ssl_connect", "false"
resValue "bool", "force_img_download", "false" resValue "bool", "force_img_download", "false"
resValue "integer", "netservice_timing", "20" resValue "integer", "netservice_timing", "20"
......
...@@ -62,6 +62,22 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{ ...@@ -62,6 +62,22 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
private String username = null; private String username = null;
private String password = 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 * If there is Internet connection it calls the WS to recover the pairs student-supervisor
* @param savedInstanceState * @param savedInstanceState
...@@ -78,40 +94,6 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{ ...@@ -78,40 +94,6 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
if (offline){ if (offline){
username=intent.getStringExtra("username"); username=intent.getStringExtra("username");
password=intent.getStringExtra("password"); 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 { try {
Log.d(LOG_TAG, "username utilizado:" + username); Log.d(LOG_TAG, "username utilizado:" + username);
Log.d(LOG_TAG, "password utilizado:" + password); Log.d(LOG_TAG, "password utilizado:" + password);
...@@ -147,47 +129,9 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{ ...@@ -147,47 +129,9 @@ public class LoginActivity extends FragmentActivity implements iRestapiListener{
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} catch (LoginException e) { } catch (LoginException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); show_login_failed(e.known_supervisor() ? R.string.passErrorMsg
if (e.known_supervisor()){ : e.no_students() ? R.string.noStudentsError
// El password del supervisor no es correcto : R.string.userErrorMsg);
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();
} }
} else{ } else{
// Modo ONLINE // Modo ONLINE
......
...@@ -51,9 +51,6 @@ public class SerialActivity extends Activity { ...@@ -51,9 +51,6 @@ public class SerialActivity extends Activity {
private static final String TAG_ATTRIBUTES = "attributes"; private static final String TAG_ATTRIBUTES = "attributes";
//private static final String TAG_TTSENGINE = "ttsEngine"; //private static final String TAG_TTSENGINE = "ttsEngine";
private Integer st_id=-1;
// String constant for logs // String constant for logs
private final String LOG_TAG = this.getClass().getSimpleName(); // Or .getCanonicalName() private final String LOG_TAG = this.getClass().getSimpleName(); // Or .getCanonicalName()
...@@ -65,7 +62,7 @@ public class SerialActivity extends Activity { ...@@ -65,7 +62,7 @@ public class SerialActivity extends Activity {
final Intent loginActivity = new Intent(SerialActivity.this, LoginActivity.class); final Intent loginActivity = new Intent(SerialActivity.this, LoginActivity.class);
if (online) { if (online) {
final ProgressDialog progressDialog = ProgressDialog.show(SerialActivity.this, SerialActivity.this.getBaseContext().getString(R.string.userLoadingMsg), 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"; final String operation = "sup/login";
Hashtable<String, String> postDataParams = new Hashtable<String, String>(); Hashtable<String, String> postDataParams = new Hashtable<String, String>();
...@@ -96,7 +93,7 @@ public class SerialActivity extends Activity { ...@@ -96,7 +93,7 @@ public class SerialActivity extends Activity {
e.printStackTrace(); e.printStackTrace();
jsonToken = null; jsonToken = null;
user = null; user = null;
Log.e(LOG_TAG, e.getMessage()); SerialActivity.this.error(e);
} }
try { try {
...@@ -105,6 +102,7 @@ public class SerialActivity extends Activity { ...@@ -105,6 +102,7 @@ public class SerialActivity extends Activity {
loginActivity.putExtra("offline", false); loginActivity.putExtra("offline", false);
loginActivity.putExtra("sup_id", su_id_int); loginActivity.putExtra("sup_id", su_id_int);
loginActivity.putExtra("token", jsonToken); loginActivity.putExtra("token", jsonToken);
startActivity(loginActivity);
} catch (JSONException e) { } catch (JSONException e) {
SerialActivity.this.error(e); SerialActivity.this.error(e);
...@@ -114,59 +112,28 @@ public class SerialActivity extends Activity { ...@@ -114,59 +112,28 @@ public class SerialActivity extends Activity {
@Override @Override
public void error(Exception e) { public void error(Exception e) {
progressDialog.dismiss();
SerialActivity.this.error(e); SerialActivity.this.error(e);
} }
}); });
} else{ } else{
loginActivity.putExtra("offline", true);
loginActivity.putExtra("username", username); loginActivity.putExtra("username", username);
loginActivity.putExtra("password", password); 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) 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); final Intent pictogramActivity = new Intent(SerialActivity.this, PictogramActivity.class);
if (online) { if (online) {
final ProgressDialog progressDialog=ProgressDialog.show(this, getString(R.string.userLoadingTxt),getString(R.string.userLoadingTxt));
String operation = "stu/login"; String operation = "stu/login";
Hashtable<String, String> postDataParams = new Hashtable<String, String>(); Hashtable<String, String> postDataParams = new Hashtable<String, String>();
postDataParams.put("username", username); postDataParams.put("username", username);
postDataParams.put("password", password); postDataParams.put("password", password);
Log.i(this.LOG_TAG, "2 FERNANDO username:" + username);
PCBcontext.getRestapiWrapper().ask(operation, postDataParams, "post", new iRestapiListener() { PCBcontext.getRestapiWrapper().ask(operation, postDataParams, "post", new iRestapiListener() {
@Override @Override
public void preExecute() { public void preExecute() {
...@@ -180,33 +147,34 @@ Log.i(this.LOG_TAG, "2 FERNANDO username:" + username); ...@@ -180,33 +147,34 @@ Log.i(this.LOG_TAG, "2 FERNANDO username:" + username);
@Override @Override
public void result(JSONObject result) { public void result(JSONObject result) {
progressDialog.dismiss();
try { try {
JSONObject user = result.getJSONObject(TAG_USER);
// Es un estudiante
st_id = user.getInt(TAG_ID);
int st_id_int = st_id.intValue();
String st_name = user.getString(TAG_NAME);
String st_surname = user.getString(TAG_SURNAME);
String st_pic = user.getString(TAG_PIC);
String st_gender = user.getString(TAG_GENDER);
String st_lang = user.getString(TAG_LANG);
String st_attributes = user.getString(TAG_ATTRIBUTES);
progressDialog.dismiss();
set_student_oline(
new User(st_id_int,
username,
password,
st_name,
st_surname,
st_pic,
st_gender,
st_lang,
st_attributes,
User.NO_SUPERVISOR, "", "", "", "", "", "M", "es-es", "")
, result.getString(TAG_TOKEN)
,pictogramActivity);
Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
if (checkLogin(result)) {
JSONObject user = result.getJSONObject(TAG_USER);
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);
String st_gender = user.getString(TAG_GENDER);
String st_lang = user.getString(TAG_LANG);
String st_attributes = user.getString(TAG_ATTRIBUTES);
progressDialog.dismiss();
set_student_oline(
new User(st_id_int,
username,
password,
st_name,
st_surname,
st_pic,
st_gender,
st_lang,
st_attributes,
User.NO_SUPERVISOR, "", "", "", "", "", "M", "es-es", "")
, result.getString(TAG_TOKEN)
, pictogramActivity);
}
} catch (JSONException e) { } catch (JSONException e) {
SerialActivity.this.error(e); SerialActivity.this.error(e);
progressDialog.dismiss(); progressDialog.dismiss();
...@@ -216,8 +184,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso"); ...@@ -216,8 +184,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
@Override @Override
public void error(Exception e) { public void error(Exception e) {
SerialActivity.this.error(e);
progressDialog.dismiss(); progressDialog.dismiss();
SerialActivity.this.error(e);
} }
}); });
} }
...@@ -225,35 +193,52 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso"); ...@@ -225,35 +193,52 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
try { try {
Vector<User> localUsers = PCBcontext.getDevice().findUser(username, password); Vector<User> localUsers = PCBcontext.getDevice().findUser(username, password);
PCBcontext.set_user(localUsers.elementAt(0), null, null); PCBcontext.set_user(localUsers.elementAt(0), null, null);
startActivity(pictogramActivity);
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} catch (LoginException e) { } catch (LoginException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(SerialActivity.this); if (e.knonwn_student())
if (e.knonwn_student()){ this.show_pwd_unknown();
// El password no es correcto else
builder.setMessage(getString(R.string.passErrorMsg)) this.show_user_unknown();
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
} 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) {
}
});
}
e.printStackTrace();
} }
startActivity(pictogramActivity);
} //offline student login } //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);
}
@Override
public void loadImg(Img image) {
}
});
}
private void login(String username, String password) { private void login(String username, String password) {
boolean online=RestapiWrapper.ping(this.getResources().getString(R.string.server),"server/ping"); boolean online=RestapiWrapper.ping(this.getResources().getString(R.string.server),"server/ping");
if (username.contains("@")) if (username.contains("@"))
...@@ -264,18 +249,21 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso"); ...@@ -264,18 +249,21 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
private boolean checkLogin(JSONObject result) { 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 (error.contains("Invalid password") || error.contains("No credentials sent"))
if (result.toString().contains("error")){
if (result.toString().contains("Invalid password"))
show_pwd_unknown(); show_pwd_unknown();
else if (result.toString().contains("User not found")) else if (error.contains("User not found"))
show_user_unknown(); show_user_unknown();
result = null;
} }
return result==null; return error==null;
} }
private void show_login_failed(int msg) { private void show_login_failed(int msg) {
...@@ -300,7 +288,7 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso"); ...@@ -300,7 +288,7 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
} }
private void error(Exception e) { 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); AlertDialog.Builder builder = new AlertDialog.Builder(SerialActivity.this);
builder.setMessage(getString(R.string.serverError) + ":" + e.getLocalizedMessage()) builder.setMessage(getString(R.string.serverError) + ":" + e.getLocalizedMessage())
...@@ -333,9 +321,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso"); ...@@ -333,9 +321,8 @@ Log.i(SerialActivity.this.LOG_TAG, "3 FERNANDO sso");
// Escribo el último valor indicado de username // Escribo el último valor indicado de username
mSerialViewMail.setText(username); mSerialViewMail.setText(username);
username="";
Log.i(this.LOG_TAG, "1 FERNANDO username:" + username); if (username.equals("") || password.equals("")) { // No tengo aún usuario. Espero a que lo indique
if (username.equals("")) { // No tengo aún usuario. Espero a que lo indique
Button mEntrarButton = (Button) findViewById(R.id.entrar_button); Button mEntrarButton = (Button) findViewById(R.id.entrar_button);
mEntrarButton.setOnClickListener(new OnClickListener() { mEntrarButton.setOnClickListener(new OnClickListener() {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<string name="userErrorMsg">The user is not correct. Try again.</string> <string name="userErrorMsg">The user is not correct. Try again.</string>
<string name="userLoadingTxt">Loading</string> <string name="userLoadingTxt">Loading</string>
<string name="userLoadingMsg">Loading students. Please wait.</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 --> <!-- Alert dialogs -->
<string name="exitPictogram">Exit Pictogram</string> <string name="exitPictogram">Exit Pictogram</string>
<string name="enterEscapeCode">Type escape code</string> <string name="enterEscapeCode">Type escape code</string>
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string> <string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string>
<string name="userLoadingTxt">Cargando</string> <string name="userLoadingTxt">Cargando</string>
<string name="userLoadingMsg">Cargando alumnos. Por favor espere.</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 --> <!-- Alert dialogs -->
<string name="exitPictogram">Salir de Pictogram</string> <string name="exitPictogram">Salir de Pictogram</string>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<string name="title_activity_splash_screen">SplashScreenActivity</string> <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="title_activity_serial">Indique los datos de acceso</string>
<string name="prompt_serial_mail">Usuario</string> <string name="prompt_serial_mail">Usuario</string>
<string name="prompt_serial_pass">Contraseña</string> <string name="prompt_serial_pass">Contraseña</string>
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string> <string name="userErrorMsg">El usuario indicado no es correcto. Inténtelo de nuevo.</string>
<string name="userLoadingTxt">Cargando</string> <string name="userLoadingTxt">Cargando</string>
<string name="userLoadingMsg">Cargando alumnos. Por favor espere.</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 --> <!-- Alert dialogs -->
<string name="exitPictogram">Salir de Pictogram</string> <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