package com.yassirh.digitalocean.data; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.yassirh.digitalocean.model.Size; import java.util.ArrayList; import java.util.List; public class SizeDao extends SqlDao<Size> { private DatabaseHelper mDatabaseHelper; public SizeDao(DatabaseHelper databaseHelper) { super(); this.mDatabaseHelper = databaseHelper; } public long create(Size size) { ContentValues values = new ContentValues(); values.put(SizeTable.SIZE_SLUG, size.getSlug()); values.put(SizeTable.MEMORY, size.getMemory()); values.put(SizeTable.CPU, size.getCpu()); values.put(SizeTable.DISK, size.getDisk()); values.put(SizeTable.TRANSFER, size.getTransfer()); values.put(SizeTable.COST_PER_HOUR, size.getCostPerHour()); values.put(SizeTable.COST_PER_MONTH, size.getCostPerMonth()); return db.insertWithOnConflict(getTableHelper().TABLE_NAME, null, values,SQLiteDatabase.CONFLICT_REPLACE); } public Size newInstance(Cursor c) { Size size = new Size(); size.setSlug(c.getString(c.getColumnIndex(SizeTable.SIZE_SLUG))); size.setMemory(c.getInt(c.getColumnIndex(SizeTable.MEMORY))); size.setCpu(c.getInt(c.getColumnIndex(SizeTable.CPU))); size.setDisk(c.getInt(c.getColumnIndex(SizeTable.DISK))); size.setTransfer(c.getInt(c.getColumnIndex(SizeTable.TRANSFER))); size.setCostPerHour(c.getFloat(c.getColumnIndex(SizeTable.COST_PER_HOUR))); size.setCostPerMonth(c.getFloat(c.getColumnIndex(SizeTable.COST_PER_MONTH))); return size; } @Override public DatabaseHelper getDatabaseHelper() { return this.mDatabaseHelper; } @Override public TableHelper getTableHelper() { return new SizeTable(); } public List<Size> getByMinMemory(int minMemory) { List<Size> sizes = new ArrayList<>(); Cursor cursor = db.query(getTableHelper().TABLE_NAME, getTableHelper().getAllColumns(), String.format("%s >= %d", SizeTable.MEMORY, minMemory), null, null, null, SizeTable.MEMORY); if(cursor.moveToFirst()){ while (!cursor.isAfterLast()) { Size size = newInstance(cursor); sizes.add(size); cursor.moveToNext(); } } cursor.close(); return sizes; } }