package iWish_database;
import iWish_Activities.Activities;
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;
/**This class is our DAO.
* It maintains the database connection and supports adding new element.**/
public class ActivitiesDao {
private SQLiteDatabase database ;
private DataBaseStorageActivities dbHelper;
private static String[] allColumns={
DataBaseStorageActivities.COLUMN_ID,
DataBaseStorageActivities.COLUMN_EMAIL,
DataBaseStorageActivities.COLUMN_IDSFIDATO,
DataBaseStorageActivities.COLUMN_STARTDATE,
DataBaseStorageActivities.COLUMN_ENDDATE,
DataBaseStorageActivities.COLUMN_WIN,
DataBaseStorageActivities.COLUMN_KMOBBIETTIVO,
DataBaseStorageActivities.COLUMN_KMPERCORSI,
DataBaseStorageActivities.COLUMN_TIPOATTIVITA,
DataBaseStorageActivities.COLUMN_EMAIL_FOE
};
public ActivitiesDao(Context context) {
dbHelper = new DataBaseStorageActivities(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 insertOnDbActivities(Activities mActivities)throws Exception{
ContentValues values = new ContentValues();
values.put(DataBaseStorageActivities.COLUMN_EMAIL,"" + mActivities.getEmailChallenger() + "");
values.put(DataBaseStorageActivities.COLUMN_IDSFIDATO,"" + mActivities.getIdSfidato() + "");
values.put(DataBaseStorageActivities.COLUMN_STARTDATE, "" + mActivities.getStartDate() + "");
values.put(DataBaseStorageActivities.COLUMN_ENDDATE, "" + mActivities.getEndDate() + "");
values.put(DataBaseStorageActivities.COLUMN_WIN, "" + mActivities.getWin() + "");
values.put(DataBaseStorageActivities.COLUMN_KMOBBIETTIVO, "" + mActivities.getKmObbiettivo() + "");
values.put(DataBaseStorageActivities.COLUMN_KMPERCORSI, "" + mActivities.getKmPercorsi() + "");
values.put(DataBaseStorageActivities.COLUMN_TIPOATTIVITA, "" + mActivities.getTipoAttivita());
values.put(DataBaseStorageActivities.COLUMN_EMAIL_FOE, "" + mActivities.getEmailFoe() + "");
long insertId = database.insert(DataBaseStorageActivities.TABLE_ACTIVITIES, null, values);
}
public void deleteOnDbAllActivity(){
database.delete(DataBaseStorageUtente.TABLE_UTENTE, null,null);
}
public void deleteOnDbOneActivities(Activities mActivities){
String guid = (mActivities).getEmailChallenger();
database.delete(DataBaseStorageActivities.TABLE_ACTIVITIES, DataBaseStorageActivities.COLUMN_ID +"='" + guid+ "'" , null);
System.out.print("Activity that we have delete is : " + guid);
}
public int deleteOnDbSomeActivities(List<Activities> mActivies){
String guid=null;
int db=-1;
for(Activities activities: mActivies){
guid=activities.getEmailChallenger();
db=database.delete(DataBaseStorageActivities.TABLE_ACTIVITIES, DataBaseStorageActivities.COLUMN_ID + "='" + guid+ "'", null);
}return db;
}
public List<Activities> getAllActvities(){
List<Activities> listActivities = new ArrayList<Activities>();
Cursor cursor = database.query(DataBaseStorageActivities.TABLE_ACTIVITIES, allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Activities activities=cursorsActivities(cursor);
listActivities.add(activities);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return listActivities;
}
public int getHowManyActvitiesUser(String eMail){
int i=0;
String where = DataBaseStorageActivities.COLUMN_EMAIL + " = '"+eMail+"'";
Cursor cursor = database.query(DataBaseStorageActivities.TABLE_ACTIVITIES, allColumns, where, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
i++;
cursor.moveToNext();
}
cursor.close();
return i;
}
private Activities cursorsActivities(Cursor cursor) {
Activities activities = new Activities();
activities.setKeyActivities(cursor.getLong(DataBaseStorageActivities.COLUMN_ID_INDEX));
activities.setEmailChallenger(cursor.getString(DataBaseStorageActivities.COLUMN_EMAIL_INDEX));
activities.setIdSfidato(cursor.getLong(DataBaseStorageActivities.COLUMN_IDSFIDATO_INDEX));
activities.setStartDate(cursor.getInt(DataBaseStorageActivities.COLUMN_STARTDATE_INDEX));
activities.setEndDate(cursor.getInt(DataBaseStorageActivities.COLUMN_ENDDATE_INDEX));
activities.setWin(cursor.getInt(DataBaseStorageActivities.COLUMN_WIN_INDEX));
activities.setKmObbiettivo(cursor.getInt(DataBaseStorageActivities.COLUMN_KMOBBIETTIVO_INDEX));
activities.setKmPercorsi(cursor.getInt(DataBaseStorageActivities.COLUMN_KMPERCORSI_INDEX));
activities.setTipoAttivita(cursor.getString(DataBaseStorageActivities.COLUMN_TIPOATTIVITA_INDEX));
activities.setEmailFoe(cursor.getString(DataBaseStorageActivities.COLUMN_EMAIL_FOE_INDEX));
return activities;
}
/**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();
}
}