· 6 years ago · Dec 16, 2019, 04:06 AM
1public class UserSQLite extends SQLiteOpenHelper implements Userable {
2 Context context;
3 //database file name(db)
4 final static String DB_NAME ="Users.db";
5 //our data base in the sql
6 SQLiteDatabase db;
7 String username,userpass;
8 private Set<Map<String,String>> usersData=new HashSet<>();
9
10 public UserSQLite(@Nullable Context context, String username, String userpass) {
11 super(context,DB_NAME,null,1);
12 this.username=username;
13 this.userpass=userpass;
14 this.context=context;
15 db=this.getWritableDatabase();
16 }
17
18 @Override
19 public void onCreate(SQLiteDatabase db) {
20 String sqlStatment= "CREATE TABLE IF NOT EXISTS users ";
21 sqlStatment+="(id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE, userpass TEXT)";
22 db.execSQL(sqlStatment);
23 }
24
25 @Override
26 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}
27
28 @Override
29 public void userExists(String userName) throws UserExsitsException {
30 //db.execSQL("SELECT username FROM users WHERE EXISTS usename='"+userName+"'");
31 getCurrentdata();
32 if(!usersData.contains(userName))
33 throw new UserExsitsException();
34 }
35
36 @Override
37 public void checkUser(String userName, String userPass) throws UserCredException {
38 Map<String,String>ud=new HashMap<>();
39 ud.put(userName,userPass);
40 if(!usersData.contains(ud))
41 throw new UserCredException();
42
43 }
44
45 @Override
46 public void registerUser(String userName, String userPass) throws UserException {
47 ContentValues contentValues= new ContentValues();
48 //insert data by key and value
49 contentValues.put("username",userName);
50 contentValues.put("userpass",userPass);
51 ///put our values in the table and getting result of row id
52 //if the result is -1 we got an error
53 long res=db.insert("users",null,contentValues);
54 if(res<0)
55 throw new UserException();
56 }
57
58
59 @Override
60 public void deleteUser(String userName) throws UserException {
61 db.execSQL("DELETE FROM users WHERE username='"+userName+"'");
62 //delete the names that equals to String username u sent
63
64 //db.execSQL("DELETE FROM users WHERE userName LIKE'"+userName+"%'");
65 //delete all strings that contain and start with the String username
66
67 //db.execSQL("DELETE FROM users WHERE userName LIKE'%"+userName+"%'");
68 //delete all strings that contain with the String username
69 }
70
71 @Override
72 public void changeInfo(String userName, String newPass, UserInfo userInfo) throws UserException {
73
74 }
75
76 @Override
77 public String recoverPass(String userName, UserInfo userInfo) throws UserException {
78 return null;
79 }
80
81 private void getCurrentdata(){
82 Cursor res= db.rawQuery("SELECT * FROM users",null);
83 if(res.move(usersData.size())){
84 do{
85 Map<String,String>singleUserData=new HashMap<>();
86 singleUserData.put(res.getString(res.getColumnIndex("username")),res.getString(res.getColumnIndex("userpass")));
87 usersData.add(singleUserData);
88 }while (res.moveToNext());
89 }
90 }