/* * Copyright (c) 2013 by CDAC Chennai * * 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. * * @File GyroscopeDbHelper * @Created: 5.09.2014 * @author: Prasenjit * Last Change: 8.09.2014 by Prasenjit */ package com.contextawareframework.dbmanager; import java.util.ArrayList; import java.util.List; import com.contextawareframework.globalvariable.CAFConfig; import com.contextawareframework.sensors.motionsensors.Gyrometer; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; /** * This is a database helper class for all CRUD operation on Gyroscope Sensor in Android */ public class GyroscopeDbHelper{ // Database fields private SQLiteDatabase database; private ContextAwareSQLiteHelper dbHelper; private static GyroscopeDbHelper gyroscopeDbHelper; private static boolean enableDebugging = CAFConfig.isEnableDebugging(); private String TAG = "GyroscopeDbHelper" ; private String[] allColumns = { ContextAwareSQLiteHelper.COLUMN_GYRO_ID, ContextAwareSQLiteHelper.COLUMN_GYRO_TIMESTAMP, ContextAwareSQLiteHelper.COLUMN_GYRO_X, ContextAwareSQLiteHelper.COLUMN_GYRO_Y, ContextAwareSQLiteHelper.COLUMN_GYRO_Z }; /** * Method to enable debugging * @param boolean */ public void setEnableDebugging(boolean value) { enableDebugging = value; } /** * Method to get the present value of enableDebugging * @return boolean */ public boolean getEnableDebugging() { return enableDebugging; } /** * Default Constructor */ private GyroscopeDbHelper(Context context) { dbHelper = new ContextAwareSQLiteHelper(context); } public static synchronized GyroscopeDbHelper getInstance(Context context) { if (gyroscopeDbHelper == null) gyroscopeDbHelper = new GyroscopeDbHelper(context); return gyroscopeDbHelper; } /** * Method to open the database for writing */ public void open() { try { database = dbHelper.getWritableDatabase(); } catch(SQLException e) { e.printStackTrace(); } } /** * Method to open the database in read only mode */ public void openReadOnly() { try { database = dbHelper.getReadableDatabase(); } catch(SQLException e) { e.printStackTrace(); } } /** * Method to close the database connection */ public void close() { dbHelper.close(); } /** * Method to create insert a row of data into the database */ public Gyrometer createGyrometerRowData(long timestamp,Float x, Float y, Float z){ Gyrometer newRow = null; try { ContentValues values = new ContentValues(); values.put(ContextAwareSQLiteHelper.COLUMN_GYRO_TIMESTAMP, timestamp); values.put(ContextAwareSQLiteHelper.COLUMN_GYRO_X,x); values.put(ContextAwareSQLiteHelper.COLUMN_GYRO_Y, y); values.put(ContextAwareSQLiteHelper.COLUMN_GYRO_Z, z); long insertId = database.insert(ContextAwareSQLiteHelper.TABLE_GYRO, null, values); Cursor cursor = database.query(ContextAwareSQLiteHelper.TABLE_GYRO, allColumns, ContextAwareSQLiteHelper.COLUMN_GYRO_ID + " = " + insertId, null, null, null, null); cursor.moveToFirst(); newRow = cursorToGyrometerRow(cursor); cursor.close(); } catch(SQLException e) { e.printStackTrace(); } if(enableDebugging) { Log.d(TAG,"createGyroRowDataMethod"); } return newRow; } /** * Method to delete a row from database. */ public void deleteGyrometerRowData(Gyrometer gyrometerRow) { try{ long id = gyrometerRow.getId(); System.out.println("Comment deleted with id: " + id); database.delete(ContextAwareSQLiteHelper.TABLE_GYRO, ContextAwareSQLiteHelper.COLUMN_GYRO_ID+ " = " + id, null); } catch(SQLException e) { e.printStackTrace(); } } /** * Method to list all row of the Gyrometer table */ public List<Gyrometer> getAllRows() { List<Gyrometer> gyroRows = new ArrayList<Gyrometer>(); Cursor cursor; try { cursor = database.query(ContextAwareSQLiteHelper.TABLE_GYRO, allColumns, null, null, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { Gyrometer gyro = cursorToGyrometerRow(cursor); gyroRows.add(gyro); cursor.moveToNext(); } // Make sure to close the cursor cursor.close(); } catch(SQLException e) { e.printStackTrace(); } if(enableDebugging) { Log.d(TAG,"getAllRows"); } return gyroRows; } /** * Method to intialize a Gyrometer POJO object */ private Gyrometer cursorToGyrometerRow(Cursor cursor) { Gyrometer gyroRow = new Gyrometer(); try{ gyroRow.setTimeStamp(cursor.getLong(0)); gyroRow.setxAxis(cursor.getFloat(1)); gyroRow.setyAxis(cursor.getFloat(2)); gyroRow.setzAxis(cursor.getFloat(3)); } catch(Exception e) { e.printStackTrace(); } if(enableDebugging) { Log.d(TAG,"cursorToGyroRow"); } return gyroRow; } }