package iWish_database; /**Raffaella*/ import iWish_Utente.Utente; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; /**This class is our DAO. * It maintains the database connection and supports adding new element.**/ public class UtenteDao { private SQLiteDatabase database ; private DataBaseStorageUtente dbHelper; private static String[] allColumns={ DataBaseStorageUtente.COLUMN_ID, DataBaseStorageUtente.COLUMN_NAME, DataBaseStorageUtente.COLUMN_SURNAME, DataBaseStorageUtente.COLUMN_BIRTHDAY, DataBaseStorageUtente.COLUMN_SEX, DataBaseStorageUtente.COLUMN_TYPEUSER, DataBaseStorageUtente.COLUMN_HEIGHT, DataBaseStorageUtente.COLUMN_WEIGHT, DataBaseStorageUtente.COLUMN_CITY, DataBaseStorageUtente.COLUMN_EMAIL, DataBaseStorageUtente.COLUMN_PASSWORD, DataBaseStorageUtente.COLUMN_QUESTION, DataBaseStorageUtente.COLUMN_ANSWER, DataBaseStorageUtente.COLUMN_BMI, DataBaseStorageUtente.COLUMN_POINT //DataBaseStorageUtenteCOLUMN_PHOTO //aggiungere elemento bmi }; public UtenteDao(Context context){ dbHelper = new DataBaseStorageUtente(context); } public void open() throws SQLException{ // if the database is already open return directly if((database != null) && (database.isOpen())){ return; }else{ // we use getWritableDatabase() if we want insert, upload and delete database = dbHelper.getWritableDatabase(); } } public void close(){ if(database.isOpen()){ dbHelper.close(); } } @SuppressWarnings("unused") public void insertOnDbUtente(Utente mUtente)throws Exception{ ContentValues values = new ContentValues(); values.put(DataBaseStorageUtente.COLUMN_NAME,"" + mUtente.getName() + ""); values.put(DataBaseStorageUtente.COLUMN_SURNAME, "" + mUtente.getSurname() + ""); values.put(DataBaseStorageUtente.COLUMN_BIRTHDAY,""+ mUtente.getBirthday() + ""); values.put(DataBaseStorageUtente.COLUMN_SEX,""+ mUtente.getSex() + ""); values.put(DataBaseStorageUtente.COLUMN_TYPEUSER,""+ mUtente.getTypeUser() + ""); values.put(DataBaseStorageUtente.COLUMN_HEIGHT,""+ mUtente.getHeight() + ""); values.put(DataBaseStorageUtente.COLUMN_WEIGHT,""+ mUtente.getWeight() + ""); values.put(DataBaseStorageUtente.COLUMN_CITY,""+ mUtente.getCity() + ""); values.put(DataBaseStorageUtente.COLUMN_EMAIL,""+ mUtente.getEmail() + ""); values.put(DataBaseStorageUtente.COLUMN_PASSWORD,""+ mUtente.getPassword() + ""); values.put(DataBaseStorageUtente.COLUMN_QUESTION,""+ mUtente.getQuestion() + ""); values.put(DataBaseStorageUtente.COLUMN_ANSWER,""+ mUtente.getAnswer() + ""); values.put(DataBaseStorageUtente.COLUMN_BMI, "" + mUtente.getBmi() +""); values.put(DataBaseStorageUtente.COLUMN_POINT, "" + mUtente.getPoint() +""); long insertId = database.insert(DataBaseStorageUtente.TABLE_UTENTE, null, values); } public void deleteOnDbAllUtente(){ database.delete(DataBaseStorageUtente.TABLE_UTENTE, null,null); } public void deleteOnDbOneUtente(Utente mUtente){ String guid = mUtente.getEmail(); System.out.print("Key Utente that we have delete is : " + guid); database.delete(DataBaseStorageUtente.TABLE_UTENTE, DataBaseStorageUtente.COLUMN_ID +"='" + guid+ "'" , null); } public int deleteOnDbSomeUtente(List<Utente> mUtente){ String guid=null; int db=-1; for(Utente utente: mUtente){ guid=utente.getEmail(); db=database.delete(DataBaseStorageUtente.TABLE_UTENTE, DataBaseStorageUtente.COLUMN_ID+ "='" + guid+ "'", null); }return db; } public boolean checkRegistrationOnDbOneUtente(String eMail){ boolean i= true;//there is email String where = DataBaseStorageUtente.COLUMN_EMAIL + " = '"+eMail+"'"; Cursor cursor = database.query(DataBaseStorageUtente.TABLE_UTENTE, new String[] {DataBaseStorageUtente.COLUMN_EMAIL}, where, null, null, null, null); //String app= String.valueOf(cursor.getCount()); //Log.i("UtenteDao",app); if(cursor.getCount()==0){ i=false;//there isn't email } return i; } public Utente getOneUtente(String eMail){ String where = DataBaseStorageUtente.COLUMN_EMAIL + " = '"+eMail+"'"; Cursor cursor = database.query(DataBaseStorageUtente.TABLE_UTENTE, allColumns, where, null, null, null, null); cursor.moveToFirst(); Utente utente=cursorsUtente(cursor); return utente; } public List<Utente> getAllUtente(){ List<Utente> listUtente = new ArrayList<Utente>(); Cursor cursor = database.query(DataBaseStorageUtente.TABLE_UTENTE, allColumns, null, null, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { Utente utente=cursorsUtente(cursor); listUtente.add(utente); cursor.moveToNext(); } // Make sure to close the cursor cursor.close(); return listUtente; } //TODO controllare le variabili char che danno problemi nel database private Utente cursorsUtente(Cursor cursor) { Utente utente = new Utente(); utente.setKeyUtente(cursor.getLong(DataBaseStorageUtente.COLUMN_ID_INDEX)); utente.setName(cursor.getString(DataBaseStorageUtente.COLUMN_NAME_INDEX)); utente.setSurname(cursor.getString(DataBaseStorageUtente.COLUMN_SURNAME_INDEX)); utente.setBirthday(cursor.getString(DataBaseStorageUtente.COLUMN_BIRTHDAY_INDEX)); utente.setSex(cursor.getString(DataBaseStorageUtente.COLUMN_SEX_INDEX)); utente.setTypeUser(cursor.getString(DataBaseStorageUtente.COLUMN_TYPEUSER_INDEX)); utente.setHeight(cursor.getInt(DataBaseStorageUtente.COLUMN_HEIGHT_INDEX)); utente.setWeight(cursor.getInt(DataBaseStorageUtente.COLUMN_WEIGHT_INDEX)); utente.setCity(cursor.getString(DataBaseStorageUtente.COLUMN_CITY_INDEX)); utente.setEmail(cursor.getString(DataBaseStorageUtente.COLUMN_EMAIL_INDEX)); utente.setPassword(cursor.getString(DataBaseStorageUtente.COLUMN_PASSWORD_INDEX)); utente.setQuestion(cursor.getString(DataBaseStorageUtente.COLUMN_QUESTION_INDEX)); utente.setAnswer(cursor.getString(DataBaseStorageUtente.COLUMN_ANSWER_INDEX)); utente.setBmi(cursor.getDouble(DataBaseStorageUtente.COLUMN_BMI_INDEX)); utente.setPoint(cursor.getInt(DataBaseStorageUtente.COLUMN_POINT_INDEX)); return utente; } /**Invoked when the garbage collector has detected that this instance is no longer * reachable. The default implementation does nothing, but this method can be overridden * to free resources */ @Override protected void finalize() throws Throwable { close(); super.finalize(); } }