package org.skydiveapp.repository;
import java.util.ArrayList;
import java.util.List;
import org.skydiveapp.data.Aircraft;
import org.skydiveapp.data.Database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class AircraftRepository
{
private Database database;
public AircraftRepository(Context context)
{
database = new Database(context);
}
public List<Aircraft> getAllAircrafts()
{
return getAircrafts(null);
}
public List<Aircraft> getAircrafts()
{
return getAircrafts(Database.AIRCRAFT_ACTIVE + " = " + 1);
}
private List<Aircraft> getAircrafts(String where)
{
List<Aircraft> aircrafts = new ArrayList<Aircraft>();
SQLiteDatabase db = database.getReadableDatabase();
Cursor cursor = null;
try
{
// perform query
cursor = db.query(
Database.AIRCRAFT_TABLE,
Database.AIRCRAFT_ALL_COLUMNS,
where,
null, null, null,
Database.AIRCRAFT_NAME);
// iterate over results
while (cursor.moveToNext())
{
// create aircrafts
Aircraft aircraft = createAircraft(cursor);
aircrafts.add(aircraft);
}
}
finally
{
// close cursor
if (cursor != null)
{
cursor.close();
}
// close database
db.close();
}
return aircrafts;
}
public Aircraft findAircraft(String name)
{
return getAircraft(Database.AIRCRAFT_NAME + " = ?", name);
}
public Aircraft getAircraft(int id)
{
return getAircraft(Database.AIRCRAFT_ID + " = ?", String.valueOf(id));
}
private Aircraft getAircraft(String where, String... whereParams)
{
Aircraft aircraft = null;
SQLiteDatabase db = database.getReadableDatabase();
Cursor cursor = null;
try
{
// perform query
cursor = db.query(
Database.AIRCRAFT_TABLE,
Database.AIRCRAFT_ALL_COLUMNS,
where,
whereParams,
null,
null,
null);
if (cursor.moveToFirst())
{
aircraft = createAircraft(cursor);
}
}
finally
{
// close cursor
if (cursor != null)
{
cursor.close();
}
// close database
db.close();
}
return aircraft;
}
public void addAircraft(Aircraft aircraft)
{
// get insert values
ContentValues values = createContentValues(aircraft);
// do insert
SQLiteDatabase db = database.getWritableDatabase();
try
{
// do insert
long id = db.insert(Database.AIRCRAFT_TABLE, null, values);
aircraft.setId((int)id);
}
finally
{
// close db
db.close();
}
}
public void updateAircraft(Aircraft aircraft)
{
// get update values
ContentValues values = createContentValues(aircraft);
SQLiteDatabase db = database.getWritableDatabase();
try
{
// do update
db.update(Database.AIRCRAFT_TABLE,
values,
Database.AIRCRAFT_ID + " = " + aircraft.getId(),
null);
}
finally
{
// close db
db.close();
}
}
public void deleteAircraft(Aircraft aircraft)
{
SQLiteDatabase db = database.getWritableDatabase();
try
{
// create update values
ContentValues values = new ContentValues();
values.put(Database.AIRCRAFT_ACTIVE, false);
// deactivate location
db.update(
Database.AIRCRAFT_TABLE,
values,
Database.AIRCRAFT_ID + " = " + aircraft.getId(),
null);
}
finally
{
// close db
db.close();
}
}
private Aircraft createAircraft(Cursor cursor)
{
Aircraft aircraft = new Aircraft();
aircraft.setId(Database.getInteger(cursor, Database.AIRCRAFT_ID));
aircraft.setActive(Database.getBoolean(cursor, Database.AIRCRAFT_ACTIVE));
aircraft.setName(Database.getString(cursor, Database.AIRCRAFT_NAME));
aircraft.setNotes(Database.getString(cursor, Database.AIRCRAFT_NOTES));
return aircraft;
}
private ContentValues createContentValues(Aircraft aircraft)
{
ContentValues values = new ContentValues();
values.put(Database.AIRCRAFT_ACTIVE, aircraft.isActive());
values.put(Database.AIRCRAFT_NAME, aircraft.getName());
values.put(Database.AIRCRAFT_NOTES, aircraft.getNotes());
return values;
}
}
|