Search in sources :

Example 6 with Shelter

use of pinkpanthers.pinkshelters.Model.Shelter in project pink-panthers by MrTrai.

the class UserInfoActivity method updateOnClick.

/**
 * Set Click Event Update Info Button
 * Update the information of the user when click
 *
 * @param v current view that holds the update button
 */
public void updateOnClick(@SuppressWarnings("unused") View v) {
    updateRestrictionList();
    // require homeless to select at least one restriction to update
    if (restrictionList.isEmpty()) {
        buttonStatus.setText("Please select restriction(s) to update");
        buttonStatus.setVisibility(View.VISIBLE);
        finish();
        startActivity(getIntent());
    } else {
        try {
            homeless.setRestrictionsMatch(restrictionList);
            homeless.setFamilyMemberNumber(familySize);
            // checked if homeless has already claimed beds
            if ((homeless.getShelterId() != 0) && (db.getShelterById(homeless.getShelterId()) != null)) {
                Shelter shelter = db.getShelterById(homeless.getShelterId());
                // create dialog
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Confirm cancellation to update info");
                builder.setMessage("Are you sure to cancel bed(s) claimed at" + shelter.getShelterName() + "?");
                // if homeless presses on YES, then cancel claimed beds
                builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        try {
                            Shelter shelter = db.getShelterById(homeless.getShelterId());
                            int vacancy = shelter.getVacancy() + familySize;
                            int occupancy = shelter.getUpdate_capacity() - vacancy;
                            homeless.setShelterId(0);
                            db.updateShelterOccupancy(shelter.getId(), occupancy);
                            if (restrictionList.isEmpty()) {
                                buttonStatus.setText("Please select restriction(s) to update");
                                buttonStatus.setVisibility(View.VISIBLE);
                                finish();
                                startActivity(getIntent());
                            } else {
                                // send that homeless to db.
                                db.updateAccount(homeless);
                                // show successful text and reset everything()
                                buttonStatus.setText("Update successfully");
                                buttonStatus.setVisibility(View.VISIBLE);
                                finish();
                                startActivity(getIntent());
                            }
                        } catch (SQLException e) {
                            e.printStackTrace();
                        } catch (NoSuchUserException e) {
                            e.printStackTrace();
                        }
                        dialog.cancel();
                    }
                });
                // if homeless presses NO then nothing happens
                builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        restrictionList.clear();
                        finish();
                        startActivity(getIntent());
                        dialog.cancel();
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
            // if homeless has not claimed any beds yet, then update info
            } else {
                // send that homeless to db.
                db.updateAccount(homeless);
                // show successful text and reset everything()
                buttonStatus.setText("Update successfully");
                buttonStatus.setVisibility(View.VISIBLE);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (NoSuchUserException e) {
            e.printStackTrace();
        }
    }
}
Also used : AlertDialog(android.app.AlertDialog) DialogInterface(android.content.DialogInterface) SQLException(java.sql.SQLException) NoSuchUserException(pinkpanthers.pinkshelters.Model.NoSuchUserException) Shelter(pinkpanthers.pinkshelters.Model.Shelter)

Example 7 with Shelter

use of pinkpanthers.pinkshelters.Model.Shelter in project pink-panthers by MrTrai.

the class DbUnitTest method testGetAllShelters.

@Test
public void testGetAllShelters() {
    List<Shelter> shelters = db.getAllShelters();
    assertNotNull(shelters);
    assertEquals(13, shelters.size());
    ArrayList<String> shelterNamesArr = new ArrayList<>();
    ArrayList<String> addressArr = new ArrayList<>();
    ArrayList<String> capArr = new ArrayList<>();
    // Get Values
    for (Shelter each : shelters) {
        capArr.add(each.getCapacity());
        shelterNamesArr.add(each.getShelterName());
        addressArr.add(each.getAddress());
    }
    // Test Capacity
    String[] capTest = { "264", "140", "450", "92", "40", "32 for families, 80 singles", "76 family rooms ", "80", "", "22 apartments", "330", "12", "" };
    // Test Address
    String[] addressTest = { "921 Howell Mill Road, Atlanta, Georgia 30318", "655 Ethel Street, Atlanta, Georgia 30318", "156 Mills Street, Atlanta, Georgia 30313", "144 Mills Street, Atlanta, Georgia 30313", "607 Peachtree Street NE Atlanta, GA 30308", "1300 Joseph E. Boone Blvd NW, Atlanta, GA 30314", "173 Boulevard Northeast, Atlanta, GA 30312", "1559 Johnson Road NW, Atlanta, GA 30318", "830 Boulevard SE, Atlanta, GA 30312", "34 Peachtree Street NW, Suite 700, Atlanta, GA 30303", "275 Pryor St. SW, Atlanta, GA 30303", "1230 Hightower Road NW Atlanta, GA 30318", "1800 Memorial Dr SE G3, Atlanta, GA 30317" };
    // Test Shelter Names
    String[] shelterNamesTest = { "My Sister's House", "The Atlanta Day Center for Women & Children", "The Shepherd's Inn", "Fuqua Hall", "Atlanta's Children Center", "Eden Village ", "Our House ", "Covenant House Georgia ", "Nicholas House", "Hope Atlanta ", "Gateway Center", "Young Adult Guidance Center ", "Homes of Light " };
    assertArrayEquals(shelterNamesTest, shelterNamesArr.toArray());
    assertArrayEquals(addressTest, addressArr.toArray());
    assertArrayEquals(capTest, capArr.toArray());
}
Also used : ArrayList(java.util.ArrayList) Shelter(pinkpanthers.pinkshelters.Model.Shelter) Test(org.junit.Test)

