Thursday, March 27, 2014

Karawalaya

//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

JANITH DBHELPER Listview public class DBhelper extends SQLiteOpenHelper {     public static final String DATABASE_NAME="user-Info1...