· 8 years ago · Dec 06, 2017, 11:26 PM
1package gymhelp.feup.org.pushupfit;
2
3import android.content.ContentValues;
4import android.content.Context;
5import android.content.Intent;
6import android.database.Cursor;
7import android.database.sqlite.SQLiteDatabase;
8import android.database.sqlite.SQLiteOpenHelper;
9import android.util.Log;
10
11import java.util.ArrayList;
12import java.util.List;
13
14/**
15 * Created by Paulo Maia on 18/11/2017.
16 */
17
18public class DatabaseHandler extends SQLiteOpenHelper {
19
20 // All Static variables
21 // Database Version
22 private static final int DATABASE_VERSION = 1;
23 public Boolean isLogin;
24
25 // Database Name
26 private static final String DATABASE_NAME = "userManager";
27
28 // Contacts table name
29 private static final String TABLE_CONTACTS = "users";
30 private static final String TABLE_ACTIVITY="activities";
31
32
33 // Contacts Table Columns names
34 private static final String USER_ID = "user_id";
35 private static final String NAME = "name";
36 private static final String PW = "password";
37 private static final String AGE = "age";
38 private static final String GENDER = "gender";
39 private static final String UP_NO = "up_number";
40 private static final String XP = "experience";
41
42 //Activities Table Column names
43 private static final String ACT_ID="activity_id";
44 private static final String ACT_NAME="activity_name";
45 private static final String ACT_DATE="activity_date";
46
47 private static final String CREATE_CONTACTS_TABLE="CREATE TABLE " + TABLE_CONTACTS + "("
48 + USER_ID + " INTEGER PRIMARY KEY," + NAME + " TEXT,"
49 + UP_NO + " TEXT," + PW + " TEXT," + XP + " INTEGER," + GENDER +" TEXT," + AGE +" AGE"+ ")";
50
51 private static final String CREATE_ACTIVITIES_TABLE= "CREATE TABLE " + TABLE_ACTIVITY + "("
52 + ACT_ID + " INTEGER PRIMARY KEY," + ACT_NAME + " TEXT," + ACT_DATE + " TEXT," + USER_ID + " INTEGER, FOREIGN KEY ("+USER_ID+") REFERENCES "+TABLE_CONTACTS+"("+TABLE_CONTACTS+") ON DELETE CASCADE" +")";
53
54 Context _context;
55
56 public DatabaseHandler(Context context) {
57 super(context, DATABASE_NAME, null, DATABASE_VERSION);
58 this._context=context;
59 }
60
61 // Creating Tables
62 @Override
63 public void onCreate(SQLiteDatabase db) {
64 db.execSQL(CREATE_CONTACTS_TABLE);
65 db.execSQL(CREATE_ACTIVITIES_TABLE);
66 }
67
68 // Upgrading database
69 @Override
70 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
71 // Drop older table if existed
72 db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
73 db.execSQL("DROP TABLE IF EXISTS " + TABLE_ACTIVITY);
74
75
76 // Create tables again
77 onCreate(db);
78 }
79// activity functions
80
81 //adding activity
82 public void addActivity(Phys_Activity activity){
83 SQLiteDatabase db=this.getWritableDatabase();
84
85 ContentValues values = new ContentValues();
86 values.put(ACT_NAME,activity.getName());
87 values.put(USER_ID, activity.getUser_id());
88 values.put(ACT_DATE, activity.getDate());
89
90 // Inserting Row
91 db.insert(TABLE_ACTIVITY, null, values);
92 db.close(); // Closing database connection
93
94 };
95
96
97 public Phys_Activity getActivity(int user_id) {
98 SQLiteDatabase db = this.getReadableDatabase();
99
100 Cursor cursor = db.query(TABLE_ACTIVITY, new String[] { ACT_ID, ACT_NAME, ACT_DATE, USER_ID
101 }, USER_ID + "=?",
102 new String[] { String.valueOf(user_id) }, null, null, null, null);
103 if (cursor != null)
104 cursor.moveToFirst();
105
106 Phys_Activity activity = new Phys_Activity(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2),
107 Integer.parseInt(cursor.getString(3)));
108
109 return activity;
110 }
111
112 public List<Phys_Activity> getAllActivities_userid(int user_id) {
113 List<Phys_Activity> actList = new ArrayList<Phys_Activity>();
114 SQLiteDatabase db = this.getReadableDatabase();
115
116
117 Cursor cursor = db.query(TABLE_ACTIVITY, new String[] { ACT_ID, ACT_NAME, ACT_DATE, USER_ID
118 }, USER_ID + "=?",
119 new String[] { String.valueOf(user_id) }, null, null, null, null);
120
121 // looping through all rows and adding to list
122 if (cursor.moveToFirst()) {
123 do {
124 Phys_Activity physicalAct = new Phys_Activity();
125 physicalAct.setAct_id(Integer.parseInt(cursor.getString(0)));
126 physicalAct.setName(cursor.getString(1));
127 physicalAct.setDate(cursor.getString(2));
128 physicalAct.setUser_id(Integer.parseInt(cursor.getString(3)));
129
130 // Adding activity to list
131 actList.add(physicalAct);
132 } while (cursor.moveToNext());
133 }
134
135 return actList;
136 }
137
138
139
140
141
142
143
144
145
146
147
148
149// user functions
150
151
152
153 //adding user
154
155 public void addUser(User user) {
156 SQLiteDatabase db = this.getWritableDatabase();
157
158 ContentValues values = new ContentValues();
159 values.put(NAME, user.getName()); // Contact Name
160 values.put(UP_NO, user.getupNumber()); // Contact Phone Number
161 values.put(PW, user.getPassword());
162 values.put(XP, user.getExperience());
163 values.put(GENDER, user.getGender());
164 values.put(AGE, user.getAge());
165
166 // Inserting Row
167 db.insert(TABLE_CONTACTS, null, values);
168 db.close(); // Closing database connection
169 }
170
171
172
173 // Updating single user
174 public int updateUser(User user) {
175 SQLiteDatabase db = this.getWritableDatabase();
176
177 ContentValues values = new ContentValues();
178 values.put(NAME, user.getName());
179 values.put(PW, user.getPassword());
180 values.put(UP_NO, user.getupNumber());
181 values.put(XP, user.getExperience());
182 values.put(GENDER, user.getGender());
183 values.put(AGE, user.getAge());
184
185 // updating row
186 return db.update(TABLE_CONTACTS, values, USER_ID + " = ?",
187 new String[] { String.valueOf(user.getId()) });
188 }
189
190 // Getting single contact
191 public User getUser(int id) {
192 SQLiteDatabase db = this.getReadableDatabase();
193
194 Cursor cursor = db.query(TABLE_CONTACTS, new String[] { USER_ID,
195 NAME, UP_NO, PW, XP, GENDER, AGE }, USER_ID + "=?",
196 new String[] { String.valueOf(id) }, null, null, null, null);
197 if (cursor != null)
198 cursor.moveToFirst();
199
200 User user = new User(Integer.parseInt(cursor.getString(0)),
201 cursor.getString(1), cursor.getString(2), cursor.getString(3), Integer.parseInt(cursor.getString(4)), cursor.getString(5), Integer.parseInt(cursor.getString(6)));
202 // return user
203 return user;
204 }
205
206 // Getting All Contacts
207 public List<User> getAllUsers() {
208 List<User> userList = new ArrayList<User>();
209 // Select All Query
210 String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
211
212 SQLiteDatabase db = this.getWritableDatabase();
213 Cursor cursor = db.rawQuery(selectQuery, null);
214
215 // looping through all rows and adding to list
216 if (cursor.moveToFirst()) {
217 do {
218 User user = new User();
219 user.setId(Integer.parseInt(cursor.getString(0)));
220 user.setName(cursor.getString(1));
221 user.setUpNumber(cursor.getString(2));
222 user.setPassword(cursor.getString(3));
223 user.setExperience(Integer.parseInt(cursor.getString(4)));
224 user.setGender(cursor.getString(5));
225 user.setAge(Integer.parseInt(cursor.getString(6)));
226
227 // Adding user to list
228 userList.add(user);
229 } while (cursor.moveToNext());
230 }
231
232 // return user list
233 return userList;
234 }
235
236 // Getting users Count
237 public int getUsersCount() {
238 String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
239 SQLiteDatabase db = this.getReadableDatabase();
240 Cursor cursor = db.rawQuery(countQuery, null);
241 cursor.close();
242
243 // return count
244 return cursor.getCount();
245 }
246
247
248 // Deleting single contact
249 public void deleteContact(User user) {
250 SQLiteDatabase db = this.getWritableDatabase();
251 db.delete(TABLE_CONTACTS, USER_ID + " = ?",
252 new String[] { String.valueOf(user.getId()) });
253 db.close();
254 }
255
256 // public User findLoggedUserInfo()
257 // {
258
259 // }
260
261 public void createLoginSession(){
262 // Storing login value as TRUE
263 isLogin = true;
264
265 }
266
267 public void checkLogin() {
268 // Check login status
269 if (isLogin!=null) {
270
271 // If the user is not logged in, redirect him to Login Activity
272 Intent i = new Intent(_context, LoginActivity.class);
273 // Closing all the Activities
274 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
275
276 // Add new Flag to start new Activity
277 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
278
279 // Staring Login Activity
280 _context.startActivity(i);
281 }
282 }
283
284 public void logoutUser(){
285 // Clearing all data from Shared Preferences
286 // editor.clear();
287 // editor.commit();
288
289 isLogin=false;
290
291 // After logout redirect user to Login Activity
292 Intent i = new Intent(_context, LoginActivity.class);
293 // Closing all the Activities
294 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
295
296 // Add new Flag to start new Activity
297 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
298
299 // Staring Login Activity
300 _context.startActivity(i);
301 }
302
303
304}