package it.angelic.soulissclient.model.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import it.angelic.soulissclient.Constants;
import it.angelic.soulissclient.R;
import it.angelic.soulissclient.util.FontAwesomeUtil;
/**
* Classe che rappresenta il DB associato a Souliss client
* <p/>
* una tabella per i nodi e una per i tipici, collegate da foreign key. Tutte le
* tabelle salvano l'ultima modifica come un long poi wrappato in Calendar
* <p/>
* tabella commands per esecuzione programmi
* <p/>
* tabella triggers fa riferimento alla tabella comandi, rappresenta l'input di
* threshold
*
* @author Ale
*/
public class SoulissDB extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "souliss.db";
public static final String TABLE_TYPICALS = "typicals";
public static final String TABLE_NODES = "nodes";
public static final String TABLE_TRIGGERS = "triggers";
public static final String TABLE_LOGS = "logs";
public static final String TABLE_COMMANDS = "commands";
public static final String TABLE_SCENES = "scenes";
public static final String TABLE_TAGS = "tags";
public static final String TABLE_TAGS_TYPICALS = "tags_typicals";
public static final String TABLE_LAUNCHER = "launcher";
/*
* NODES TABLE
*/
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NODE_ID = "intnodeid";
public static final String COLUMN_NODE_HEALTH = "inthlt";
public static final String COLUMN_NODE_ICON = "intnodeico";
public static final String COLUMN_NODE_NAME = "strnodename";
public static final String COLUMN_NODE_LASTMOD = "cldnodemod";
public static final String[] ALLCOLUMNS_NODES = {COLUMN_ID, COLUMN_NODE_ID, COLUMN_NODE_HEALTH, COLUMN_NODE_ICON,
COLUMN_NODE_NAME, COLUMN_NODE_LASTMOD};
/*
* TYPICALS TABLE
*
* create table typicals( _id integer REFERENCES nodes (intnid), FOREIGN
* KEY( intnid) per garantire esistenza nodo
*/
public static final String COLUMN_TYPICAL_NODE_ID = "inttypnodeid";
public static final String COLUMN_TYPICAL = "inttyp";
public static final String COLUMN_TYPICAL_SLOT = "inttypslo";
public static final String COLUMN_TYPICAL_VALUE = "inttypval";
public static final String COLUMN_TYPICAL_WARNTIMER = "inttypwarn";
public static final String COLUMN_TYPICAL_INPUT = "inttypcmd";
public static final String COLUMN_TYPICAL_ICON = "inttypico";
public static final String COLUMN_TYPICAL_NAME = "strtypname";
public static final String COLUMN_TYPICAL_LASTMOD = "cldtypmod";
public static final String COLUMN_TYPICAL_ISFAV = "flgtypisfav";
public static final String[] ALLCOLUMNS_TYPICALS = {COLUMN_TYPICAL_NODE_ID, COLUMN_TYPICAL, COLUMN_TYPICAL_SLOT,
COLUMN_TYPICAL_INPUT, COLUMN_TYPICAL_VALUE, COLUMN_TYPICAL_VALUE, COLUMN_TYPICAL_ICON, COLUMN_TYPICAL_ISFAV, COLUMN_TYPICAL_NAME,
COLUMN_TYPICAL_LASTMOD, COLUMN_TYPICAL_WARNTIMER};
/*
* TABELLA COMANDI
*/
public static final String COLUMN_COMMAND_ID = "cmdid";
public static final String COLUMN_COMMAND_NODE_ID = "intcmdnodeid";
public static final String COLUMN_COMMAND_SLOT = "intcmdslo";
public static final String COLUMN_COMMAND_INPUT = "intcmdval";
public static final String COLUMN_COMMAND_SCHEDTIME = "cldcmdsched";
public static final String COLUMN_COMMAND_TYPE = "intcmdtype";
public static final String COLUMN_COMMAND_EXECTIME = "cldcmdexec";
public static final String COLUMN_COMMAND_SCHEDTIME_INTERVAL = "intcmdinterval";
public static final String COLUMN_COMMAND_SCENEID = "intcmdsceneid";
public static final String[] ALLCOLUMNS_COMMANDS = {COLUMN_COMMAND_ID, COLUMN_COMMAND_NODE_ID,
COLUMN_COMMAND_SLOT, COLUMN_COMMAND_TYPE, COLUMN_COMMAND_INPUT, COLUMN_COMMAND_SCHEDTIME,
COLUMN_COMMAND_EXECTIME, COLUMN_COMMAND_SCHEDTIME_INTERVAL, COLUMN_COMMAND_SCENEID};
/*
* TABELLA TRIGGERS
*/
public static final String COLUMN_TRIGGER_ID = "trgid";
public static final String COLUMN_TRIGGER_COMMAND_ID = "inttrgcmdid";
public static final String COLUMN_TRIGGER_SLOT = "inttrgslo";
public static final String COLUMN_TRIGGER_NODE_ID = "inttrgnodeid";
public static final String COLUMN_TRIGGER_OP = "strtrgop";
public static final String COLUMN_TRIGGER_THRESHVAL = "inttrgthreshold";
public static final String COLUMN_TRIGGER_ACTIVE = "flgtrgactivated";
public static final String[] ALLCOLUMNS_TRIGGERS = {COLUMN_TRIGGER_ID, COLUMN_TRIGGER_COMMAND_ID,
COLUMN_TRIGGER_SLOT, COLUMN_TRIGGER_NODE_ID, COLUMN_TRIGGER_OP, COLUMN_TRIGGER_ACTIVE,
COLUMN_TRIGGER_THRESHVAL};
/* TABELLA LOGGING */
public static final String COLUMN_LOG_ID = "logid";
public static final String COLUMN_LOG_NODE_ID = "intlognodeid";
public static final String COLUMN_LOG_SLOT = "intlogslo";
public static final String COLUMN_LOG_VAL = "flologval";
public static final String COLUMN_LOG_DATE = "cldlogwhen";
public static final String[] ALLCOLUMNS_LOGS = {COLUMN_LOG_ID, COLUMN_LOG_NODE_ID, COLUMN_LOG_SLOT,
COLUMN_LOG_VAL, COLUMN_LOG_DATE};
/* TABELLA SCENE */
public static final String COLUMN_SCENE_ID = "sceneid";
public static final String COLUMN_SCENE_NAME = "strscenename";
public static final String COLUMN_SCENE_ICON = "intsceneico";
public static final String[] ALLCOLUMNS_SCENES = {COLUMN_SCENE_ID, COLUMN_SCENE_NAME, COLUMN_SCENE_ICON};
/*TABELLA TAG*/
public static final String COLUMN_TAG_ID = "inttagid";
public static final String COLUMN_TAG_NAME = "strtagname";
public static final String COLUMN_TAG_ICONID = "inttagico";
public static final String COLUMN_TAG_IMGPTH = "strtagpat";
public static final String COLUMN_TAG_ORDER = "inttagord";
public static final String COLUMN_TAG_FATHER_ID = "inttagfathId";
// + " FOREIGN KEY( "+ COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT + ") " + " REFERENCES " + TABLE_TYPICALS + " ("
// + COLUMN_TYPICAL_NODE_ID + "," + COLUMN_TYPICAL_SLOT + ") " + ");";
public static final String[] ALLCOLUMNS_TAGS = {COLUMN_TAG_ID, COLUMN_TAG_NAME,
COLUMN_TAG_ICONID, COLUMN_TAG_IMGPTH, COLUMN_TAG_ORDER, COLUMN_TAG_FATHER_ID};
/*
TABELLA LAUNCHER
*/
public static final String COLUMN_LAUNCHER_ID = "intlauid";
public static final String COLUMN_LAUNCHER_TYPE = "intlauType";
public static final String COLUMN_LAUNCHER_NODE_ID = "intlaunodeid";
public static final String COLUMN_LAUNCHER_SCENE_ID = "intlausceneid";
public static final String COLUMN_LAUNCHER_SLOT_ID = "intlauslotid";//se not null ->typico
public static final String COLUMN_LAUNCHER_TAG_ID = "intlautagid";
public static final String COLUMN_LAUNCHER_ORDER = "intlauorder";
public static final String COLUMN_LAUNCHER_TITLE = "intlautitle";
public static final String COLUMN_LAUNCHER_DESC = "intlaudesc";
public static final String COLUMN_LAUNCHER_FULL_SPAN = "intlaufullspan";
public static final String[] ALLCOLUMNS_LAUNCHER = {COLUMN_LAUNCHER_ID, COLUMN_LAUNCHER_TYPE,
COLUMN_LAUNCHER_NODE_ID, COLUMN_LAUNCHER_SCENE_ID, COLUMN_LAUNCHER_SLOT_ID, COLUMN_LAUNCHER_TAG_ID, COLUMN_LAUNCHER_ORDER, COLUMN_LAUNCHER_TITLE, COLUMN_LAUNCHER_DESC, COLUMN_LAUNCHER_FULL_SPAN};
/*
* TABELLA TAG'TYP
* tabella di relazione n a m per TAG <-> typical
*/
public static final String COLUMN_TAG_TYP_SLOT = "inttagtypslo";
public static final String COLUMN_TAG_TYP_NODE_ID = "inttagtypnodeid";
public static final String COLUMN_TAG_TYP_TAG_ID = "inttagtagid";
public static final String COLUMN_TAG_TYP_PRIORITY = "inttagtyppriority";
public static final String[] ALLCOLUMNS_TAGS_TYPICAL = {COLUMN_TAG_TYP_SLOT,
COLUMN_TAG_TYP_NODE_ID, COLUMN_TAG_TYP_TAG_ID, COLUMN_TAG_TYP_PRIORITY};
private static final int DATABASE_VERSION = 35;
// Database creation sql statement
private static final String DATABASE_CREATE_NODES = "create table " + TABLE_NODES
+ "( "
// COLUMN DEF
+ COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NODE_ID + " integer UNIQUE, "
+ COLUMN_NODE_HEALTH + " integer, " + COLUMN_NODE_ICON + " integer, " + COLUMN_NODE_NAME + " TEXT, "
+ COLUMN_NODE_LASTMOD + " integer not null" + ");";
private static final String DATABASE_CREATE_TYPICALS = "create table "
+ TABLE_TYPICALS
+ "( "
+ COLUMN_TYPICAL_NODE_ID + " integer not null, "
+ COLUMN_TYPICAL + " integer not null, "
+ COLUMN_TYPICAL_SLOT + " integer not null, "
+ COLUMN_TYPICAL_INPUT + " integer, "
+ COLUMN_TYPICAL_VALUE + " integer not null, "
+ COLUMN_TYPICAL_ICON + " integer, "
+ COLUMN_TYPICAL_ISFAV + " integer, "
+ COLUMN_TYPICAL_NAME + " TEXT, "
+ COLUMN_TYPICAL_LASTMOD + " integer not null,"
+ COLUMN_TYPICAL_WARNTIMER + " integer, "
+ " FOREIGN KEY( " + COLUMN_TYPICAL_NODE_ID
+ ") REFERENCES " + TABLE_NODES + " (" + COLUMN_TYPICAL_NODE_ID + "), "
+ "CONSTRAINT typ_keys PRIMARY KEY(" + COLUMN_TYPICAL_NODE_ID + "," + COLUMN_TYPICAL_SLOT + ")" + ");";
private static final String DATABASE_CREATE_COMMANDS = "create table "
+ TABLE_COMMANDS
+ "( "
+
COLUMN_COMMAND_ID + " integer primary key autoincrement, "
+ COLUMN_COMMAND_NODE_ID + " integer not null, "
// TIPICO in caso di comando massivo
+ COLUMN_COMMAND_SLOT + " integer not null, "
+ COLUMN_COMMAND_TYPE + " integer not null, "
+ COLUMN_COMMAND_INPUT + " integer not null, "
+ COLUMN_COMMAND_SCHEDTIME + " integer, "
+ COLUMN_COMMAND_EXECTIME + " integer, "
// Se il comando appartiene a scenario, rappresenta l'ordine di
// esecuzione
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + " integer, "
+ COLUMN_COMMAND_SCENEID + " integer,"
+ " FOREIGN KEY( " + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT + ") " + " REFERENCES " + TABLE_TYPICALS + " ("
+ COLUMN_TYPICAL_NODE_ID + "," + COLUMN_TYPICAL_SLOT + ") " + ");";
private static final String DATABASE_CREATE_TRIGGERS = "create table "
+ TABLE_TRIGGERS
+ "( "
+ COLUMN_TRIGGER_ID + " integer primary key autoincrement, "
+ COLUMN_TRIGGER_COMMAND_ID + " integer not null, "
+ COLUMN_TRIGGER_SLOT + " integer not null, "
+ COLUMN_TRIGGER_NODE_ID + " integer not null, "
+ COLUMN_TRIGGER_OP + " integer not null, "
+ COLUMN_TRIGGER_ACTIVE + " integer not null, "
+ COLUMN_TRIGGER_THRESHVAL + " REAL not null, "
+ " FOREIGN KEY( " + COLUMN_TRIGGER_COMMAND_ID
+ " ) REFERENCES " + TABLE_COMMANDS + " ("
+ COLUMN_COMMAND_ID + ") " + ");";
private static final String DATABASE_CREATE_LOGS = "create table " + TABLE_LOGS
+ "( "
// COLUMN DEF
+ COLUMN_LOG_ID + " integer primary key autoincrement, "
+ COLUMN_LOG_NODE_ID + " integer not null, "
+ // command to trig
COLUMN_LOG_SLOT + " integer not null, "
+ // input slot
COLUMN_LOG_VAL + " float not null, "
+ COLUMN_LOG_DATE + " integer not null, "
+ " FOREIGN KEY( " + COLUMN_LOG_NODE_ID + "," + COLUMN_LOG_SLOT + ") "
+ " REFERENCES " + TABLE_TYPICALS + " (" + COLUMN_TYPICAL_NODE_ID + "," + COLUMN_TYPICAL_SLOT + ") " + ");";
private static final String DATABASE_CREATE_SCENES = "create table " + TABLE_SCENES + "( "
// COLUMN DEF
+ COLUMN_SCENE_ID + " integer primary key autoincrement, " + COLUMN_SCENE_ICON + " integer, "
+ COLUMN_SCENE_NAME + " textname " + // command to trig
");";
private static final String DATABASE_CREATE_TAGS = "create table "
+ TABLE_TAGS
+ "( "
+ COLUMN_TAG_ID + " integer primary key autoincrement, "
+ COLUMN_TAG_NAME + " TEXT, "
+ COLUMN_TAG_ICONID + " integer not null, "
+ COLUMN_TAG_IMGPTH + " TEXT, "
+ COLUMN_TAG_ORDER + " integer, "
+ COLUMN_TAG_FATHER_ID + " integer, "
+ " FOREIGN KEY( " + COLUMN_TAG_FATHER_ID
+ " ) REFERENCES " + TABLE_TAGS + " ("
+ COLUMN_TAG_ID + ") ON DELETE CASCADE "
+ ");";
private static final String DATABASE_CREATE_LAUNCHER = "create table "
+ TABLE_LAUNCHER
+ "( "
+ COLUMN_LAUNCHER_ID + " integer primary key autoincrement, "
+ COLUMN_LAUNCHER_TYPE + " integer not null, "
+ COLUMN_LAUNCHER_ORDER + " integer not null, "
+ COLUMN_LAUNCHER_NODE_ID + " integer, "
+ COLUMN_LAUNCHER_SLOT_ID + " integer, "
+ COLUMN_LAUNCHER_TAG_ID + " integer, "
+ COLUMN_LAUNCHER_SCENE_ID + " integer, "
+ COLUMN_LAUNCHER_TITLE + " TEXT, "
+ COLUMN_LAUNCHER_DESC + " TEXT, "
+ COLUMN_LAUNCHER_FULL_SPAN + " integer, "
+ " FOREIGN KEY( " + COLUMN_LAUNCHER_NODE_ID
+ " ) REFERENCES " + TABLE_NODES + " ("
+ COLUMN_NODE_ID + "), "
+ " FOREIGN KEY( " + COLUMN_LAUNCHER_SCENE_ID
+ " ) REFERENCES " + TABLE_SCENES + " ("
+ COLUMN_SCENE_ID + "), "
+ " FOREIGN KEY( " + COLUMN_LAUNCHER_TAG_ID
+ " ) REFERENCES " + TABLE_TAGS + " ("
+ COLUMN_TAG_ID + "), "
+ " FOREIGN KEY( " + COLUMN_LAUNCHER_SLOT_ID
+ " ) REFERENCES " + TABLE_TYPICALS + " ("
+ COLUMN_TYPICAL_SLOT + ") "
+ ");";
private static final String DATABASE_CREATE_TAG_TYPICAL = "create table "
+ TABLE_TAGS_TYPICALS
+ "( "
+ COLUMN_TAG_TYP_SLOT + " integer not null, "
+ COLUMN_TAG_TYP_NODE_ID + " integer not null, "
+ COLUMN_TAG_TYP_TAG_ID + " integer not null, "
+ COLUMN_TAG_TYP_PRIORITY + " integer not null DEFAULT 0 , "
+ " PRIMARY KEY (" + COLUMN_TAG_TYP_NODE_ID + "," + COLUMN_TAG_TYP_SLOT + "," + COLUMN_TAG_TYP_TAG_ID + ") "
+ " FOREIGN KEY ( " + COLUMN_TAG_TYP_TAG_ID + ") "
+ " REFERENCES " + TABLE_TAGS + " (" + COLUMN_TYPICAL_NODE_ID + "), "
+ " FOREIGN KEY ( " + COLUMN_TAG_TYP_NODE_ID + "," + COLUMN_TAG_TYP_SLOT + ") "
+ " REFERENCES " + TABLE_TYPICALS + " (" + COLUMN_TYPICAL_NODE_ID + "," + COLUMN_TYPICAL_SLOT + ") "
+ ");";
public static long FAVOURITES_TAG_ID = 0;
private Context context;
//AUTOF
/**
* super wrapper createDB
*
* @param context
*/
public SoulissDB(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
private void doDefaultInserts(SQLiteDatabase database) {
/* DEFAULT TAG , Order=0 */
database.execSQL("INSERT INTO " + TABLE_TAGS + " (" + COLUMN_TAG_ID + "," + COLUMN_TAG_NAME + "," + COLUMN_TAG_ORDER + "," + COLUMN_TAG_ICONID
+ ") VALUES (" + FAVOURITES_TAG_ID + ",'" + context.getResources().getString(R.string.favourites) + "'," + 0 + ","
+ FontAwesomeUtil.getCodeIndexByFontName(context, "fa-heart-o") + ")");
/* DEFAULT SCENE */
database.execSQL("INSERT INTO " + TABLE_SCENES + " (" + COLUMN_SCENE_NAME + "," + COLUMN_SCENE_ICON
+ ") VALUES ('" + context.getResources().getString(R.string.scene_turnoff_lights) + "',"
+ FontAwesomeUtil.getCodeIndexByFontName(context, "fa-toggle-off") + ")");
database.execSQL("INSERT INTO " + TABLE_SCENES + " (" + COLUMN_SCENE_NAME + "," + COLUMN_SCENE_ICON
+ ") VALUES ('" + context.getResources().getString(R.string.scene_turnon_lights) + "',"
+ FontAwesomeUtil.getCodeIndexByFontName(context, "fa-toggle-on") + ")");
// Comandi massivi di default OFF, NODEID = -1
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T11 + "," + Constants.Typicals.Souliss_T1n_OffCmd
+ ",1," + Constants.MASSIVE_NODE_ID + ",200)");
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T12 + "," + Constants.Typicals.Souliss_T1n_OffCmd
+ ",1," + Constants.MASSIVE_NODE_ID + ",400)");
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT//RGB
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T16 + "," + Constants.Typicals.Souliss_T1n_OffCmd
+ ",1," + Constants.MASSIVE_NODE_ID + ",600)");
// Comandi massivi di default ON
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T11 + "," + Constants.Typicals.Souliss_T1n_OnCmd
+ ",2," + Constants.MASSIVE_NODE_ID + ",200)");
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T12 + "," + Constants.Typicals.Souliss_T1n_OnCmd
+ ",2," + Constants.MASSIVE_NODE_ID + ",400)");
database.execSQL("INSERT INTO " + TABLE_COMMANDS + " (" + COLUMN_COMMAND_NODE_ID + "," + COLUMN_COMMAND_SLOT
+ "," + COLUMN_COMMAND_INPUT + "," + COLUMN_COMMAND_SCENEID + "," + COLUMN_COMMAND_TYPE + ","
+ COLUMN_COMMAND_SCHEDTIME_INTERVAL + ")"
+ " VALUES " + "(" + Constants.MASSIVE_NODE_ID + ", " + Constants.Typicals.Souliss_T16 + "," + Constants.Typicals.Souliss_T1n_OnCmd
+ ",2," + Constants.MASSIVE_NODE_ID + ",600)");
}
protected void dropCreate(SQLiteDatabase db) {
Log.w(SoulissDB.class.getName(), "DB dropCreate " + db.getPath());
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LAUNCHER);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TRIGGERS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMMANDS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SCENES);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TAGS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TAGS_TYPICALS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TYPICALS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NODES);
onCreate(db);
}
@Override
public void onCreate(SQLiteDatabase database) {
Log.w(SoulissDB.class.getName(), "DB on create " + database.getPath());
database.execSQL(DATABASE_CREATE_NODES);
database.execSQL(DATABASE_CREATE_TYPICALS);
database.execSQL(DATABASE_CREATE_COMMANDS);
database.execSQL(DATABASE_CREATE_TRIGGERS);
database.execSQL(DATABASE_CREATE_LOGS);
database.execSQL(DATABASE_CREATE_SCENES);
database.execSQL(DATABASE_CREATE_TAGS);
database.execSQL(DATABASE_CREATE_LAUNCHER);
database.execSQL(DATABASE_CREATE_TAG_TYPICAL);
doDefaultInserts(database);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(SoulissDB.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion);
boolean dropNeeded = true;
if (oldVersion <= 30 && newVersion == DATABASE_VERSION) {
//added warn TIMER
try {
String upgradeQuery = "ALTER TABLE " + TABLE_TYPICALS + " ADD COLUMN " + COLUMN_TYPICAL_WARNTIMER + " INTEGER";
db.execSQL(upgradeQuery);
} catch (Exception cazzo) {
//somehow already existing, just log
Log.e(SoulissDB.class.getName(), "Upgrading database ERROR:" + cazzo.getMessage());
}
}
if (oldVersion <= 34 && newVersion == DATABASE_VERSION) {
try {
//font awesome now
db.execSQL("UPDATE " + TABLE_TYPICALS + " SET " + COLUMN_TYPICAL_ICON + " = null");
db.execSQL("UPDATE " + TABLE_NODES + " SET " + COLUMN_NODE_ICON + " = null");
db.execSQL("UPDATE " + TABLE_SCENES + " SET " + COLUMN_SCENE_ICON + " = null");
//costretto a droppare i TAGS
//added TABLE_LAUNCHER and related
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LAUNCHER);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TAGS_TYPICALS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TAGS);
db.execSQL(DATABASE_CREATE_TAGS);
db.execSQL(DATABASE_CREATE_TAG_TYPICAL);
db.execSQL(DATABASE_CREATE_LAUNCHER);
/* DEFAULT TAG , Order=0 */
db.execSQL("INSERT INTO " + TABLE_TAGS + " (" + COLUMN_TAG_ID + "," + COLUMN_TAG_NAME + "," + COLUMN_TAG_ORDER + "," + COLUMN_TAG_ICONID
+ ") VALUES (" + FAVOURITES_TAG_ID + ",'" + context.getResources().getString(R.string.favourites) + "'," + 0 + ","
+ FontAwesomeUtil.getCodeIndexByFontName(context, "fa-heart-o") + ")");
dropNeeded = false;
} catch (Exception cazzo) {
//somehow already existing, just log
Log.e(SoulissDB.class.getName(), "Upgrading database ERROR:" + cazzo.getMessage());
dropNeeded = true;
}
}
if (dropNeeded) {
Log.e(SoulissDB.class.getName(), "Upgrading database went wrong, DROPPI&RE-CREATE");
dropCreate(db);
}
}
}