DBHelper.java :  » Client » g2android » net » dahanne » android » g2android » utils » Android Open Source

Android Open Source » Client » g2android 
g2android » net » dahanne » android » g2android » utils » DBHelper.java
package net.dahanne.android.g2android.utils;

import net.dahanne.android.g2android.model.Album;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper {

  public static final String DB_NAME = "g2android_context";
  public static final String DB_TABLE = "g2android_context_table";
  public static final int DB_VERSION = 3;

  private static final String CLASSNAME = DBHelper.class.getSimpleName();
  private static final String[] COLS = new String[] { "_id",
      "current_position", "root_album", "album_name", "is_logged_in" };

  private SQLiteDatabase db;
  private final DBOpenHelper dbOpenHelper;

  //
  // inner classes
  //

  public static class G2AndroidContext {

    public long id;
    public int currentPosition;
    public Album rootAlbum;
    public int albumName;
    public short isLoggedIn;

    public G2AndroidContext() {
    }

    public G2AndroidContext(final long id, final int currentPosition,
        final Album rootAlbum, final int albumName,
        final boolean isLoggedIn) {
      this.id = id;
      this.currentPosition = currentPosition;
      this.rootAlbum = rootAlbum;
      this.albumName = albumName;
      this.isLoggedIn = isLoggedIn ? (short) 1 : 0;
    }

    @Override
    public String toString() {
      return this.id + " " + this.currentPosition + " " + this.albumName;
    }
  }

  private static class DBOpenHelper extends SQLiteOpenHelper {

    private static final String DB_CREATE = "CREATE TABLE "
        + DBHelper.DB_TABLE
        + " (_id INTEGER PRIMARY KEY, current_position INTEGER, root_album BLOB, album_name INTEGER, is_logged_in SHORT );";

    public DBOpenHelper(final Context context) {
      super(context, DBHelper.DB_NAME, null, DBHelper.DB_VERSION);
    }

    @Override
    public void onCreate(final SQLiteDatabase db) {
      try {
        db.execSQL(DBOpenHelper.DB_CREATE);
      } catch (SQLException e) {
        // Log.e(Constants.LOGTAG, DBHelper.CLASSNAME, e);
      }
    }

    @Override
    public void onOpen(final SQLiteDatabase db) {
      super.onOpen(db);
    }

    @Override
    public void onUpgrade(final SQLiteDatabase db, final int oldVersion,
        final int newVersion) {
      db.execSQL("DROP TABLE IF EXISTS " + DBHelper.DB_TABLE);
      onCreate(db);
    }
  }

  //
  // end inner classes
  //

  public DBHelper(final Context context) {
    this.dbOpenHelper = new DBOpenHelper(context);
    establishDb();
  }

  private void establishDb() {
    if (this.db == null) {
      this.db = this.dbOpenHelper.getWritableDatabase();
    }
  }

  public void cleanup() {
    if (this.db != null) {
      this.db.close();
      this.db = null;
    }
  }

  public void insert(final G2AndroidContext g2AndroidContext) {
    ContentValues values = new ContentValues();
    values.put("current_position", g2AndroidContext.currentPosition);
    values.put("root_album", g2AndroidContext.rootAlbum.serialize());
    values.put("album_name", g2AndroidContext.albumName);
    values.put("is_logged_in", g2AndroidContext.isLoggedIn);

    this.db.insert(DBHelper.DB_TABLE, null, values);
    
    cleanup();
  }

  public void update(final G2AndroidContext g2AndroidContext) {
    ContentValues values = new ContentValues();
    values.put("current_position", g2AndroidContext.currentPosition);
    values.put("root_album", g2AndroidContext.rootAlbum.serialize());
    values.put("album_name", g2AndroidContext.albumName);
    values.put("is_logged_in", g2AndroidContext.isLoggedIn);
    this.db.update(DBHelper.DB_TABLE, values, "_id=" + g2AndroidContext.id,
        null);
    
    cleanup();
  }

  public void delete(final long id) {
    this.db.delete(DBHelper.DB_TABLE, "_id=" + id, null);
  }

  public void deleteAll() {
    this.db.delete(DBHelper.DB_TABLE, null, null);
  }

  // public void delete(final String zip) {
  // this.db.delete(DBHelper.DB_TABLE, "zip='" + zip + "'", null);
  // }

  public G2AndroidContext getLast() {
    Cursor c = null;
    G2AndroidContext g2AndroidContext = null;
    try {
      c = this.db.query(true, DBHelper.DB_TABLE, DBHelper.COLS, null,
          null, null, null, "_id DESC", null);
      if (c.getCount() > 0) {
        c.moveToFirst();
        g2AndroidContext = new G2AndroidContext();
        g2AndroidContext.id = c.getLong(0);
        g2AndroidContext.currentPosition = c.getInt(1);
        g2AndroidContext.rootAlbum = Album.unserializeAlbum(c
            .getBlob(2));
        g2AndroidContext.albumName = c.getInt(3);
        g2AndroidContext.isLoggedIn = c.getShort(4);

      }
    } catch (SQLException e) {
      // Log.v(Constants.LOGTAG, DBHelper.CLASSNAME, e);
    } finally {
      c.close();
      cleanup();
      
//      if (c != null && !c.isClosed()) {
//        c.close();
//      }
    }
    return g2AndroidContext;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.