use of pinkpanthers.pinkshelters.Model.NoSuchUserException in project pink-panthers by MrTrai.
the class ShelterDetails method addListenerOnButton.
/**
* click on this button to save the result on the database
*/
public void addListenerOnButton() {
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
Button btnSubmit = (Button) findViewById(R.id.ratingButton);
// if click on this button, then display the current rating value.
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ShelterDetails.this, String.valueOf(ratingBar.getRating()), Toast.LENGTH_SHORT).show();
try {
db.updateShelter(s);
} catch (NoSuchUserException e) {
throw new RuntimeException("No shelter with this ID get updated");
} catch (SQLException e) {
throw new RuntimeException("SQL statement is written wrong");
}
}
});
}
use of pinkpanthers.pinkshelters.Model.NoSuchUserException in project pink-panthers by MrTrai.
the class ShelterDetails method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shelter_details);
db = new Db("pinkpanther", "PinkPantherReturns!");
errorMessage = findViewById(R.id.errorMessage);
vacancy = findViewById(R.id.vacancy);
Button claimBedButton = findViewById(R.id.claimBed);
updateInfoButton = findViewById(R.id.updateAccountButton);
Button cancelBedButton = findViewById(R.id.cancelReservation);
checkIn = findViewById(R.id.check_in_btn);
viewResident = findViewById(R.id.view_all_homeless);
peopleNumber = findViewById(R.id.people_number);
List<Integer> number = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
ArrayAdapter<Integer> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, number);
peopleNumber.setAdapter(adapter);
try {
Intent intent = getIntent();
Bundle extra = intent.getExtras();
assert extra != null;
int shelterId = extra.getInt("shelterId");
s = db.getShelterById(shelterId);
updateView(s);
} catch (NoSuchUserException e) {
throw new RuntimeException("This is not how it works " + e.toString());
} catch (NullPointerException e) {
throw new RuntimeException("NullPointerException is raised: " + "getExtras() returns null in ListOfShelter");
}
try {
Intent intent = getIntent();
Bundle extra = intent.getExtras();
assert extra != null;
username = extra.getString("username");
Account user = db.getAccountByUsername(username);
if (user instanceof Homeless) {
// user is a homeless person
a = (Homeless) user;
claimBedButton.setVisibility(View.VISIBLE);
try {
reservedShelter = db.getShelterById(a.getShelterId());
if (reservedShelter.getId() == s.getId()) {
cancelBedButton.setVisibility(View.VISIBLE);
message = "You have claimed " + a.getFamilyMemberNumber() + " bed(s) at this shelter";
errorMessage.setText(message);
errorMessage.setTextColor(Color.GREEN);
errorMessage.setVisibility(View.VISIBLE);
}
} catch (NoSuchUserException e) {
// this shelter is not the one that the user reserved to
// so nothing happens (cancel reservation button remains invisible)
}
} else {
// user is not a homeless person
claimBedButton.setVisibility(View.INVISIBLE);
checkIn.setVisibility(View.VISIBLE);
peopleNumber.setVisibility(View.VISIBLE);
viewResident.setVisibility(View.VISIBLE);
}
} catch (NoSuchUserException e) {
throw new RuntimeException("There is no user with that " + "username or shelter with that ID");
} catch (NullPointerException e) {
throw new RuntimeException("getExtras() returns null username");
}
addListenerOnRatingBar();
addListenerOnButton();
checkInButton();
}
use of pinkpanthers.pinkshelters.Model.NoSuchUserException in project pink-panthers by MrTrai.
the class LoginActivity method checkLoginTrial.
/**
* Validate if a user inputs the correct values. If not, raise a warning and do certain action
* associated with the activity
*/
private void checkLoginTrial() {
Button loginButton = findViewById(R.id.login_button);
String blocked = "blocked";
if (account != null) {
String accountState = account.getAccountState();
if (accountState.equals("not_verified")) {
txtView.setText("Your account has not been verified. Please click on the registration linkgit");
loginButton.setVisibility(View.INVISIBLE);
} else if (accountState.equals(blocked)) {
txtView.setText("Your account has been disable, please contact admin");
loginButton.setVisibility(View.INVISIBLE);
} else if (loginTrial < 3) {
txtView.setText("Wrong password, you have " + (3 - loginTrial) + " tries left");
account = null;
} else {
account.setAccountState(blocked);
txtView.setText("Your account is disable due to 3 " + "unsuccessful attempts, please contact your admin");
loginButton.setVisibility(View.INVISIBLE);
try {
db.updateAccount(account);
} catch (SQLException e) {
throw new RuntimeException("Failed to update account " + e.toString());
} catch (NoSuchUserException e) {
// this shouldn't happen
txtView.setText("Your account doesn't exist");
}
}
} else {
if (loginTrial < 3) {
txtView.setText("Wrong username, you have " + (3 - loginTrial) + " tries left");
account = null;
} else {
txtView.setText("You've exceeded your attempts, please try again next time");
loginButton.setVisibility(View.INVISIBLE);
}
}
}
use of pinkpanthers.pinkshelters.Model.NoSuchUserException in project pink-panthers by MrTrai.
the class LoginActivity method logIn.
/**
* Check for user name, password and log the user in.
* Success: Direct User to Home Page
* Fail: Display Error
*
* @param view current view of the app
*/
public void logIn(@SuppressWarnings("unused") View view) {
txtView = findViewById(R.id.validationWarn);
try {
Editable userText = username.getText();
String user = userText.toString();
user = user.toLowerCase();
Editable passText = password.getText();
String pass = passText.toString();
account = db.getAccountByUsername(user);
txtView.setText("");
String blocked = "blocked";
String correctPass = account.getPassword();
String accountState = account.getAccountState();
if (correctPass.equals(pass) && !accountState.equals(blocked) && !accountState.equals("not_verified")) {
// correct password
Context context = getApplicationContext();
SharedPreferences preferences = context.getSharedPreferences("com.example.sp.LoginPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
if (account instanceof Homeless) {
editor.putString("USER_TYPE", "Homeless");
} else if (account instanceof Admin) {
editor.putString("USER_TYPE", "Admin");
} else if (account instanceof Volunteer) {
editor.putString("USER_TYPE", "Volunteer");
}
editor.putString("UserID", ((Integer) account.getUserId()).toString());
editor.putString("NAME", account.getName());
// get name to use for shelter details
editor.putString("USERNAME", account.getUsername());
editor.apply();
// active account is set to this static variable when
// logged in for quick access to current user
// Db.activeAccount = account;
db.logAction(account, "Logged in");
Intent homePageIntent = new Intent(this, HomePageActivity.class);
homePageIntent.putExtra("username", user);
startActivity(homePageIntent);
} else {
// incorrect password
loginTrial++;
checkLoginTrial();
}
} catch (NoSuchUserException e) {
// User doesn't exist
loginTrial++;
checkLoginTrial();
}
}
use of pinkpanthers.pinkshelters.Model.NoSuchUserException in project pink-panthers by MrTrai.
the class SearchActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
db = new Db("pinkpanther", "PinkPantherReturns!");
Intent intent = getIntent();
Bundle extra = intent.getExtras();
assert extra != null;
username = extra.getString("username");
// data to populate the RecyclerView with
shelterNames = new ArrayList<>();
// contain all shelters
shelters = db.getAllShelters();
myShelters = shelters;
// set up the RecyclerView
search_recycler_view = findViewById(R.id.search_recycler_view);
search_recycler_view.setLayoutManager(new LinearLayoutManager(this));
recycler_adapter = new RecyclerAdapter(this, shelterNames);
recycler_adapter.setClickListener(this);
search_recycler_view.setAdapter(recycler_adapter);
choices.add("Gender");
choices.add("Age Range");
choices.add("Name");
genders.add("None");
genders.add("Men");
genders.add("Women");
// for extra credit purposes
genders.add("Non-Binary");
ageRanges.add("None");
ageRanges.add("Families with Newborns");
ageRanges.add("Children");
ageRanges.add("Young Adults");
ageRanges.add("Anyone");
choices_spinner = findViewById(R.id.choices_spinner);
age_range_gender_spinner = findViewById(R.id.age_range_gender_spinner);
shelter_name_edit_text = findViewById(R.id.shelter_name_edit_text);
age_range_gender_spinner.setVisibility(View.INVISIBLE);
ArrayAdapter<String> choices_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, choices);
choices_spinner.setAdapter(choices_adapter);
gender_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, genders);
age_range_adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, ageRanges);
age_range_gender_spinner.setAdapter(gender_adapter);
choices_spinner.setSelection(0);
age_range_gender_spinner.setSelection(0);
age_range_gender_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Object item = choices_spinner.getSelectedItem();
String mainSelection = item.toString();
if ("Gender".equals(mainSelection)) {
String searchBy = sqlConverter(genders.get(i));
if ("None".equals(searchBy)) {
shelterNames.clear();
recycler_adapter.notifyDataSetChanged();
} else {
shelterNames.clear();
try {
myShelters = db.getShelterByRestriction(searchBy);
for (Shelter sh : myShelters) {
shelterNames.add(sh.getShelterName());
}
} catch (NoSuchUserException e) {
shelterNames.add("No results found");
}
recycler_adapter.notifyDataSetChanged();
}
} else if ("Age Range".equals(mainSelection)) {
String searchBy = sqlConverter(ageRanges.get(i));
if ("None".equals(searchBy)) {
shelterNames.clear();
recycler_adapter.notifyDataSetChanged();
} else {
shelterNames.clear();
try {
myShelters = db.getShelterByRestriction(searchBy);
for (Shelter sh : myShelters) {
shelterNames.add(sh.getShelterName());
}
} catch (NoSuchUserException e) {
shelterNames.add("No results found");
}
recycler_adapter.notifyDataSetChanged();
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// nothing happens when nothing is selected
}
});
choices_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String searchBy = choices.get(i);
switch(searchBy) {
case // search by gender was selected
"Gender":
age_range_gender_spinner.setAdapter(gender_adapter);
age_range_gender_spinner.setVisibility(View.VISIBLE);
shelter_name_edit_text.setVisibility(View.INVISIBLE);
break;
case // search by age range was selected
"Age Range":
age_range_gender_spinner.setAdapter(age_range_adapter);
age_range_gender_spinner.setVisibility(View.VISIBLE);
shelter_name_edit_text.setVisibility(View.INVISIBLE);
break;
case // search by name was selected
"Name":
age_range_gender_spinner.setVisibility(View.INVISIBLE);
shelter_name_edit_text.setVisibility(View.VISIBLE);
// clear out old results found by different categories
shelterNames.clear();
// fill recyclerView with all shelters
for (int j = 0; j < shelters.size(); j++) {
Shelter s = shelters.get(j);
shelterNames.add(s.getShelterName());
}
// set interaction for the previewed list of shelter before starting the search
recycler_adapter = new RecyclerAdapter(SearchActivity.this, shelterNames);
recycler_adapter.setClickListener(SearchActivity.this);
search_recycler_view.setAdapter(recycler_adapter);
shelter_name_edit_text.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// nothing changes before user types anything
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// grabs each new character that the user types into the textView
shelterNames.clear();
try {
myShelters = db.getShelterByName(charSequence.toString());
for (Shelter s : myShelters) {
shelterNames.add(s.getShelterName());
}
// set interaction between the suggestions and shelter details
recycler_adapter = new RecyclerAdapter(SearchActivity.this, shelterNames);
recycler_adapter.setClickListener(SearchActivity.this);
search_recycler_view.setAdapter(recycler_adapter);
} catch (NoSuchUserException e) {
shelterNames.add("No results found");
}
recycler_adapter.notifyDataSetChanged();
}
@Override
public void afterTextChanged(Editable editable) {
// changes occurred during onTextChanged
// so no changes after text changed
}
});
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// nothing changes when nothing is selected
}
});
}
Aggregations