From 08cbd352b3192f606f1ab6d317b539b007395d04 Mon Sep 17 00:00:00 2001 From: AhmedmostafaElabdli1 Date: Sun, 10 Dec 2023 14:57:12 +0200 Subject: [PATCH 01/11] Usertable,login,signup --- .../java/com/example/myapp_1/DB/DBHelper.java | 37 +++++++++ .../com/example/myapp_1/DB/DBOperations.java | 78 +++++++++++++++++++ .../com/example/myapp_1/LoginActivity.java | 24 ++++-- .../com/example/myapp_1/SigninActivity.java | 38 +++++---- local.properties | 4 +- 5 files changed, 159 insertions(+), 22 deletions(-) create mode 100644 app/src/main/java/com/example/myapp_1/DB/DBHelper.java create mode 100644 app/src/main/java/com/example/myapp_1/DB/DBOperations.java diff --git a/app/src/main/java/com/example/myapp_1/DB/DBHelper.java b/app/src/main/java/com/example/myapp_1/DB/DBHelper.java new file mode 100644 index 0000000..d4ab5d0 --- /dev/null +++ b/app/src/main/java/com/example/myapp_1/DB/DBHelper.java @@ -0,0 +1,37 @@ +package com.example.myapp_1.DB; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import androidx.annotation.Nullable; + +public class DBHelper extends SQLiteOpenHelper { + private static final String DATABASE_NAME = "WITL.db"; + private static final int DATABASE_VERSION = 1; + private static final String CREATE_USERS_TABLE = + "CREATE TABLE users (" + + "U_ID INTEGER PRIMARY KEY AUTOINCREMENT," + + "UserName TEXT NOT NULL," + + "phone TEXT CHECK(length(phone) = 11)," + + "U_email TEXT NOT NULL UNIQUE," + + "U_password TEXT NOT NULL);"; + + public DBHelper(Context context) { + super(context, DATABASE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + // Create your tables here + db.execSQL(CREATE_USERS_TABLE); + + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // Handle database upgrades if needed + db.execSQL("DROP TABLE IF EXISTS users"); + onCreate(db); + + } +} diff --git a/app/src/main/java/com/example/myapp_1/DB/DBOperations.java b/app/src/main/java/com/example/myapp_1/DB/DBOperations.java new file mode 100644 index 0000000..a2318ab --- /dev/null +++ b/app/src/main/java/com/example/myapp_1/DB/DBOperations.java @@ -0,0 +1,78 @@ +package com.example.myapp_1.DB; + + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import androidx.annotation.Nullable; + +public class DBOperations { + + private DBHelper dbHelper; + + public DBOperations(Context context) { + dbHelper = new DBHelper(context); + } + + // Insert user data into the users table + public long insertUser(String UserName, String phone,String email, String password) { + try { + SQLiteDatabase db = dbHelper.getWritableDatabase(); + + ContentValues values = new ContentValues(); + values.put("UserName", UserName); + values.put("phone", phone); + values.put("U_email", email); + values.put("U_password", password); + + long newRowId = db.insert("users", null, values); + + return newRowId; + } + catch (Exception e){ + return 0; + } + + } + public boolean checkLoginCredentials(String UserName, String password) { + SQLiteDatabase db = dbHelper.getReadableDatabase(); + + String[] columns = {"U_ID"}; + String selection = "UserName=? AND U_password=?"; + String[] selectionArgs = {UserName, password}; + + Cursor cursor = db.query("users", columns, selection, selectionArgs, null, null, null); + + boolean isCredentialsValid = cursor.moveToFirst(); + cursor.close(); + + return isCredentialsValid; + } + + // Add other methods as needed +} + + // Retrieve all users from the users table +// public Cursor getAllUsers() { +// SQLiteDatabase db = dbHelper.getReadableDatabase(); +// +// String[] columns = {"U_ID", "first_name", "last_name", "U_email", "phone", "U_password"}; +// return db.query("users", columns, null, null, null, null, null); +// } + + // Delete a user from the users table based on their email +// public int deleteUser(String email) { +// SQLiteDatabase db = dbHelper.getWritableDatabase(); +// +// String selection = "U_email=?"; +// String[] selectionArgs = {email}; +// +// int deletedRows = db.delete("users", selection, selectionArgs); +// db.close(); +// +// return deletedRows; +// } + + diff --git a/app/src/main/java/com/example/myapp_1/LoginActivity.java b/app/src/main/java/com/example/myapp_1/LoginActivity.java index f297724..fff44fc 100644 --- a/app/src/main/java/com/example/myapp_1/LoginActivity.java +++ b/app/src/main/java/com/example/myapp_1/LoginActivity.java @@ -1,6 +1,5 @@ package com.example.myapp_1; -import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -11,6 +10,8 @@ import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import com.example.myapp_1.DB.DBOperations; + public class LoginActivity extends AppCompatActivity { EditText username; @@ -18,7 +19,7 @@ public class LoginActivity extends AppCompatActivity { TextView forgetpassword; Button login; Button signup; - + DBOperations dbOperations = new DBOperations(this); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -54,11 +55,20 @@ public class LoginActivity extends AppCompatActivity { if(username_data.isEmpty() || password_data.isEmpty()){ Toast.makeText(LoginActivity.this,"Please fill your data!", Toast.LENGTH_LONG).show(); }else{ - // Check for user input if in database - // if found go to home page - // else keep in same page bitch - Intent newScreen = new Intent(getApplicationContext(), HomeActivity.class); - startActivity(newScreen); + if (dbOperations.checkLoginCredentials(username_data, password_data)) { + // Login successful + // Proceed to the next screen or perform other actions + Toast.makeText(LoginActivity.this,"Welcome", Toast.LENGTH_LONG).show(); + Intent newScreen = new Intent(getApplicationContext(), HomeActivity.class); + startActivity(newScreen); + + } else { + // Login failed + + Toast.makeText(LoginActivity.this,"Invalid Iformation", Toast.LENGTH_LONG).show(); + + } + } } diff --git a/app/src/main/java/com/example/myapp_1/SigninActivity.java b/app/src/main/java/com/example/myapp_1/SigninActivity.java index 87d1d7b..bf7f416 100644 --- a/app/src/main/java/com/example/myapp_1/SigninActivity.java +++ b/app/src/main/java/com/example/myapp_1/SigninActivity.java @@ -1,14 +1,16 @@ package com.example.myapp_1; -import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; -import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AppCompatActivity; + +import com.example.myapp_1.DB.DBOperations; + public class SigninActivity extends AppCompatActivity { EditText username; @@ -18,6 +20,7 @@ public class SigninActivity extends AppCompatActivity { Button register; + DBOperations dbOperations = new DBOperations(this); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -32,37 +35,46 @@ public class SigninActivity extends AppCompatActivity { register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - String username_data = username.getText().toString(); - String phonenumber_data = username.getText().toString(); - String email_data = username.getText().toString(); - String password_data = username.getText().toString(); + String phonenumber_data = phonenumber.getText().toString(); // Corrected here + String email_data = email.getText().toString(); // Corrected here + String password_data = password.getText().toString(); // Corrected here boolean checked = false; - //Add the user to the database - //betengano base - String [] data = new String[4]; + + String[] data = new String[4]; data[0] = username_data; data[1] = phonenumber_data; data[2] = email_data; data[3] = password_data; - for(int i = 0; i < data.length; i++){ - if(data[i].isEmpty()){ + + for (int i = 0; i < data.length; i++) { + if (data[i].isEmpty()) { Toast.makeText(SigninActivity.this, "Please fill your data!", Toast.LENGTH_LONG).show(); checked = false; break; - }else{ + } else { checked = true; } } - if(checked == true){ + if (checked) { + long newRowId = dbOperations.insertUser(data[0], data[1], data[2], data[3]); + + if (newRowId != -1) { + Toast.makeText(SigninActivity.this, "SignUp Success", Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(SigninActivity.this, "SignUp failed" + newRowId, Toast.LENGTH_LONG).show(); + } Intent newScreen = new Intent(getApplicationContext(), LoginActivity.class); startActivity(newScreen); } } }); + } } + + diff --git a/local.properties b/local.properties index 0ee63e8..0fc1191 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Wed Dec 06 17:47:01 EET 2023 -sdk.dir=C\:\\Users\\Beast\\AppData\\Local\\Android\\Sdk +#Sun Dec 10 14:55:12 EET 2023 +sdk.dir=C\:\\Users\\ahmed\\AppData\\Local\\Android\\Sdk From 2d785c884e452fb0fe3b4840d5ccb1b2940d1da1 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 22:19:44 +0200 Subject: [PATCH 02/11] added direction, removed fill_status --- db_related/serber_sql.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 47fd09c..302b99b 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -54,12 +54,12 @@ CREATE TABLE prefers(pref_UID SERIAL, -- time_of_day => Time object, nanosecond accuracy, y'all handle it idk -- week_day => varchar as {Mon, Tue, Wed}, Could probs just encode with 0 -> 6 -- tram_line => int ranging 1 -> 4 --- fill_status => Boolean, 1 full, 0 not as full +-- direction => Boolean, 1 full, 0 not as full CREATE TABLE arrival(time_of_day TIME, week_day INTEGER, tram_line INTEGER, - fill_status BOOLEAN + direction BOOLEAN CONSTRAINT ck PRIMARY KEY (week_day,tram_line) CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6) CONSTRAINT valid_line CHECK (tram_line >= 1 AND tram_line <= 4) - ); \ No newline at end of file + ); From 7aefb8442bd8d0aa82553c25c9105d79f99a6eb1 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 22:24:56 +0200 Subject: [PATCH 03/11] Mark didn't read the docs --- db_related/serber_sql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 302b99b..bc4e1e9 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -59,7 +59,7 @@ CREATE TABLE arrival(time_of_day TIME, week_day INTEGER, tram_line INTEGER, direction BOOLEAN - CONSTRAINT ck PRIMARY KEY (week_day,tram_line) + PRIMARY KEY (week_day,tram_line) CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6) CONSTRAINT valid_line CHECK (tram_line >= 1 AND tram_line <= 4) ); From 5aa5e45f57872be4153615fdb29bc3a65881bd85 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 22:25:42 +0200 Subject: [PATCH 04/11] no space after KEY() --- db_related/serber_sql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index bc4e1e9..45cf77f 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -59,7 +59,7 @@ CREATE TABLE arrival(time_of_day TIME, week_day INTEGER, tram_line INTEGER, direction BOOLEAN - PRIMARY KEY (week_day,tram_line) + PRIMARY KEY(week_day,tram_line) CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6) CONSTRAINT valid_line CHECK (tram_line >= 1 AND tram_line <= 4) ); From a6465d7b27984d2dbc3c69b24ca5d6a0d2d4c09b Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 22:26:48 +0200 Subject: [PATCH 05/11] silly syntax errors --- db_related/serber_sql.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 45cf77f..5b55c97 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -58,8 +58,8 @@ CREATE TABLE prefers(pref_UID SERIAL, CREATE TABLE arrival(time_of_day TIME, week_day INTEGER, tram_line INTEGER, - direction BOOLEAN - PRIMARY KEY(week_day,tram_line) - CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6) + direction BOOLEAN, + PRIMARY KEY(week_day,tram_line), + CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6), CONSTRAINT valid_line CHECK (tram_line >= 1 AND tram_line <= 4) ); From 8b933c9ed9bf3ef02cd0c5307371779a4ca576ae Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 22:27:46 +0200 Subject: [PATCH 06/11] NAMING consistency --- db_related/serber_sql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 5b55c97..93daf3c 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -55,7 +55,7 @@ CREATE TABLE prefers(pref_UID SERIAL, -- week_day => varchar as {Mon, Tue, Wed}, Could probs just encode with 0 -> 6 -- tram_line => int ranging 1 -> 4 -- direction => Boolean, 1 full, 0 not as full -CREATE TABLE arrival(time_of_day TIME, +CREATE TABLE arrivals(time_of_day TIME, week_day INTEGER, tram_line INTEGER, direction BOOLEAN, From 5f8447498788f59517f2ac44aaaee25c89716f0a Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 23:02:05 +0200 Subject: [PATCH 07/11] the old primary key sucked --- db_related/serber_sql.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 93daf3c..56001a7 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -55,7 +55,9 @@ CREATE TABLE prefers(pref_UID SERIAL, -- week_day => varchar as {Mon, Tue, Wed}, Could probs just encode with 0 -> 6 -- tram_line => int ranging 1 -> 4 -- direction => Boolean, 1 full, 0 not as full -CREATE TABLE arrivals(time_of_day TIME, +CREATE TABLE arrivals( + a_id INTEGER, + time_of_day TIME, week_day INTEGER, tram_line INTEGER, direction BOOLEAN, From 2df48a7d49e1dd2f3dc2c3ce4ed9cc5f22d47d2d Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 23:02:13 +0200 Subject: [PATCH 08/11] naming consistency pls --- db_related/serber_sql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 56001a7..ba67179 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -4,7 +4,7 @@ -- last_name => User's Last Name -- U_email => User's Registered Email -- U_password => User's Password -CREATE TABLE users(U_ID SERIAL PRIMARY KEY, +CREATE TABLE users(u_id SERIAL PRIMARY KEY, first_name varchar(255) NOT NULL, last_name varchar(255) NOT NULL, U_email varchar(255) NOT NULL UNIQUE, From 060c1e23ae05a7f15e0f1980bc0a9942dabc7995 Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 23:02:26 +0200 Subject: [PATCH 09/11] new key who this --- db_related/serber_sql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index ba67179..70488a9 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -56,7 +56,7 @@ CREATE TABLE prefers(pref_UID SERIAL, -- tram_line => int ranging 1 -> 4 -- direction => Boolean, 1 full, 0 not as full CREATE TABLE arrivals( - a_id INTEGER, + a_id SERIAL PRIMARY KEY, time_of_day TIME, week_day INTEGER, tram_line INTEGER, From 8ec4fc861b08ce4192894fb7daded2d10d50d4ff Mon Sep 17 00:00:00 2001 From: LinlyBoi Date: Sun, 17 Dec 2023 23:03:30 +0200 Subject: [PATCH 10/11] Key duplicates (bad) --- db_related/serber_sql.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/db_related/serber_sql.sql b/db_related/serber_sql.sql index 70488a9..114706f 100644 --- a/db_related/serber_sql.sql +++ b/db_related/serber_sql.sql @@ -61,7 +61,6 @@ CREATE TABLE arrivals( week_day INTEGER, tram_line INTEGER, direction BOOLEAN, - PRIMARY KEY(week_day,tram_line), CONSTRAINT in_week CHECK (week_day >= 0 AND week_day <= 6), CONSTRAINT valid_line CHECK (tram_line >= 1 AND tram_line <= 4) ); From 7ae93e0d60f945c6c2f134b5a6de54b07beef6bd Mon Sep 17 00:00:00 2001 From: linlyboi Date: Wed, 20 Dec 2023 09:53:14 +0200 Subject: [PATCH 11/11] LOCAL PROPERTIES SHOULD BE IGNORED --- local.properties | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 local.properties diff --git a/local.properties b/local.properties deleted file mode 100644 index 0fc1191..0000000 --- a/local.properties +++ /dev/null @@ -1,8 +0,0 @@ -## This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. -# -# Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -#Sun Dec 10 14:55:12 EET 2023 -sdk.dir=C\:\\Users\\ahmed\\AppData\\Local\\Android\\Sdk