Example 8 with Shelter

use of pinkpanthers.pinkshelters.Model.Shelter in project pink-panthers by MrTrai.

the class MapsActivity method setMarkersOnMap.

/**
 * Refresh the map with new results
 */
private void setMarkersOnMap() {
    mMap.clear();
    LatLng shelterLocation;
    for (Shelter shelter : myShelters) {
        shelterLocation = new LatLng(shelter.getLatitude(), shelter.getLongitude());
        // create marker
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.title(shelter.getShelterName());
        markerOptions.position(shelterLocation);
        markerOptions.snippet(shelter.getAddress() + "\n Phone Number: + " + shelter.getPhoneNumber() + "\n Restrictions: " + shelter.getRestrictions() + "\n Vacancy: " + shelter.getVacancy());
        mMap.addMarker(markerOptions);
        // This goes up to 21
        float zoomLevel = 12.0f;
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(shelterLocation, zoomLevel));
        // set up info window
        mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {

            @Override
            public View getInfoWindow(Marker arg0) {
                return null;
            }

            @Override
            public View getInfoContents(Marker marker) {
                Context context = getApplicationContext();
                LinearLayout info = new LinearLayout(context);
                info.setOrientation(LinearLayout.VERTICAL);
                TextView title = new TextView(context);
                title.setGravity(Gravity.CENTER);
                title.setTextColor(Color.BLACK);
                title.setTypeface(null, Typeface.BOLD);
                TextView snippet = new TextView(context);
                title.setText(marker.getTitle());
                snippet.setTextColor(Color.BLACK);
                snippet.setText(marker.getSnippet());
                info.addView(title);
                info.addView(snippet);
                return info;
            }
        });
    }
}
Also used : Context(android.content.Context) MarkerOptions(com.google.android.gms.maps.model.MarkerOptions) GoogleMap(com.google.android.gms.maps.GoogleMap) Shelter(pinkpanthers.pinkshelters.Model.Shelter) TextView(android.widget.TextView) LatLng(com.google.android.gms.maps.model.LatLng) Marker(com.google.android.gms.maps.model.Marker) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) LinearLayout(android.widget.LinearLayout)

Example 9 with Shelter

use of pinkpanthers.pinkshelters.Model.Shelter 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
        }
    });
}
Also used : Bundle(android.os.Bundle) NoSuchUserException(pinkpanthers.pinkshelters.Model.NoSuchUserException) Intent(android.content.Intent) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) RecyclerView(android.support.v7.widget.RecyclerView) View(android.view.View) AdapterView(android.widget.AdapterView) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) AdapterView(android.widget.AdapterView) Shelter(pinkpanthers.pinkshelters.Model.Shelter) Db(pinkpanthers.pinkshelters.Model.Db) ArrayAdapter(android.widget.ArrayAdapter)

Aggregations

Shelter (pinkpanthers.pinkshelters.Model.Shelter)9 Intent (android.content.Intent)4 View (android.view.View)3 AdapterView (android.widget.AdapterView)3 TextView (android.widget.TextView)3 NoSuchUserException (pinkpanthers.pinkshelters.Model.NoSuchUserException)3 AlertDialog (android.app.AlertDialog)2 DialogInterface (android.content.DialogInterface)2 Bundle (android.os.Bundle)2 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)2 RecyclerView (android.support.v7.widget.RecyclerView)2 Editable (android.text.Editable)2 LinearLayout (android.widget.LinearLayout)2 Marker (com.google.android.gms.maps.model.Marker)2 MarkerOptions (com.google.android.gms.maps.model.MarkerOptions)2 ArrayList (java.util.ArrayList)2 Db (pinkpanthers.pinkshelters.Model.Db)2 Context (android.content.Context)1 TextWatcher (android.text.TextWatcher)1 LayoutInflater (android.view.LayoutInflater)1