MainActivity.java
package com.example.registrationpage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
private EditText loginUserName, loginPass;
String currentUserName, currentUserPass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginUserName = (EditText) findViewById(R.id.user_name);
loginPass = (EditText) findViewById(R.id.user_password);
}
public void newUser(View view) {
Intent intent = new Intent(this, RegisterActivity.class);
startActivity(intent);
}
private void dataExtract() {
String user_name = loginUserName.getText().toString().trim();
String user_pass = loginPass.getText().toString().trim();
DataDbHelper mDbHelper = new DataDbHelper(this);
SQLiteDatabase db = mDbHelper.getReadableDatabase();
String[] projection = {
DataContract.DataEntry.COLUMN_EMAIL,
DataContract.DataEntry.COLUMN_PASSWORD };
Cursor cursor = db.query(DataContract.DataEntry.TABLE_NAME,
projection,
null,
null,
null,
null,
null,
null);
try {
int userNameIndex = cursor.getColumnIndex(DataContract.DataEntry.COLUMN_EMAIL);
int userPassIndex = cursor.getColumnIndex(DataContract.DataEntry.COLUMN_PASSWORD);
while (cursor.moveToNext()) {
currentUserName = cursor.getString(userNameIndex);
currentUserPass = cursor.getString(userPassIndex);
if (currentUserName.equalsIgnoreCase(user_name) &&
currentUserPass.equalsIgnoreCase(user_pass)){
Toast.makeText(this, "LogIn Successful", Toast.LENGTH_SHORT).show();
break;
}
if (cursor.isLast()) {
Toast.makeText(this, "user name and password are incorrect.",
Toast.LENGTH_SHORT).show();
}
}
} finally {
cursor.close();
}
}
public void loginuser(View view) {
if (TextUtils.isEmpty(loginUserName.getText())) {
loginUserName.setError("This field is not empty");
}
if (TextUtils.isEmpty(loginPass.getText())) {
loginPass.setError("This field is not empty");
} else {
dataExtract();
}
}
}
RegisterActivity.java
package com.example.registrationpage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Pattern;
public class RegisterActivity extends AppCompatActivity {
private EditText mName, mEmail, mPassword, cPassword;
private String passwordString, cpassString, nameString, emailString;
private String namePattern = "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$";
private String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
private static final Pattern passwordPattern = Pattern.compile("^" +
"(?=.*[0-9])" + //at least one digit
"(?=.*[A-Z])" + //at least one upper case latter
"(?=.*[a-z])" + //at least one lower case latter
"(?=.*[a-zA-Z])" + //any latter
"(?=.*[@#$%^&+=])" + //at least one special character
"(?=\\S+$)" + //no white space
".{8,}" + //at least 8 character
"$");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mName = (EditText) findViewById(R.id.name);
mEmail = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.password);
cPassword = (EditText) findViewById(R.id.cPassword);
}
private void insertData() {
DataDbHelper mDbHelper = new DataDbHelper(this);
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DataContract.DataEntry.COLUMN_NAME, nameString);
values.put(DataContract.DataEntry.COLUMN_EMAIL, emailString);
values.put(DataContract.DataEntry.COLUMN_PASSWORD, passwordString);
long newRowID = db.insert(DataContract.DataEntry.TABLE_NAME, null, values);
if (newRowID == -1) {
Toast.makeText(this, "Error with saving pet", Toast.LENGTH_SHORT).show();
} else {
// Otherwise, the insertion was successful and we can display a toast with the row ID.
Toast.makeText(this, "Registration Successfull", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
public void regButton(View view) {
nameString = mName.getText().toString().trim();
emailString = mEmail.getText().toString().trim();
passwordString = mPassword.getText().toString().trim();
cpassString = cPassword.getText().toString().trim();
if (TextUtils.isEmpty(mName.getText())) {
mName.setError("This field is not empty!");
} else if (!nameString.matches(namePattern)) {
mName.setError("Enter valid full name!");
} else if (!emailString.matches(emailPattern)) {
mEmail.setError("Enter valid Email address!");
} else if (TextUtils.isEmpty(mEmail.getText())) {
mEmail.setError("This field is not empty!");
} else if (TextUtils.isEmpty(mPassword.getText())) {
mPassword.setError("This field is not empty!");
} else if (!passwordString.equals(cpassString)) {
cPassword.setError("Current password is not matching!");
} else if (!passwordPattern.matcher(passwordString).matches()) {
mPassword.setError("Please enter at least 8 character,at least one upper case latter,"
+ " at least one lower case latter, at least one number,"
+ " at least one special character and no white space!");
} else {
insertData();
}
}
}
DataContract.java
package com.example.registrationpage;
import android.provider.BaseColumns;
public class DataContract {
private DataContract () {}
public static final class DataEntry implements BaseColumns {
public final static String TABLE_NAME = "register";
public final static String _ID = BaseColumns._ID;
public final static String COLUMN_NAME = "name";
public final static String COLUMN_EMAIL = "email";
public final static String COLUMN_PASSWORD = "password";
}
}
DataDbHelper.java
package com.example.registrationpage;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class DataDbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydata.db";
private static final int DATABASE_VIRSION = 1;
public DataDbHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VIRSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String SQL_CREATE_TABLE = "CREATE TABLE " + DataContract.DataEntry.TABLE_NAME
+ " (" + DataContract.DataEntry._ID + " INTEGER PRIMARY KEY, "
+ DataContract.DataEntry.COLUMN_NAME + " TEXT NOT NULL, "
+ DataContract.DataEntry.COLUMN_EMAIL + " TEXT NOT NULL, "
+ DataContract.DataEntry.COLUMN_PASSWORD + " TEXT NOT NULL);";
db.execSQL(SQL_CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:con0text=".MainActivity"
android:orientation="vertical"
android:padding="16dp">
q
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:id="@+id/user_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="password"
android:id="@+id/user_password"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:paddingTop="5dp"
android:paddingRight="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:onClick="loginuser"/>
<Button
android:onClick="newUser"
android:paddingTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Registration" />
</LinearLayout>
</LinearLayout>
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.registrationpage.RegisterActivity"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:id="@+id/name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:id="@+id/username"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="password"
android:id="@+id/password"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Confirm password"
android:id="@+id/cPassword"/>
<Button
android:paddingTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:onClick="regButton"/>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.registrationpage">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".RegisterActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>