· 7 years ago · Oct 15, 2018, 05:20 AM
1public class DbHelper extends SQLiteOpenHelper{
2
3// private static final String TAG = DbHelper.class.getSimpleName();
4//declaration of database version
5private static final int DATABASE_VERSION = 1;
6//declare databsse
7private static final String DATABASE_NAME = "salesPortal.db";
8//declare table name
9private static final String TABLE_NAME = "tbl_user";
10//declareing table columns
11private static final String COLUMN_USER_ID ="user_id";
12private static final String COLUMN_NAME_NAME = "user_name";
13private static final String COLUMN_NAME_PASSWORD = "user_password";
14private static final String COLUMN_NAME_EMAIL = "user_email";
15
16 //===========login==================================
17//creating database tables
18private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_NAME + "("
19 + COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME_NAME + " TEXT,"
20 + COLUMN_NAME_PASSWORD + " TEXT," + COLUMN_NAME_EMAIL + " TEXT" + ")";
21//if availabele drop the schema
22private String DROP_USER_TABLE = "DROP TABLE IF EXISTS " +TABLE_NAME;
23private Users users;
24
25/**
26 *Constructor
27 *
28 *@param context
29 */
30public DbHelper(Context context){
31
32 super(context, DATABASE_NAME, null, DATABASE_VERSION);
33}
34
35@Override
36public void onCreate(SQLiteDatabase sqLiteDatabase) {
37 //create tb execution method
38 sqLiteDatabase.execSQL(CREATE_USER_TABLE);
39 sqLiteDatabase.execSQL(CREATE_MILEAGE_TABLE);
40 sqLiteDatabase.execSQL(CREATE_SHOPSLIST_TABLE);
41 sqLiteDatabase.execSQL(CREATE_STOCK_TABLE);
42 Log.e("DATABASE OPERATION","table created successfully");
43 }
44
45@Override
46public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
47 //drop table if availablr execution method
48 sqLiteDatabase.execSQL(DROP_USER_TABLE);
49 sqLiteDatabase.execSQL(DROP_MILEAGE_TABLE);
50 sqLiteDatabase.execSQL(DROP_SALES_TABLE);
51 String DROP_STOCK_TABLE = "DROP TABLE IF EXISTS " +tbName ;
52 //drop table if available exercuion method
53 sqLiteDatabase.execSQL(DROP_STOCK_TABLE);
54 //calling on creating method
55 onCreate(sqLiteDatabase);
56
57 }
58/**
59 * creating user records
60 *
61 * @param newUser
62 */
63public void addUser(Users newUser){
64 SQLiteDatabase db = this.getWritableDatabase();
65 ContentValues values = new ContentValues();
66 values.put(COLUMN_NAME_NAME,newUser.getName());
67 values.put(COLUMN_NAME_PASSWORD,newUser.getPassword());
68 values.put(COLUMN_NAME_EMAIL,newUser.getEmail());
69 db.insert(TABLE_NAME,null,values);
70 db.close();
71
72}
73
74/**
75 * fletch as alist user records
76 *
77 * @return list
78 */
79public List<Users> getUsers() {
80 // array of columns to fetch
81 String[] columns = {
82 COLUMN_USER_ID,
83 COLUMN_NAME_EMAIL,
84 COLUMN_NAME_NAME,
85 COLUMN_NAME_PASSWORD
86 };
87 // sorting orders
88 String sortOrder =
89 COLUMN_NAME_NAME + " ASC";
90 List<Users> userList = new ArrayList<Users>();
91
92 SQLiteDatabase db = this.getReadableDatabase();
93
94 // query the user table
95 /**
96 * Here query function is used to fetch records from user table this function works like we use sql query.
97 * SQL query equivalent to this query function is
98 * SELECT user_id,user_name,user_email,user_password FROM user ORDER BY user_name;
99 */
100 Cursor cursor = db.query(TABLE_NAME, //Table to query
101 columns, //columns to return
102 null, //columns for the WHERE clause
103 null, //The values for the WHERE clause
104 null, //group the rows
105 null, //filter by row groups
106 sortOrder); //The sort order
107
108
109 // Traversing through all rows and adding to list
110 if (cursor.moveToFirst()) {
111 do {
112 Users user = new Users();
113 user.setUserId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(COLUMN_USER_ID))));
114 user.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NAME)));
115 user.setEmail(cursor.getString(cursor.getColumnIndex(COLUMN_NAME_EMAIL)));
116 user.setPassword(cursor.getString(cursor.getColumnIndex(COLUMN_NAME_PASSWORD)));
117 // Adding user record to list
118 userList.add(user);
119 } while (cursor.moveToNext());
120 }
121 cursor.close();
122 db.close();
123
124 // return user list
125 return userList;
126}
127/**
128 * This method to update user record
129 *
130 * @param users
131 */
132public void updateUser(Users users){
133 SQLiteDatabase db = this.getWritableDatabase();
134 ContentValues values = new ContentValues();
135 values.put(COLUMN_NAME_NAME,users.getName());
136 values.put(COLUMN_NAME_PASSWORD,users.getPassword());
137 values.put(COLUMN_NAME_EMAIL,users.getEmail());
138 db.update(TABLE_NAME,values,COLUMN_USER_ID + "=?"
139 ,new String[]{String.valueOf(users.getUserId())});
140 db.close();
141}
142/**
143 * This method is to delete user record
144 *
145 * @param user
146 */
147public boolean deleteUser(Users user){
148 SQLiteDatabase db = this.getWritableDatabase();
149 db.delete(TABLE_NAME,COLUMN_USER_ID + "=?",
150 new String[]{String.valueOf(user.getUserId())});
151 db.close();
152 return true;
153}
154
155/**
156 * This method to check user exist or not
157 *
158 * @param email
159 * @param password
160 * @return true/false
161 */
162
163public Users checkUser(String email,String password){
164 Users users =null;
165 try {
166 SQLiteDatabase db = getReadableDatabase();
167 Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE user_email = ? AND user_password = ?" ,new String[]{email,password} );
168 if (cursor.moveToFirst()){
169 users = new Users();
170 users.setUserId(cursor.getInt(0));
171 users.setName(cursor.getString(1));
172 users.setPassword(cursor.getString(2));
173 users.setEmail(cursor.getString(3));
174 }
175 }catch (Exception e){
176 users=null;
177 }
178 return users;
179
180}
181
182public boolean checkUser(String email) {
183
184 // array of columns to fetch
185 String[] columns = {
186 COLUMN_USER_ID
187 };
188 SQLiteDatabase db = this.getReadableDatabase();
189
190 // selection criteria
191 String selection = COLUMN_NAME_EMAIL + " = ?";
192
193 // selection argument
194 String[] selectionArgs = {email};
195
196 // query user table with condition
197 /**
198 *
199 */
200
201 Cursor cursor = db.query(TABLE_NAME,columns,selection, selectionArgs,null,null,null);
202 int cursorCount = cursor.getCount();
203 cursor.close();
204 db.close();
205
206 if (cursorCount > 0) {
207 return true;
208 }
209
210 return false;
211}
212
213public boolean checkWithOldPassword(String OldPassword) {
214
215 // array of columns to fetch
216 String[] columns = {
217 COLUMN_USER_ID
218 };
219 SQLiteDatabase db = this.getReadableDatabase();
220
221 // selection criteria
222 String selection = COLUMN_NAME_PASSWORD + " = ?";
223
224 // selection argument
225 String[] selectionArgs = {OldPassword};
226
227 // query user table with condition
228 /**
229 *
230 */
231
232 Cursor cursor = db.query(TABLE_NAME,columns,selection, selectionArgs,null,null,null);
233 int cursorCount = cursor.getCount();
234 cursor.close();
235 db.close();
236
237 if (cursorCount > 0) {
238 return true;
239 }
240
241 return false;
242}
243
244public class LoginActivity extends AppCompatActivity implements
245View.OnClickListener{
246private final AppCompatActivity activity = LoginActivity.this;
247private RelativeLayout relativeLayout;
248
249
250private TextInputLayout textInputLayoutEmail;
251private TextInputLayout textInputLayoutPassword;
252
253private TextInputEditText textInputEditTextEmail;
254private TextInputEditText textInputEditTextPassword;
255
256private AppCompatButton appCompatButtonLogin;
257private AppCompatTextView textViewLinkRegister;
258
259private Validation validations;
260private DbHelper dbHelper;
261private Users users;
262
263
264
265@Override
266protected void onCreate(Bundle savedInstanceState) {
267 super.onCreate(savedInstanceState);
268 setContentView(R.layout.activity_login);
269
270
271
272 initViews();
273 initListeners();
274 initObjects();
275
276
277}
278//intializing all objects that are used on application login
279private void initObjects() {
280 dbHelper = new DbHelper(activity);
281 validations = new Validation(activity);
282 users = new Users();
283
284}
285 //intializing all listerners
286private void initListeners() {
287 appCompatButtonLogin.setOnClickListener(this);
288 textViewLinkRegister.setOnClickListener(this);
289}
290
291//intializing all views on login
292private void initViews() {
293 relativeLayout = findViewById(R.id.relativeLayout);
294
295 textInputLayoutEmail = findViewById(R.id.textInputLayoutEmail);
296 textInputLayoutPassword = findViewById(R.id.textInputLayoutPassword);
297
298 textInputEditTextPassword = findViewById(R.id.textInputEditTextPassword);
299 textInputEditTextEmail = findViewById(R.id.textInputEditTextEmail);
300
301 appCompatButtonLogin = findViewById(R.id.appCompatButtonLogin);
302 textViewLinkRegister = findViewById(R.id.textViewLinkRegister);
303
304
305}
306
307/**
308 * implemetation of listerners of all views
309 *
310 * @param view
311 */
312@Override
313public void onClick(View view) {
314 switch (view.getId()){
315 case R.id.appCompatButtonLogin : verifyFromSQLite();
316 break;
317 case R.id.textViewLinkRegister :Intent intentReg = new Intent(getApplicationContext(),RegisterActivity.class);
318 startActivity(intentReg);
319 break;
320 }
321}
322
323/**
324 * verify all input textfields and verify credentials
325 */
326public Boolean verifyFromSQLite() {
327 if(!validations.isInputEditTextFilled(textInputEditTextEmail,textInputLayoutEmail,getString(R.string.error_message_email))){
328 return false;
329 }
330 if(!validations.isTextEmailEmpty(textInputEditTextEmail,textInputLayoutEmail,getString(R.string.error_message_email))){
331 return false;
332 }
333 if ((!validations.isInputEditTextFilled(textInputEditTextPassword,textInputLayoutPassword,getString(R.string.error_message_password)))){
334 return false;
335 }
336 Users users = dbHelper.checkUser(textInputEditTextEmail.getText().toString().trim(),textInputEditTextPassword.getText().toString().trim());
337 // if (dbHelper.checkUser(textInputEditTextEmail.getText().toString().trim()
338 //, textInputEditTextPassword.getText().toString().trim())) {
339 if(users ==null){
340 //snack bar to show success message that record is wrong
341 Snackbar.make(relativeLayout,getString(R.string.error_valid_email_password),Snackbar.LENGTH_LONG).show();
342 }
343 else{
344 Intent accintent = new Intent(activity,MainMenuActivity.class);
345 accintent.putExtra("EMAIL",textInputEditTextEmail.getText().toString().trim());
346 emptyInputTextFields();
347 startActivity(accintent);
348 finish();
349 return true;
350
351
352 }
353 return true;
354}
355
356
357private void emptyInputTextFields() {
358 textInputEditTextEmail.setText(null);
359 textInputEditTextPassword.setText(null);
360
361}
362
363public class UserProfileActivity extends AppCompatActivity implements View.OnClickListener {
364private final AppCompatActivity activity = UserProfileActivity.this;
365private RelativeLayout relativeLayout;
366private TextInputLayout textInputLayoutNameP;
367private TextInputLayout textInputLayoutOldPass;
368private TextInputLayout textInputLayoutNewPasswordP;
369private TextInputLayout textInputLayoutConfirmPassword;
370
371private TextInputEditText textInputEditTextNameP;
372private TextInputEditText textInputEditTextOldPass;
373private TextInputEditText textInputEditTextNewPasswordP;
374private TextInputEditText textInputEditTextConfirmNewPassword;
375
376private Validation validation;
377private DbHelper dbHelper;
378private Users users;
379
380private AppCompatButton appCompatButtonUPDATE,appCompatButtonDELETE;
381
382@Override
383protected void onCreate(Bundle savedInstanceState) {
384 super.onCreate(savedInstanceState);
385 setContentView(R.layout.activity_user_profile);
386
387 initViews();
388 initListeners();
389 initObjects();
390 loadData();
391
392}
393
394private void initViews() {
395 relativeLayout = findViewById(R.id.relativeLayout);
396 textInputLayoutNameP = findViewById(R.id.textInputLayoutNameP);
397 textInputLayoutOldPass = findViewById(R.id.textInputLayoutOldPass);
398 textInputLayoutNewPasswordP = findViewById(R.id.textInputLayoutNewPasswordP);
399 textInputLayoutConfirmPassword = findViewById(R.id.textInputLayoutConfirmPassword);
400
401 textInputEditTextNameP = findViewById(R.id.textInputEditTextNameP);
402 textInputEditTextNewPasswordP = findViewById(R.id.textInputEditTextNewPasswordP);
403 textInputEditTextOldPass = findViewById(R.id.textInputEditTextOldPass);
404 textInputEditTextConfirmNewPassword = findViewById(R.id.textInputEditTextConfirmPassword);
405
406 appCompatButtonDELETE = findViewById(R.id.appCompatButtonDELETE);
407 appCompatButtonUPDATE = findViewById(R.id.appCompatButtonUPDATE);
408}
409
410private void initListeners() {
411 appCompatButtonDELETE.setOnClickListener(this);
412 appCompatButtonUPDATE.setOnClickListener(this);
413}
414
415private void initObjects() {
416 dbHelper = new DbHelper(activity);
417 validation = new Validation(activity);
418 users = new Users();
419}
420
421@Override
422public void onClick(View v) {
423 switch (v.getId()){
424 case R.id.appCompatButtonUPDATE : updateMethod();
425 break;
426 case R.id.appCompatButtonDELETE : deleteMethod();
427 //Intent intent =new Intent(getApplicationContext(),LoginActivity.class);
428 //startActivity(intent);
429 // break;
430 }
431
432
433}
434
435
436
437private void loadData(){
438 Intent intent = getIntent();
439 users = (Users) intent.getSerializableExtra("user");
440 textInputEditTextNameP.setText(users.getName());
441
442}
443
444private boolean updateMethod(){
445 if(!validation.isInputEditTextFilled(textInputEditTextNameP,textInputLayoutNameP,getString(R.string.error_message_email))){
446 return false;
447 }
448 if(!validation.isTextFiledsMatches(textInputEditTextNewPasswordP,textInputEditTextConfirmNewPassword,textInputLayoutConfirmPassword,getString(R.string.error_password_match))){
449 return false;
450 }
451 if(dbHelper.checkWithOldPassword(textInputEditTextOldPass.getText().toString().trim())){
452
453 users.setName(textInputEditTextNameP.getText().toString().trim());
454 //users.setEmail(textInputEditTextEmail.getText().toString().trim());
455 users.setPassword(textInputEditTextNewPasswordP.getText().toString().trim());
456 dbHelper.updateUser(users);
457 Snackbar.make(relativeLayout, getString(R.string.profile_update), Snackbar.LENGTH_LONG).show();
458 return true;
459 }
460 else
461 {
462 Snackbar.make(relativeLayout, getString(R.string.error_oldPassword), Snackbar.LENGTH_LONG).show();
463 return false;
464 }
465}
466
467private void deleteMethod() {
468 dbHelper.deleteUser(users);
469 Snackbar.make(relativeLayout,"USER DELETED", Snackbar.LENGTH_LONG).show();
470}
471
472public class Users implements Serializable {
473private static int userId;
474private static String name;
475private static String password;
476private static String email;