package com.yassirh.digitalocean.data; import java.util.List; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.yassirh.digitalocean.model.Droplet; import com.yassirh.digitalocean.model.Network; public class NetworkDao extends SqlDao<Network> { private DatabaseHelper databaseHelper; public NetworkDao(DatabaseHelper databaseHelper) { super(); this.databaseHelper = databaseHelper; } public Network newInstance(Cursor c) { Droplet droplet = new DropletDao(databaseHelper).findById(c.getLong(c.getColumnIndex(NetworkTable.DROPLET_ID))); Network network = new Network(); network.setId(c.getLong(c.getColumnIndex(NetworkTable.ID))); network.setCidr(c.getString(c.getColumnIndex(NetworkTable.CIDR))); network.setDroplet(droplet); network.setGateway(c.getString(c.getColumnIndex(NetworkTable.GATEWAY))); network.setIpAddress(c.getString(c.getColumnIndex(NetworkTable.IP_ADDRESS))); network.setNetmask(c.getString(c.getColumnIndex(NetworkTable.NETMASK))); network.setType(c.getString(c.getColumnIndex(NetworkTable.TYPE))); return network; } @Override public DatabaseHelper getDatabaseHelper() { return databaseHelper; } @Override public TableHelper getTableHelper() { return new NetworkTable(); } public void createOrUpdate(Network network) { boolean update = network.getId() != 0 && findById(network.getId()) != null; ContentValues values = new ContentValues(); if(update) values.put(NetworkTable.ID, network.getId()); values.put(NetworkTable.CIDR, network.getCidr()); values.put(NetworkTable.GATEWAY, network.getGateway()); values.put(NetworkTable.IP_ADDRESS, network.getIpAddress()); values.put(NetworkTable.TYPE, network.getType()); values.put(NetworkTable.NETMASK, network.getNetmask()); values.put(NetworkTable.DROPLET_ID, network.getDroplet().getId()); if(update){ db.updateWithOnConflict(getTableHelper().TABLE_NAME,values,NetworkTable.ID +"= ?",new String[]{network.getId()+""},SQLiteDatabase.CONFLICT_REPLACE); }else{ db.insert(getTableHelper().TABLE_NAME, null, values); } } public List<Network> findByDropletId(long id) { return getAllByProperty(NetworkTable.DROPLET_ID, id + ""); } }