/*
* Copyright 2013 Yoshihiro Miyama
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.kyakujin.android.autoeco.db;
import com.kyakujin.android.autoeco.Conf;
import com.kyakujin.android.autoeco.db.AutoEcoContract.BatteryTbl;
import com.kyakujin.android.autoeco.db.AutoEcoContract.EcoTbl;
import com.kyakujin.android.autoeco.db.AutoEcoContract.ManualTbl;
import com.kyakujin.android.autoeco.db.AutoEcoContract.MappingTbl;
import com.kyakujin.android.autoeco.db.AutoEcoContract.SchedTbl;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
/**
* DataBase OpenHelper Version 2.
* (This class is preliminary.)
*/
public class AutoEcoDBOpenHelperV2 extends AutoEcoDBOpenHelper {
private final String TAG = Conf.APP_NAME + ":" + this.getClass().getSimpleName();
private static final int DB_VERSION = 2;
private static final String UPDATE_QUERY = "alter table sched add column reserve INTEGER";
private static final String UPDATE_DATA = "update sched set reserve ='0'";
public AutoEcoDBOpenHelperV2(Context context) {
super(context, DB_VERSION);
}
interface Tables {
String ECO = EcoTbl.getPath();
String SCHED = SchedTbl.getPath();
String BATTERY = BatteryTbl.getPath();
String MANUAL = ManualTbl.getPath();
String MAPPING = MappingTbl.getPath();
}
/** 削除トリガー */
interface Triggers {
String MAPPING_DELETE = "mapping_delete";
String ECO_DELETE = "eco_delete";
String ECO_UPDATE = "eco_update";
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + Tables.ECO + " ("
+ EcoTbl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ EcoTbl.NAME + " TEXT, "
+ EcoTbl.UPDATE_DATE + " TIMESTAMP DEFAULT (DATETIME('now','localtime')), "
+ EcoTbl.WIFI_ENABLED + " INTEGER, "
+ EcoTbl.BLUETOOTH_ENABLED + " INTEGER, "
+ EcoTbl.ROTATE_ENABLED + " INTEGER, "
+ EcoTbl.SYNC_ENABLED + " INTEGER, "
+ EcoTbl.BRIGHTNESS_ENABLED + " INTEGER, "
+ EcoTbl.BRIGHTNESS_VALUE + " INTEGER, "
+ EcoTbl.BRIGHTNESS_AUTO + " INTEGER, "
+ EcoTbl.SLEEP_ENABLED + " INTEGER, "
+ EcoTbl.SLEEP_TIME + " INTEGER, "
+ EcoTbl.SILENT_ENABLED + " INTEGER, "
+ EcoTbl.SILENT_MODE + " INTEGER"
+ ");");
db.execSQL("CREATE TABLE " + Tables.SCHED + " ("
+ SchedTbl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ SchedTbl.ENABLED + " INTEGER, "
+ SchedTbl.HOUR + " INTEGER, "
+ SchedTbl.MINUTE + " INTEGER, "
+ SchedTbl.HOUR_MINUTE_STRING + " TEXT, "
+ SchedTbl.PATTERN + " INTEGER, "
// + "UNIQUE(" + SchedTbl.HOUR + ", " + SchedTbl.MINUTE + ")"
+ "reserve" + " INTEGER, "
+ "UNIQUE(" + SchedTbl.HOUR_MINUTE_STRING + ")"
+ ");");
db.execSQL("CREATE TABLE " + Tables.BATTERY + " ("
+ BatteryTbl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ BatteryTbl.ENABLED + " INTEGER, "
+ BatteryTbl.THRESHOLD + " INTEGER "
+ ");");
db.execSQL("CREATE TABLE " + Tables.MANUAL + " ("
+ ManualTbl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ ManualTbl.NAME + " TEXT "
+ ");");
db.execSQL("CREATE TABLE " + Tables.MAPPING + " ("
+ MappingTbl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ MappingTbl.ECO_ID + " INTEGER,"
+ MappingTbl.SCHED_ID + " INTEGER,"
+ MappingTbl.BATTERY_ID + " INTEGER, "
+ MappingTbl.MANUAL_ID + " INTEGER, "
+ "UNIQUE(" + MappingTbl.ECO_ID + ", " + MappingTbl.SCHED_ID + ")"
+ ");");
db.execSQL("CREATE TRIGGER " + Triggers.MAPPING_DELETE
+ " AFTER DELETE ON " + Tables.SCHED
+ " BEGIN DELETE FROM " + Tables.MAPPING
+ " WHERE " + MappingTbl.SCHED_ID + " =old." + SchedTbl._ID
+ ";" + " END;");
db.execSQL("CREATE TRIGGER " + Triggers.ECO_DELETE
+ " AFTER DELETE ON " + Tables.MAPPING
+ " BEGIN DELETE FROM " + Tables.ECO
+ " WHERE " + EcoTbl._ID + " =old." + MappingTbl.ECO_ID
+ ";" + " END;");
db.execSQL("CREATE TRIGGER " + Triggers.ECO_UPDATE
+ " AFTER UPDATE ON " + Tables.ECO
+ " BEGIN UPDATE " + Tables.ECO + " SET " + EcoTbl.UPDATE_DATE
+ " = (DATETIME('now','localtime'))"
+ " WHERE " + EcoTbl._ID + " =old." + EcoTbl._ID
+ ";" + " END;");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < DB_VERSION) {
db.execSQL(UPDATE_QUERY);
db.execSQL(UPDATE_DATA);
}
}
@Override
public int getVersion() {
return DB_VERSION;
}
}