package org.flisolsaocarlos.flisolapp.provider.impl;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import org.flisolsaocarlos.flisolapp.model.Supporter;
import org.flisolsaocarlos.flisolapp.provider.DatabaseContract.EditionColumns;
import org.flisolsaocarlos.flisolapp.provider.DatabaseContract.SupporterColumns;
import org.flisolsaocarlos.flisolapp.provider.DatabaseContract.Tables;
import org.flisolsaocarlos.flisolapp.provider.DatabaseHelper;
import org.flisolsaocarlos.flisolapp.provider.SupporterDao;
import org.flisolsaocarlos.flisolapp.service.ApplicationService;
import java.util.ArrayList;
import java.util.List;
public class SupporterDaoImpl implements SupporterDao {
final static String TAG = SupporterDaoImpl.class.getName();
private SQLiteDatabase database;
public SupporterDaoImpl() {
DatabaseHelper databaseHelper = ApplicationService.getInstance().getDatabaseHelper();
database = databaseHelper.getWritableDatabase();
}
public Supporter findById(int id) {
Supporter supporter = null;
String columns = SupporterColumns.NAME + ", " +
SupporterColumns.IMAGE + ", " +
SupporterColumns.BUSINESS_PACKAGE + ", " +
SupporterColumns.WEBSITE;
Cursor cursor = database.rawQuery("SELECT " + columns + " FROM " + Tables.SUPPORTER
+ " WHERE " + SupporterColumns.ID + " = " + id, null);
supporter = cursorToSupporter(cursor);
return supporter;
}
@Override
public List<Supporter> findByEditionYear(int year) {
List<Supporter> supporters = new ArrayList<Supporter>();
String columns = SupporterColumns.NAME + ", " +
SupporterColumns.IMAGE + ", " +
SupporterColumns.BUSINESS_PACKAGE + ", " +
SupporterColumns.WEBSITE + ", " +
SupporterColumns.WEBSITE_TITLE;
final String query = "SELECT " + columns + " FROM " + Tables.EDITION + " e"
+ " INNER JOIN " + Tables.SUPPORTER + " s"
+ " ON e." + EditionColumns.ID + " = s." + SupporterColumns.EDITION
+ " WHERE e." + EditionColumns.YEAR + " = ?"
+ " ORDER BY " + SupporterColumns.NAME;
final Cursor cursor = database.rawQuery(query, new String[]{String.valueOf(year)});
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Supporter supporter = cursorToSupporter(cursor);
supporters.add(supporter);
cursor.moveToNext();
}
cursor.close();
return supporters;
}
private Supporter cursorToSupporter(Cursor cursor) {
Supporter supporter = new Supporter();
supporter.setName(cursor.getString(0));
supporter.setImage(cursor.getString(1));
supporter.setBusinessPackage(Supporter.BusinessPackage.valueOf((cursor.getString(2).toUpperCase())));
supporter.setWebsite(cursor.getString(3));
supporter.setWebsiteTitle(cursor.getString(4));
return supporter;
}
}