-
Notifications
You must be signed in to change notification settings - Fork 0
/
FootyLinksSQLLiteHelper.java
145 lines (117 loc) · 4.49 KB
/
FootyLinksSQLLiteHelper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package mhook.FootyLinks.Data;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
public class FootyLinksSQLLiteHelper extends SQLiteOpenHelper {
public static class Tables {
public static final String Club = "Club";
public static final String Player = "Player";
public static final String PlayerClub = "PlayerClub";
public static final String Score = "Score";
}
public static class ClubColumns {
public static final String _id = "_id";
public static final String Name = "Name";
public static final String CompactName = "CompactName";
}
public static class PlayerClubColumns {
public static final String Club_id = "Club_id";
public static final String Player_id = "Player_id";
}
public static class PlayerColumns {
public static final String Name = "Name";
public static final String CurrentClub_id = "CurrentClub_id";
public static final String _id = "_id";
public static final String SquadNumber = "SquadNumber";
public static final String Age = "Age";
}
public static class ScoreColumns {
public static final String HighScore = "HighScore";
public static final String _id = "_id";
}
private Context myContext;
private static final String DATABASE_FOLDER = "/data/data/mhook.FootyLinks/databases/";
private static final String DATABASE_NAME = "footylinks.db";
private static final int DATABASE_VERSION = 3;
FootyLinksSQLLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.myContext = context;
if(databaseExists())
{
//do nothing - database already exist
return;
}
//Creates an empty db at the default system path, which we can overwrite with our own
this.getReadableDatabase();
try
{
copyDataBase();
}
catch (IOException e)
{
throw new Error("Error copying database");
}
}
public SQLiteDatabase openDatabase() throws SQLException {
//Open the database
String myPath = DATABASE_FOLDER + DATABASE_NAME;
return SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
//Check if the database already exists to avoid re-copying the file each time you open the application.
private boolean databaseExists(){
SQLiteDatabase sqlLiteDatabase = null;
try
{
sqlLiteDatabase = openDatabase();
}
catch(SQLiteException e){
//database does't exist yet.
}
if(sqlLiteDatabase != null)
{
sqlLiteDatabase.close();
}
return sqlLiteDatabase != null ? true : false;
}
/** Copy the database in the local assets-folder to the just created empty database in the
system folder, from where it can be accessed and handled. */
private void copyDataBase() throws IOException{
//Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
// Path to the just created empty db
String outFileName = DATABASE_FOLDER + DATABASE_NAME;
//Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
//Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
@Override
public void onCreate(SQLiteDatabase db)
{
/*
String createScoreTable =
"create table "+ Tables.Score +" (_id integer primary key autoincrement, "
+ ScoreColumns.HighScore +" integer not null);";
db.execSQL(createScoreTable);
ContentValues initialValues = new ContentValues();
initialValues.put(ScoreColumns.HighScore, 0);
db.insert(Tables.Score, null, initialValues);
*/
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}