package com.kedzie.vbox.server;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Table of VirtualBox servers
* @author Marek Kędzierski
*/
public class ServerSQlite extends SQLiteOpenHelper {
private static final String TAG = "ServerSQlite";
public ServerSQlite(Context context) {
super(context, "vbox.db", null, 3);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("ServerSQL", "Creating database schema");
db.execSQL("CREATE TABLE SERVERS (ID INTEGER PRIMARY KEY, NAME TEXT, HOST TEXT, SSL INTEGER, PORT INTEGER, USERNAME TEXT, PASSWORD TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "DB upgrade [" + oldVersion + "-->" + newVersion + "], migrating data");
db.execSQL("ALTER TABLE SERVERS ADD COLUMN SSL INTEGER");
}
/**
* Get a server by id
* @param id the id of the server
* @return the server
*/
public Server get(Long id) {
Cursor c = getReadableDatabase().query("SERVERS",
new String[] { "ID", "NAME", "HOST", "SSL", "PORT", "USERNAME", "PASSWORD" },
"ID=?", new String [] { id.toString() }, null, null, null);
if(!c.moveToFirst())
return null;
return new Server(
c.getLong(c.getColumnIndex("ID")),
c.getString(c.getColumnIndex("NAME")),
c.getString(c.getColumnIndex("HOST")),
c.getInt(c.getColumnIndex("SSL"))>0,
c.getInt(c.getColumnIndex("PORT")),
c.getString(c.getColumnIndex("USERNAME")),
c.getString(c.getColumnIndex("PASSWORD")));
}
/**
* Query all the servers
* @return All the Servers
*/
public List<Server> query() {
Cursor c = getReadableDatabase().query("SERVERS", new String[] { "ID", "NAME", "HOST", "SSL", "PORT", "USERNAME", "PASSWORD" }, null, null, null, null, null);
List<Server> ret = new ArrayList<Server>();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
ret.add(new Server(
c.getLong(c.getColumnIndex("ID")),
c.getString(c.getColumnIndex("NAME")),
c.getString(c.getColumnIndex("HOST")),
c.getInt(c.getColumnIndex("SSL"))>0,
c.getInt(c.getColumnIndex("PORT")),
c.getString(c.getColumnIndex("USERNAME")),
c.getString(c.getColumnIndex("PASSWORD"))));
return ret;
}
/**
* Insert a server
* @param s the server
*/
public void insert(Server s) {
ContentValues c = new ContentValues();
c.put("NAME", s.getName());
c.put("HOST", s.getHost());
c.put("SSL", s.isSSL());
c.put("PORT", s.getPort());
c.put("USERNAME", s.getUsername());
c.put("PASSWORD", s.getPassword());
s.setId(getWritableDatabase().insert( "SERVERS", null, c));
}
/**
* Update a server
* @param s the server
*/
public void update(Server s) {
ContentValues c = new ContentValues();
c.put("ID", s.getId());
c.put("NAME", s.getName());
c.put("HOST", s.getHost());
c.put("SSL", s.isSSL());
c.put("PORT", s.getPort());
c.put("USERNAME", s.getUsername());
c.put("PASSWORD", s.getPassword());
getWritableDatabase().update( "SERVERS", c, "ID = ?", new String[] { s.getId().toString() } );
}
/**
* Delete a server
* @param id the id of server
*/
public void delete(Long id) {
getWritableDatabase().delete( "SERVERS", "ID = ?", new String[] { id.toString() } );
}
}