package com.yassirh.digitalocean.data; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.yassirh.digitalocean.model.Image; public class ImageDao extends SqlDao<Image> { private DatabaseHelper mDatabaseHelper; public ImageDao(DatabaseHelper databaseHelper) { super(); this.mDatabaseHelper = databaseHelper; } public long create(Image image) { ContentValues values = new ContentValues(); values.put(ImageTable.ID, image.getId()); values.put(ImageTable.NAME, image.getName()); values.put(ImageTable.DISTRIBUTION, image.getDistribution()); values.put(ImageTable.SLUG, image.getSlug()); values.put(ImageTable.IS_IN_USE, image.isInUse()); values.put(ImageTable.PUBLIC, image.isPublic() ? 1 : 0); values.put(ImageTable.REGIONS, image.getRegions()); values.put(ImageTable.MINDISKSIZE, image.getMinDiskSize()); return db.insertWithOnConflict(getTableHelper().TABLE_NAME, null, values,SQLiteDatabase.CONFLICT_REPLACE); } public Image newInstance(Cursor c) { Image image = new Image(); image.setId(c.getLong(c.getColumnIndex(ImageTable.ID))); image.setName(c.getString(c.getColumnIndex(ImageTable.NAME))); image.setDistribution(c.getString(c.getColumnIndex(ImageTable.DISTRIBUTION))); image.setSlug(c.getString(c.getColumnIndex(ImageTable.SLUG))); image.setPublic(c.getInt(c.getColumnIndex(ImageTable.PUBLIC)) > 0); image.setRegions(c.getString(c.getColumnIndex(ImageTable.REGIONS))); image.setMinDiskSize(c.getInt(c.getColumnIndex(ImageTable.MINDISKSIZE))); return image; } @Override public DatabaseHelper getDatabaseHelper() { return this.mDatabaseHelper; } @Override public TableHelper getTableHelper() { return new ImageTable(); } public List<Image> getSnapshotsOnly() { List<Image> snapshots = new ArrayList<>(); Cursor cursor = db.query(getTableHelper().TABLE_NAME, getTableHelper().getAllColumns(), ImageTable.PUBLIC + " = ? AND " + ImageTable.IS_IN_USE + " = ?", new String[]{"0","1"}, null, null, ImageTable.NAME); if(cursor.moveToFirst()){ while (!cursor.isAfterLast()) { Image snapshot = newInstance(cursor); snapshots.add(snapshot); cursor.moveToNext(); } } cursor.close(); return snapshots; } public List<Image> getImagesOnly() { List<Image> images = new ArrayList<>(); Cursor cursor = db.query(getTableHelper().TABLE_NAME, getTableHelper().getAllColumns(), ImageTable.PUBLIC + " = ? AND " + ImageTable.IS_IN_USE + " = ?", new String[]{"1","1"}, null, null, ImageTable.NAME); if(cursor.moveToFirst()){ while (!cursor.isAfterLast()) { Image image = newInstance(cursor); images.add(image); cursor.moveToNext(); } } cursor.close(); return images; } public void deleteAll() { db.delete(getTableHelper().TABLE_NAME, ImageTable.IS_IN_USE + " = ?", new String[]{"1"}); } }