//Userprofile class
public final class UserProfile {
private UserProfile() {}
public static class Users implements BaseColumns {
public static final String TABLE_USER_INFO = "UserInfo";
public static final String TABLE_USER_INFO_COL_USERNAME = "userName";
public static final String TABLE_USER_INFO_COL_DATE_OF_BIRTH = "dateOfBirth";
public static final String TABLE_USER_INFO_COL_GENDER = "gender";
public static final String TABLE_USER_INFO_COL_PASSWORD = "password";
}
}
//DBHanlder class
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mad_model.db";
private static final int DATABASE_VERSION = 1;
private final String CREATE_TABLE_USER_INFO =
"CREATE TABLE " + UserProfile.Users.TABLE_USER_INFO + " (" +
UserProfile.Users._ID + " INTEGER PRIMARY KEY," +
UserProfile.Users.TABLE_USER_INFO_COL_USERNAME + " TEXT," +
UserProfile.Users.TABLE_USER_INFO_COL_DATE_OF_BIRTH + " TEXT," +
UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD + " TEXT," +
UserProfile.Users.TABLE_USER_INFO_COL_GENDER + " TEXT)";
private final String DROP_TABLE_USER_INFO =
"DROP TABLE IF EXISTS " + UserProfile.Users.TABLE_USER_INFO;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_USER_INFO);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE_USER_INFO);
onCreate(db);
}
public boolean addInfo(String username, String dateOfBirth, String password, String gender) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_USERNAME, username);
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_DATE_OF_BIRTH, dateOfBirth);
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD, password);
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_GENDER, gender);
long row = db.insert(UserProfile.Users.TABLE_USER_INFO, null, contentValues);
db.close();
if(row == -1)
return false;
else
return true;
}
/**
* Since the activity_edit_profile UI does not consist of userID( or _ID),
* it was assumed that the updating was to be done on the basis of username, which in turn should be unique.
* LIKE keyword was not used in the where clause because, if one person has a username
* as 'Karawalaya' and another has 'karawalaya' (Difference in 'K'),
* both will be updated.
*/
public boolean updateInfor(String username, String dateOfBirth, String password, String gender) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_DATE_OF_BIRTH, dateOfBirth);
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD, password);
contentValues.put(UserProfile.Users.TABLE_USER_INFO_COL_GENDER, gender);
String whereClause = UserProfile.Users.TABLE_USER_INFO_COL_USERNAME + "=?";
String[] whereClauseArgs = {username};
int i;
i = db.update(UserProfile.Users.TABLE_USER_INFO, contentValues, whereClause, whereClauseArgs);
if(i == 1)
return true;
else
return false;
}
/**
* Check User Class for more information.
*/
public Collection<User> readAllInfor() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor result = db.query(UserProfile.Users.TABLE_USER_INFO, null, null, null, null, null, null);
if(result.getCount() == 0) {
result.close();
db.close();
return null;
}
User user;
Collection<User> usersList = new ArrayList<>();
while(result.moveToNext()) {
user = new User(result.getInt(result.getColumnIndexOrThrow(UserProfile.Users._ID)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_USERNAME)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_DATE_OF_BIRTH)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_GENDER)));
usersList.add(user);
}
result.close();
db.close();
return usersList;
}
/**
* Check User Class for more information.
*/
public User readAllInfor(String username) {
SQLiteDatabase db = this.getReadableDatabase();
String whereClause = UserProfile.Users.TABLE_USER_INFO_COL_USERNAME + "=?";
Cursor result = db.query(UserProfile.Users.TABLE_USER_INFO, null, whereClause, new String[] {username}, null, null, null);
if(result.getCount() == 0) {
db.close();
result.close();
return null;
}
User user = null;
while(result.moveToNext()) {
if(result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_USERNAME)).equals(username)) {
user = new User(result.getInt(result.getColumnIndexOrThrow(UserProfile.Users._ID)),
username,
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_DATE_OF_BIRTH)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD)),
result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_GENDER)));
}
}
db.close();
result.close();
return user;
}
/**
* Since, the activity_edit_profile consists of username rather than the userID (or _ID),
* It was assumed (like in the updateInfor method), that the deletion was done based on the username,
* which in turn should be unique.
*/
public boolean deleteInfo(String username) {
SQLiteDatabase db = this.getWritableDatabase();
String whereClause = UserProfile.Users.TABLE_USER_INFO_COL_USERNAME + " = ?";
String[] whereClauseArgs = {username};
int i;
i = db.delete(UserProfile.Users.TABLE_USER_INFO, whereClause, whereClauseArgs);
db.close();
if(i == 1)
return true;
else
return false;
}
/**
*? This is an extra method to work the application.
*/
public boolean login(String username, String password) {
SQLiteDatabase db = this.getReadableDatabase();
String[] columns = {UserProfile.Users.TABLE_USER_INFO_COL_USERNAME, UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD};
String whereClause = UserProfile.Users.TABLE_USER_INFO_COL_USERNAME + "=? AND " + UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD + "=?";
Cursor result = db.query(UserProfile.Users.TABLE_USER_INFO, columns, whereClause, new String[] {username, password}, null, null, null);
boolean bool = false;
while(result.moveToNext()) {
if(result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_USERNAME)).equals(username) && result.getString(result.getColumnIndexOrThrow(UserProfile.Users.TABLE_USER_INFO_COL_PASSWORD)).equals(password)) {
bool = true;
break;
}
}
return bool;
}
}
//editInfo class
public class EditProfile extends AppCompatActivity {
private DBHelper db;
private EditText ET_username, ET_date_of_birth, ET_password;
private Button BTN_search, BTN_edit, BTN_delete;
private RadioGroup RD_group_gender;
private RadioButton RD_btn_male, RD_btn_female;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
initializeViews();
initializeDBHelper();
}
public void initializeViews() {
ET_username = (EditText) findViewById(R.id.ET_username);
ET_date_of_birth = (EditText) findViewById(R.id.ET_date_of_birth);
ET_password = (EditText) findViewById(R.id.ET_password);
RD_group_gender = (RadioGroup) findViewById(R.id.RD_group_gender);
RD_btn_male = (RadioButton) findViewById(R.id.RD_btn_male);
RD_btn_female = (RadioButton) findViewById(R.id.RD_btn_female);
BTN_search = (Button) findViewById(R.id.BTN_search);
BTN_edit = (Button) findViewById(R.id.BTN_edit);
BTN_delete = (Button) findViewById(R.id.BTN_delete);
}
public void initializeDBHelper() {
db = new DBHelper(this);
}
/**
* StringBuffer was used in aid of using the AlertDialog.Builder to display all the stuff
* on the screen
*/
public void search(View view) {
User user = db.readAllInfor(ET_username.getText().toString());
if(user == null) {
showStuff("Error", "No Data Found!");
return;
}
StringBuffer buffer = new StringBuffer();
buffer.append("User ID: " + user.getId() + "\n");
buffer.append("Username: " + user.getUsername() + "\n");
buffer.append("Date Of Birth: " + user.getDateOfBirth() + "\n");
buffer.append("Password: " + user.getPassword() + "\n");
buffer.append("Gender: " + user.getGender() + "\n\n");
showStuff("Data", buffer.toString());
}
/**
* This was done in the aid of displaying the stuff on the screen
*/
public void showStuff(String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
public void edit(View view) {
int id = RD_group_gender.getCheckedRadioButtonId();
RadioButton radioBtn = (RadioButton) RD_group_gender.findViewById(id);
boolean bool = db.updateInfor(ET_username.getText().toString(),
ET_date_of_birth.getText().toString(),
ET_password.getText().toString(),
radioBtn.getText().toString());
if(bool)
Toast.makeText(this, "Updated Successfully", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "Update Unsuccessful", Toast.LENGTH_LONG).show();
}
public void delete(View view) {
boolean bool = db.deleteInfo(ET_username.getText().toString());
if(bool)
Toast.makeText(this, "Deleted Successfully", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "Delete Unsuccessful", Toast.LENGTH_LONG).show();
}
}
//home class
public class Home extends AppCompatActivity {
private EditText ET_username, ET_password;
private Button BTN_login, BTN_register;
private DBHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
initializeViews();
initializeDBHelper();
register();
login();
}
public void initializeViews() {
ET_username = (EditText) findViewById(R.id.ET_username);
ET_password = (EditText) findViewById(R.id.ET_password);
BTN_login = (Button) findViewById(R.id.BTN_login);
BTN_register = (Button) findViewById(R.id.BTN_register);
}
public void initializeDBHelper() {
db = new DBHelper(this);
}
public void register() {
BTN_register.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Home.this, ProfileManagement.class);
startActivity(intent);
}
}
);
}
public void login() {
BTN_login.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean bool = db.login(ET_username.getText().toString(), ET_password.getText().toString());
if(bool)
Toast.makeText(Home.this, "FOUND", Toast.LENGTH_LONG).show();
else
Toast.makeText(Home.this, "NOT FOUND", Toast.LENGTH_LONG).show();
}
}
);
}
}
//profilemanagement class
public class ProfileManagement extends AppCompatActivity implements View.OnClickListener{
private DBHelper db;
private EditText ET_username, ET_date_of_birth, ET_password;
private RadioGroup RD_group_gender;
private RadioButton RD_btn_male, RD_btn_female;
private Button BTN_update_profile, BTN_register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_management);
initializeViews();
initializeDBHelper();
initListeners();
}
public void initializeViews() {
ET_username = (EditText) findViewById(R.id.ET_username);
ET_date_of_birth = (EditText) findViewById(R.id.ET_date_of_birth);
ET_password = (EditText) findViewById(R.id.ET_password);
RD_group_gender = (RadioGroup) findViewById(R.id.RD_group_gender);
RD_btn_male = (RadioButton) findViewById(R.id.RD_btn_male);
RD_btn_female = (RadioButton) findViewById(R.id.RD_btn_female);
BTN_update_profile = (Button) findViewById(R.id.BTN_update_profile);
BTN_register = (Button) findViewById(R.id.BTN_register);
}
public void initializeDBHelper() {
db = new DBHelper(this);
}
public void initListeners() {
BTN_update_profile.setOnClickListener(this);
BTN_register.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.BTN_update_profile:
updateProfile();
break;
case R.id.BTN_register:
register();
break;
}
}
public void updateProfile() {
Intent intent = new Intent(ProfileManagement.this, EditProfile.class);
startActivity(intent);
}
public void register() {
int id = RD_group_gender.getCheckedRadioButtonId();
RadioButton radioBtn = (RadioButton) RD_group_gender.findViewById(id);
boolean bool = db.addInfo(ET_username.getText().toString(), ET_date_of_birth.getText().toString(), ET_password.getText().toString(), radioBtn.getText().toString());
if(bool)
Toast.makeText(this, "Successfully Added", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "Unsuccessful", Toast.LENGTH_LONG).show();
}
}
//user class
public class User {
int id;
String username;
String dateOfBirth;
String password;
String gender;
public User(int id, String username, String dateOfBirth, String password, String gender) {
this.id = id;
this.username = username;
this.dateOfBirth = dateOfBirth;
this.password = password;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
No comments:
Post a Comment