/* * 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.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.media.AudioManager; import android.net.Uri; import com.kyakujin.android.autoeco.Conf; import com.kyakujin.android.autoeco.Conf.EcoExecFrom; import com.kyakujin.android.autoeco.Conf.SleepTime; import com.kyakujin.android.autoeco.db.AutoEcoContract.EcoQuery; import com.kyakujin.android.autoeco.db.AutoEcoContract.EcoTbl; /** * Data Access Object for Eco Table. */ public class EcoDAO { Context mContext; public EcoDAO(Context context) { super(); mContext = context; } private EcoModel createDefaultEcoModel() { EcoModel model = new EcoModel(); model.setName(Conf.NONE); model.setWifiEnabled(true); model.setBluetoothEnabled(true); model.setSyncEnabled(true); model.setRotateEnabled(true); model.setBrightnessEnabled(true); model.setBrightnessValue(20); model.setBrightnessAuto(false); model.setSilentEnabled(true); model.setSilentMode(AudioManager.RINGER_MODE_NORMAL); model.setSleepEnabled(true); model.setSleepTime(1); return model; } private ContentValues createDefultContentValues() { EcoModel model = createDefaultEcoModel(); ContentValues val = new ContentValues(); val.put(EcoTbl.NAME, model.getName()); val.put(EcoTbl.WIFI_ENABLED, model.getWifiEnabled() == true ? 1 : 0); val.put(EcoTbl.BLUETOOTH_ENABLED, model.getBluetoothEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_ENABLED, model.getBrightnessEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_VALUE, model.getBrightnessValue()); val.put(EcoTbl.BRIGHTNESS_ENABLED, model.getBrightnessAuto() == true ? 1 : 0); val.put(EcoTbl.ROTATE_ENABLED, model.getRotateEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_ENABLED, model.getSilentEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_MODE, model.getSilentMode()); val.put(EcoTbl.SLEEP_ENABLED, model.getSleepEnabled() == true ? 1 : 0); val.put(EcoTbl.SLEEP_TIME, model.getSleepTimeOrdinal()); val.put(EcoTbl.SYNC_ENABLED, model.getSyncEnabled() == true ? 1 : 0); return val; } public Uri insertDefaultEco() { return insertEco(createDefaultEcoModel()); } public Uri insertEco(EcoModel model) { ContentValues val = createDefultContentValues(); val.put(EcoTbl.NAME, model.getName()); val.put(EcoTbl.WIFI_ENABLED, model.getWifiEnabled() == true ? 1 : 0); val.put(EcoTbl.BLUETOOTH_ENABLED, model.getBluetoothEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_ENABLED, model.getBrightnessEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_VALUE, model.getBrightnessValue()); val.put(EcoTbl.BRIGHTNESS_AUTO, model.getBrightnessAuto() == true ? 1 : 0); val.put(EcoTbl.ROTATE_ENABLED, model.getRotateEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_ENABLED, model.getSilentEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_MODE, model.getSilentMode()); val.put(EcoTbl.SLEEP_ENABLED, model.getSleepEnabled() == true ? 1 : 0); val.put(EcoTbl.SLEEP_TIME, model.getSleepTimeOrdinal()); val.put(EcoTbl.SYNC_ENABLED, model.getSyncEnabled() == true ? 1 : 0); return mContext.getContentResolver().insert(EcoTbl.CONTENT_URI, val); } public void updateEco(EcoModel model) { ContentValues val = new ContentValues(); val.put(EcoTbl.NAME, model.getName()); val.put(EcoTbl.WIFI_ENABLED, model.getWifiEnabled() == true ? 1 : 0); val.put(EcoTbl.BLUETOOTH_ENABLED, model.getBluetoothEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_ENABLED, model.getBrightnessEnabled() == true ? 1 : 0); val.put(EcoTbl.BRIGHTNESS_VALUE, model.getBrightnessValue()); val.put(EcoTbl.BRIGHTNESS_AUTO, model.getBrightnessAuto() == true ? 1 : 0); val.put(EcoTbl.ROTATE_ENABLED, model.getRotateEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_ENABLED, model.getSilentEnabled() == true ? 1 : 0); val.put(EcoTbl.SILENT_MODE, model.getSilentMode()); val.put(EcoTbl.SLEEP_ENABLED, model.getSleepEnabled() == true ? 1 : 0); val.put(EcoTbl.SLEEP_TIME, model.getSleepTimeOrdinal()); val.put(EcoTbl.SYNC_ENABLED, model.getSyncEnabled() == true ? 1 : 0); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(model.getId())), val, null, null); return; } public void updateWifiEnabled(int ecoId, boolean value) { ContentValues val = new ContentValues(); val.put(EcoTbl.WIFI_ENABLED, value == true ? 1 : 0); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateBluetoothEnabled(int ecoId, boolean value) { ContentValues val = new ContentValues(); val.put(EcoTbl.BLUETOOTH_ENABLED, value == true ? 1 : 0); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateRotateEnabled(int ecoId, boolean value) { ContentValues val = new ContentValues(); val.put(EcoTbl.ROTATE_ENABLED, value == true ? 1 : 0); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateSyncEnabled(int ecoId, boolean value) { ContentValues val = new ContentValues(); val.put(EcoTbl.SYNC_ENABLED, value == true ? 1 : 0); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateBrightnessValue(int ecoId, int value) { ContentValues val = new ContentValues(); val.put(EcoTbl.BRIGHTNESS_VALUE, value); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateBrightnessAuto(int ecoId, boolean enabled) { ContentValues val = new ContentValues(); val.put(EcoTbl.BRIGHTNESS_AUTO, enabled); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateSilentMode(int ecoId, int mode) { ContentValues val = new ContentValues(); val.put(EcoTbl.SILENT_MODE, mode); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public void updateSleepTime(int ecoId, int time) { ContentValues val = new ContentValues(); val.put(EcoTbl.SLEEP_TIME, time); mContext.getContentResolver().update(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), val, null, null); return; } public EcoModel readToEcoModelByCursor(Cursor c) { EcoModel model = new EcoModel(); if (c != null && c.moveToFirst()) { model.setId(c.getInt(EcoQuery.Idx._ID.ordinal())); model.setName(c.getString(EcoQuery.Idx.NAME.ordinal())); model.setWifiEnabled(c.getInt(EcoQuery.Idx.WIFI_ENABLED.ordinal()) == 1 ? true : false); model.setBluetoothEnabled(c.getInt(EcoQuery.Idx.BLUETOOTH_ENABLED.ordinal()) == 1 ? true : false); model.setRotateEnabled(c.getInt(EcoQuery.Idx.ROTATE_ENABLED.ordinal()) == 1 ? true : false); model.setSyncEnabled(c.getInt(EcoQuery.Idx.SYNC_ENABLED.ordinal()) == 1 ? true : false); model.setBrightnessEnabled(c.getInt(EcoQuery.Idx.BRIGHTNESS_ENABLED.ordinal()) == 1 ? true : false); model.setBrightnessValue(c.getInt(EcoQuery.Idx.BRIGHTNESS_VALUE.ordinal())); model.setBrightnessAuto(c.getInt(EcoQuery.Idx.BRIGHTNESS_AUTO.ordinal()) == 1 ? true : false); model.setSilentEnabled(c.getInt(EcoQuery.Idx.SILENT_ENABLED.ordinal()) == 1 ? true : false); model.setSilentMode(c.getInt(EcoQuery.Idx.SILENT_MODE.ordinal())); model.setSleepEnabled(c.getInt(EcoQuery.Idx.SLEEP_ENABLED.ordinal()) == 1 ? true : false); model.setSleepTime(c.getInt(EcoQuery.Idx.SLEEP_TIME.ordinal())); } return model; } public EcoModel readToEcoModelById(int id) { EcoModel model = new EcoModel(); Cursor c = null; try { c = mContext.getContentResolver().query(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(id)), EcoQuery.PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { model.setId(c.getInt(EcoQuery.Idx._ID.ordinal())); model.setName(c.getString(EcoQuery.Idx.NAME.ordinal())); model.setWifiEnabled(c.getInt(EcoQuery.Idx.WIFI_ENABLED.ordinal()) == 1 ? true : false); model.setBluetoothEnabled(c.getInt(EcoQuery.Idx.BLUETOOTH_ENABLED.ordinal()) == 1 ? true : false); model.setRotateEnabled(c.getInt(EcoQuery.Idx.ROTATE_ENABLED.ordinal()) == 1 ? true : false); model.setSyncEnabled(c.getInt(EcoQuery.Idx.SYNC_ENABLED.ordinal()) == 1 ? true : false); model.setBrightnessEnabled(c.getInt(EcoQuery.Idx.BRIGHTNESS_ENABLED.ordinal()) == 1 ? true : false); model.setBrightnessValue(c.getInt(EcoQuery.Idx.BRIGHTNESS_VALUE.ordinal())); model.setBrightnessAuto(c.getInt(EcoQuery.Idx.BRIGHTNESS_AUTO.ordinal()) == 1 ? true : false); model.setSilentEnabled(c.getInt(EcoQuery.Idx.SILENT_ENABLED.ordinal()) == 1 ? true : false); model.setSilentMode(c.getInt(EcoQuery.Idx.SILENT_MODE.ordinal())); model.setSleepEnabled(c.getInt(EcoQuery.Idx.SLEEP_ENABLED.ordinal()) == 1 ? true : false); model.setSleepTime(c.getInt(EcoQuery.Idx.SLEEP_TIME.ordinal())); } } catch (SQLiteException e) { e.printStackTrace(); } finally { if (c != null) { c.close(); } } return model; } public boolean isEcoEnabledById(int id, EcoExecFrom from, String ecotype) { MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchEcoIdByManualId(id); break; default: ecoId = 0; } Cursor c = null; try { c = mContext.getContentResolver().query(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), EcoQuery.PROJECTION, ecotype + "='1'", null, null); if (c != null && c.moveToFirst()) { return true; } } catch (SQLiteException e) { e.printStackTrace(); } finally { if (c != null) { c.close(); } } return false; } public int searchSilentModeById(int id, EcoExecFrom from) { MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchMappingIdByManualId(id); break; default: ecoId = 0; } EcoModel model = new EcoModel(); model = readToEcoModelById(ecoId); return model.getSilentMode(); } public SleepTime searchSleepTimeById(int id, EcoExecFrom from) { MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchMappingIdByManualId(id); break; default: ecoId = 0; } EcoModel model = new EcoModel(); model = readToEcoModelById(ecoId); return Conf.mapSleepTime.get(model.getSleepTimeOrdinal()); } public int searchBrightnessById(int id, EcoExecFrom from) { MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchMappingIdByManualId(id); break; default: ecoId = 0; } EcoModel model = new EcoModel(); model = readToEcoModelById(ecoId); return model.getBrightnessValue(); } public boolean searchAutoBrightnessById(int id, EcoExecFrom from) { MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchMappingIdByManualId(id); break; default: ecoId = 0; } EcoModel model = new EcoModel(); model = readToEcoModelById(ecoId); return model.getBrightnessAuto(); } public String getTimeStamp(int id, EcoExecFrom from) { String time = ""; MappingDAO dao = new MappingDAO(mContext); int ecoId; switch (from) { case SCHED: ecoId = dao.searchEcoIdBySchedId(id); break; case BATTERY: ecoId = dao.searchEcoIdByBatteryId(id); break; case MANUAL: ecoId = dao.searchMappingIdByManualId(id); break; default: ecoId = 0; } Cursor c = null; try { c = mContext.getContentResolver().query(Uri.withAppendedPath(EcoTbl.CONTENT_URI, String.valueOf(ecoId)), EcoQuery.PROJECTION, null, null, null); if (c != null && c.moveToFirst()) { time = c.getString(EcoQuery.Idx.UPDATE_DATE.ordinal()); } } catch (SQLiteException e) { e.printStackTrace(); } finally { if (c != null) { c.close(); } } return time; } }