Commit 9817cfab by german Committed by Germán Callejas Alcántara

Listar supervisores de alumno finalizado, añadida varias funciones de acceso a…

Listar supervisores de alumno finalizado, añadida varias funciones de acceso a BBDD local del PCB, e iteración al presionar un supervisor de la lista no logueado previamente
parent 7e362156
...@@ -194,15 +194,19 @@ public class Device extends SQLiteOpenHelper { ...@@ -194,15 +194,19 @@ public class Device extends SQLiteOpenHelper {
return false; return false;
} }
//TODO: Recuperar los users (supervisors + students) de un alumno /**
* Recupera los supervisores de un determinado alumno
* @author Germán Callejas
* @param id_stu
* @return
* @throws JSONException
*/
public Hashtable<String, String> recoverSupervisors(Integer id_stu) throws JSONException{ public Hashtable<String, String> recoverSupervisors(Integer id_stu) throws JSONException{
SQLiteDatabase db = this.getReadableDatabase(); SQLiteDatabase db = this.getReadableDatabase();
Hashtable<String, String> users = new Hashtable<>(3); Hashtable<String, String> users = new Hashtable<>(3);
Cursor cursor = db.rawQuery(" SELECT email_sup, name_sup, surname_sup FROM users_details WHERE id_stu = "+id_stu ,null); Cursor cursor = db.rawQuery(" SELECT email_sup, name_sup, surname_sup,id_sup FROM users_detail WHERE id_stu = "+id_stu ,null);
while (cursor.moveToNext()) while (cursor.moveToNext())
Log.i("TAG_PRUEBAS","Fila: "+cursor.getInt(0)+cursor.getString(1)+ cursor.getString(2)+ cursor.getString(3)+ cursor.getString(4)+ cursor.getString(5)+ cursor.getString(6)+ cursor.getString(7)+ cursor.getString(8)+ users.put(cursor.getString(0), cursor.getString(1)+", "+cursor.getString(2)+";"+cursor.getInt(3));
cursor.getInt(9)+ cursor.getString(10)+ cursor.getString(11)+ cursor.getString(12)+ cursor.getString(13)+ cursor.getString(14)+ cursor.getString(15)+ cursor.getString(16)+ cursor.getString(17)+ cursor.getString(18));
users.put(cursor.getString(0), cursor.getString(1)+" "+cursor.getString(2));
cursor.close(); cursor.close();
//db.close(); <--no es necesario cerrar la bbdd https://groups.google.com/forum/#!msg/android-developers/NwDRpHUXt0U/jIam4Q8-cqQJ //db.close(); <--no es necesario cerrar la bbdd https://groups.google.com/forum/#!msg/android-developers/NwDRpHUXt0U/jIam4Q8-cqQJ
return users; return users;
...@@ -285,48 +289,6 @@ public class Device extends SQLiteOpenHelper { ...@@ -285,48 +289,6 @@ public class Device extends SQLiteOpenHelper {
return users; return users;
} }
/**
* To insert a tuple on users
* @param id_stu
* @param id_sup
*/
public void insertUserOnUsers(int id_stu, int id_sup){
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
db.execSQL("INSERT INTO users values (" +
id_stu + ", " +
id_sup +
")");
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* For insert a new supervisor on the local database
*
*/
public void insertSupervisor(int id, String email,String pwd,String name,String surname,String url_image,String gender,String lang,String tts_engine,String office) {
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
db.execSQL("INSERT INTO supervisor values (" +
id+ ", " +
"'" + email + "', " +
(pwd==null || pwd.length()==0 ? "NULL" : "'"+pwd+"'") + ", "+
"'" + name + "', " +
"'" + surname + "', " +
"'" + url_image + "', " +
"'" + gender + "', " +
"'" + lang + "', " +
"'" + tts_engine + "', " +
"'" + office + "')");
db.setTransactionSuccessful();
db.endTransaction();
Log.i("TAG_PRUEBAS","Supervisor: "+email+" insertado");
//db.close(); <--no es necesario cerrar la bbdd https://groups.google.com/forum/#!msg/android-developers/NwDRpHUXt0U/jIam4Q8-cqQJ
}
public void insertUser(User user) { public void insertUser(User user) {
SQLiteDatabase db = this.getWritableDatabase(); SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction(); db.beginTransaction();
...@@ -357,16 +319,18 @@ public class Device extends SQLiteOpenHelper { ...@@ -357,16 +319,18 @@ public class Device extends SQLiteOpenHelper {
} }
/** /**
* Delete all the pairs <id_sup,id_stu> of a student * Elimina los supervisores asociados a un niño que no tengan password, es decir, los que no hayan estado logueados en el tablet con
* anterioridad
* @author Germán Callejas
* @param stu_id * @param stu_id
* @param sup_id
*/ */
public void deleteSupervisorOfStudentUser(int stu_id) { public void deleteSupervisor(int stu_id,int sup_id){
SQLiteDatabase db = this.getWritableDatabase(); SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction(); db.beginTransaction();
db.execSQL("DELETE FROM users WHERE id_stu = "+stu_id); db.execSQL("DELETE FROM users_detail WHERE id_stu = "+stu_id + " AND id_sup = "+sup_id+" AND pwd_sup LIKE '_' " );
db.setTransactionSuccessful(); db.setTransactionSuccessful();
db.endTransaction(); db.endTransaction();
//db.close(); <--no es necesario cerrar la bbdd https://groups.google.com/forum/#!msg/android-developers/NwDRpHUXt0U/jIam4Q8-cqQJ
} }
/** /**
......
...@@ -227,8 +227,6 @@ public class EditPictoActivity extends Activity { ...@@ -227,8 +227,6 @@ public class EditPictoActivity extends Activity {
requestWindowFeature(Window.FEATURE_NO_TITLE); requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.edit_picto_layout); setContentView(R.layout.edit_picto_layout);
Log.i(DEBUG_MESSAGE,"EDITAR ABIERTO");
//Persmisos para grabar audio //Persmisos para grabar audio
ActivityCompat.requestPermissions(this, permissions, REQUEST_RECORD_AUDIO_PERMISSION); ActivityCompat.requestPermissions(this, permissions, REQUEST_RECORD_AUDIO_PERMISSION);
...@@ -237,8 +235,6 @@ public class EditPictoActivity extends Activity { ...@@ -237,8 +235,6 @@ public class EditPictoActivity extends Activity {
mDrawerList = (ListView)findViewById(R.id.navList); mDrawerList = (ListView)findViewById(R.id.navList);
/**Obtener la lista de supervisores y aplicarle formato*/ /**Obtener la lista de supervisores y aplicarle formato*/
Log.i(DEBUG_MESSAGE,"Usuario: "+ PCBcontext.getPcbdb().getCurrentUser().get_name_stu());
ArrayList<String> supervisoresAdapter = new ArrayList<>(); ArrayList<String> supervisoresAdapter = new ArrayList<>();
Hashtable<String, String> supervisores = null; Hashtable<String, String> supervisores = null;
try { try {
...@@ -248,21 +244,9 @@ public class EditPictoActivity extends Activity { ...@@ -248,21 +244,9 @@ public class EditPictoActivity extends Activity {
} }
if (supervisores != null){ if (supervisores != null){
for(String email_sup: supervisores.keySet()) for(String email_sup: supervisores.keySet())
supervisoresAdapter.add(email_sup+", "+supervisores.get(email_sup) ); supervisoresAdapter.add(supervisores.get(email_sup).split(";")[0]+"\n"+email_sup);
} }
supervisoresAdapter.add(NO_SUP_TEXT+"\n"+NO_SUP_TEXT); supervisoresAdapter.add(NO_SUP_TEXT+"\n"+NO_SUP_TEXT);
//String supervisors = PCBcontext.getPcbdb().getCurrentUser().get_Supervisors();
//Log.i(DEBUG_MESSAGE,"Supervisores: "+ supervisors);
//ArrayList<String> supervisores = new ArrayList<>();
/*if(supervisors != null) {
String[] separated = supervisors.split(";");
for (String supervisor : separated) {
String[] detalles = supervisor.split(",");
supervisores.add(detalles[0] + "\n" + detalles[1]);
}
}else
Log.i(DEBUG_MESSAGE,"No tiene supervisores...");*/
mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, supervisoresAdapter); mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, supervisoresAdapter);
mDrawerList.setAdapter(mAdapter); mDrawerList.setAdapter(mAdapter);
......
...@@ -16,6 +16,7 @@ import android.widget.Button; ...@@ -16,6 +16,7 @@ import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast;
import com.yottacode.pictogram.dao.User; import com.yottacode.pictogram.dao.User;
import com.yottacode.pictogram.dao.UserLogin; import com.yottacode.pictogram.dao.UserLogin;
...@@ -83,13 +84,22 @@ public class SerialActivity extends Activity { ...@@ -83,13 +84,22 @@ public class SerialActivity extends Activity {
listaSup.setOnItemClickListener(new AdapterView.OnItemClickListener() { listaSup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); if (supUsers.elementAt(position).get_pwd_sup().equals("_")) {
SharedPreferences.Editor editor = settings.edit(); mSerialViewMail.setText(supUsers.elementAt(position).get_email_sup());
editor.putString("username", supUsers.elementAt(position).get_email_sup()); mSerialViewPass.setText("");
editor.putString("password", supUsers.elementAt(position).get_pwd_sup()); mSerialViewPass.requestFocus();
editor.commit(); Toast toast = Toast.makeText(PCBcontext.getContext(), R.string.insertPasswordLogin, Toast.LENGTH_SHORT);
new UserLogin().login(supUsers.elementAt(position).get_email_sup(), toast.show();
supUsers.elementAt(position).get_pwd_sup(),SerialActivity.this, PictogramActivity.class, LoginActivity.class);
} else {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", supUsers.elementAt(position).get_email_sup());
editor.putString("password", supUsers.elementAt(position).get_pwd_sup());
editor.commit();
new UserLogin().login(supUsers.elementAt(position).get_email_sup(),
supUsers.elementAt(position).get_pwd_sup(), SerialActivity.this, PictogramActivity.class, LoginActivity.class);
}
} }
}); });
} }
......
...@@ -29,6 +29,7 @@ import org.json.JSONObject; ...@@ -29,6 +29,7 @@ import org.json.JSONObject;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
...@@ -203,6 +204,11 @@ public class StudentFragmentGrid extends Fragment{ ...@@ -203,6 +204,11 @@ public class StudentFragmentGrid extends Fragment{
downloader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, imgs); downloader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, imgs);
} }
/**
* Recupera los supervisores de un alumno
* @author Germán Callejas
* @param stu_id
*/
private void download_supervisors(final int stu_id) { private void download_supervisors(final int stu_id) {
String token = getActivity().getIntent().getExtras().getString("token"); String token = getActivity().getIntent().getExtras().getString("token");
...@@ -226,42 +232,39 @@ public class StudentFragmentGrid extends Fragment{ ...@@ -226,42 +232,39 @@ public class StudentFragmentGrid extends Fragment{
@Override @Override
public void result(JSONArray supervisors) { public void result(JSONArray supervisors) {
//TODO: Obtener supervisores del JSON Vector<String> idSupervisoresJSON = new Vector<>();
//Vector<Integer> idSupervisoresJSON = new Vector<Integer>();
for (int i=0;i<supervisors.length();i++) { for (int i=0;i<supervisors.length();i++) {
JSONObject supervisor = null; JSONObject supervisor = null;
try { try {
supervisor = supervisors.getJSONObject(i); supervisor = supervisors.getJSONObject(i);
//idSupervisoresJSON.add((Integer) supervisor.get("id")); idSupervisoresJSON.add(supervisor.getString("email"));
//User user = ;
if(!PCBcontext.getDevice().isSupervisorOnLocal((int) supervisor.get("id"))) {//Para comprobar si ya existe en local if(!PCBcontext.getDevice().isSupervisorOnLocal((int) supervisor.get("id"))) {//Para comprobar si ya existe en local
PCBcontext.getDevice().insertSupervisor(supervisor.getInt("id"),supervisor.getString("email"),supervisor.getString("name"),null,supervisor.getString("surname"), PCBcontext.getDevice().insertUser(new User(stu_id, PCBcontext.getPcbdb().getCurrentUser().get_nickname_stu(), PCBcontext.getPcbdb().getCurrentUser().get_pwd_stu()
supervisor.getString("pic"),supervisor.getString("gender"),supervisor.getString("lang"),supervisor.getString("ttsEngine"),supervisor.getString("office"));
/*PCBcontext.getDevice().insertUser(new User(stu_id, PCBcontext.getPcbdb().getCurrentUser().get_nickname_stu(), PCBcontext.getPcbdb().getCurrentUser().get_pwd_stu()
, PCBcontext.getPcbdb().getCurrentUser().get_name_stu(), PCBcontext.getPcbdb().getCurrentUser().get_surname_stu(), PCBcontext.getPcbdb().getCurrentUser().get_url_img_stu() , PCBcontext.getPcbdb().getCurrentUser().get_name_stu(), PCBcontext.getPcbdb().getCurrentUser().get_surname_stu(), PCBcontext.getPcbdb().getCurrentUser().get_url_img_stu()
, PCBcontext.getPcbdb().getCurrentUser().get_gender_stu(), PCBcontext.getPcbdb().getCurrentUser().get_lang_stu(), PCBcontext.getPcbdb().getCurrentUser().get_json_attrs(), , PCBcontext.getPcbdb().getCurrentUser().get_gender_stu(), PCBcontext.getPcbdb().getCurrentUser().get_lang_stu(), PCBcontext.getPcbdb().getCurrentUser().get_json_attrs(),
(int) supervisor.get("id"), supervisor.get("email").toString(), null, supervisor.get("name").toString(), supervisor.get("surname").toString(), supervisor.get("pic").toString(), (int) supervisor.get("id"), supervisor.get("email").toString(), "_", supervisor.get("name").toString(), supervisor.get("surname").toString(), supervisor.get("pic").toString(),
supervisor.get("gender").toString(), supervisor.get("lang").toString(), supervisor.get("ttsEngine").toString(), supervisor.get("office").toString()));*/ supervisor.get("gender").toString(), supervisor.get("lang").toString(), supervisor.get("ttsEngine").toString(), supervisor.get("office").toString()));
}else{
Log.i("TAG_PRUEBAS","Usuario con id: "+supervisor.getString("email")+" ya existe");
} }
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
/*try { /**Eliminar los que habia y que ya no vienen en el JSON */
Vector<User> supervisorsLocal = PCBcontext.getDevice().recoverSupervisors(stu_id); try {
for(User user: supervisorsLocal){ Hashtable<String,String> supervisorsLocal = PCBcontext.getDevice().recoverSupervisors(stu_id);
if(!idSupervisoresJSON.contains(user.get_id_sup())){ if(supervisorsLocal != null && !supervisorsLocal.isEmpty()){
PCBcontext.getDevice().deleteUser(stu_id); for(String email_sup: supervisorsLocal.keySet()){
if(!idSupervisoresJSON.contains(email_sup)){
//Coge la segunda parte ya que el formato del dato es Nombre, Apellidos;id_sup
PCBcontext.getDevice().deleteSupervisor(stu_id,Integer.parseInt(supervisorsLocal.get(email_sup).split(";")[1]));
}
} }
} }
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
}*/ }
//PCBcontext.getPcbdb().getCurrentUser().set_Supervisors(supervisorsFormat);
} }
@Override @Override
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
<string name="uploadingImage">Subiendo imagen al servidor</string> <string name="uploadingImage">Subiendo imagen al servidor</string>
<string name="titleCropperEdit">Edit Picto</string> <string name="titleCropperEdit">Edit Picto</string>
<string name="titleCropperNew">New Picto</string> <string name="titleCropperNew">New Picto</string>
<string name="insertPasswordLogin">Insert Password</string>
</resources> </resources>
<resources> <resources>
<string name="app_name">com.yottacode.pictogram.Tablet</string> <string name="app_name">com.yottacode.pictogram.Tablet</string>
<string name="alumnos">Estrudiantes</string> <string name="alumnos">Alumnos</string>
<string name="supervisores">Supervisores</string> <string name="supervisores">Supervisores</string>
<item name="maxInTape" type="integer">8</item> <item name="maxInTape" type="integer">8</item>
<item name="maxInTape_big" type="integer">6</item> <item name="maxInTape_big" type="integer">6</item>
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
<string name="titleCropperEdit">Editar Pictograma</string> <string name="titleCropperEdit">Editar Pictograma</string>
<string name="titleCropperNew">Nuevo Pictograma</string> <string name="titleCropperNew">Nuevo Pictograma</string>
<string name="insertPasswordLogin">Inserte Contraseña</string>
</resources> </resources>
...@@ -49,4 +49,5 @@ ...@@ -49,4 +49,5 @@
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="drawer_open">Open Menu</string> <string name="drawer_open">Open Menu</string>
<string name="drawer_close">Close Menu</string> <string name="drawer_close">Close Menu</string>
<string name="insertPasswordLogin">Inserte Contraseña</string>
</resources> </resources>
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