You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.0 KiB

package htdinc.howtodrink.DataBase;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Locale;
/**
* Created by RUDY on 31/05/2016.
*/
public class DataBaseOpenHelper extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "HTDDatane.sqlite";
private static final int DATABASE_VERSION = 1;
private static final String SP_KEY_DB_VER = "db_ver";
private final Context mContext;
// Nom de la table
public static final String BAR_TABLE_NAME = "BAR";
// Description des colonnes
public static final String COLUMN_IDBAR = "IDBAR";
public static final int NUM_COLUMN_IDBAR = 0;
public static final String COLUMN_NAMEBAR = "NAMEBAR";
public static final int NUM_COLUMN_NAMEBAR = 1;
public static final String COLUMN_NOTEBAR = "NOTEBAR";
public static final int NUM_COLUMN_NOTEBAR = 2;
public static final String COLUMN_ADDRESSBAR = "ADDRESSBAR";
public static final int NUM_COLUMN_ADDRESSBAR = 3;
public static final String COLUMN_GPSLOCATIONLATITUDEBAR = "GPSLOCATIONLATITUDEBAR";
public static final int NUM_COLUMN_GPSLOCATIONLATITUDEBAR = 4;
public static final String COLUMN_GPSLOCATIONLONGITUDEBAR = "GPSLOCATIONLONGITUDEBAR";
public static final int NUM_COLUMN_GPSLOCATIONLONGITUDEBAR = 5;
// Nom de la table
public static final String CATEGORY_TABLE_NAME = "CATEGORY";
// Description des colonnes
public static final String COLUMN_IDCATEGORY = "IDCATEGORY";
public static final int NUM_COLUMN_IDCATEGORY = 0;
public static final String COLUMN_NAMECATEGORY = "NAMECATEGORY";
public static final int NUM_COLUMN_NAMECATEGORY = 1;
public DataBaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mContext = context;
initialize();
}
/**
* Initializes database. Creates database if doesn't exist.
*/
private void initialize() {
if (databaseExists()) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
int dbVersion = prefs.getInt(SP_KEY_DB_VER, 1);
if (DATABASE_VERSION != dbVersion) {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
if (!dbFile.delete()) {
Log.w("Failed", "Unable to update database");
}
}
}
if (!databaseExists()) {
createDatabase();
}
}
/**
* Returns true if database file exists, false otherwise.
* @return
*/
private boolean databaseExists() {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
return dbFile.exists();
}
/**
* Creates database by copying it from assets directory.
*/
private void createDatabase() {
String parentPath = mContext.getDatabasePath(DATABASE_NAME).getParent();
String path = mContext.getDatabasePath(DATABASE_NAME).getPath();
File file = new File(parentPath);
if (!file.exists()) {
if (!file.mkdir()) {
Log.w("FAILED", "Unable to create database directory");
return;
}
}
InputStream is = null;
OutputStream os = null;
try {
is = mContext.getAssets().open(DATABASE_NAME);
os = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.flush();
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(SP_KEY_DB_VER, DATABASE_VERSION);
editor.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
}
} // class