public static List<Housing> getAllVacancies(Connection conn) {

    List<Housing> vacancies = new LinkedList<>();
    String query =
        " SELECT R.PARENT_ID AS H_ID, R.APT_ID AS APT_ID, R.TYPE AS TYPE, "
            + "R.PLACE_NUM AS PLACE_NUM, H.NAME AS NAME "
            + " FROM ROOMS R, HOUSING H "
            + " WHERE R.PARENT_ID=H.HOUSING_ID "
            + " AND R.PLACE_NUM NOT IN (SELECT LOCATION_NO FROM LEASE) ";

    try (ResultSet rs = DBAccessor.selectQuery(conn, query)) {
      while (rs.next()) {
        Housing housing = new Housing();
        housing.setHousingId(rs.getString("H_ID"));
        housing.setLocationNumber(rs.getString("PLACE_NUM"));
        housing.setAptId(rs.getString("APT_ID"));
        housing.setName(rs.getString("NAME"));
        housing.setType(rs.getString("TYPE"));
        vacancies.add(housing);
      }

    } catch (SQLException ex) {
      System.err.println("Error Occurred During View Lease " + ex.getMessage());
    }

    query =
        " SELECT F.APT_ID AS APT_ID, H.HOUSING_ID AS H_ID, H.NAME AS NAME, H.TYPE AS TYPE "
            + " FROM FAMILY_APT F, HOUSING H "
            + " WHERE APT_ID NOT IN (SELECT LOCATION_NO FROM LEASE) ";

    try (ResultSet rs = DBAccessor.selectQuery(conn, query)) {
      if (rs.next()) {
        Housing housing = new Housing();
        housing.setHousingId(rs.getString("H_ID"));
        housing.setAptId(rs.getString("APT_ID"));
        housing.setName(rs.getString("NAME"));
        housing.setType(rs.getString("TYPE"));
        vacancies.add(housing);
      }
    } catch (SQLException ex) {
      System.err.println("Error Occurred During View Lease " + ex.getMessage());
    }
    return vacancies;
  }
  public static Housing getHousingDetail(Connection conn, LeasePreference preference) {

    Housing housing = null;
    if (preference == null) {
      List<Housing> housingList = LeaseUtils.getAllVacancies(conn);
      housing = housingList.isEmpty() ? null : housingList.get(0);
      System.out.println(" Pointer is here " + housing);
      return housing;
    }

    String residenceType = preference.getType();
    String hallId = (preference.getHallId() == null) ? null : preference.getHallId();
    String query = "";
    String prefType = residenceType;

    switch (prefType) {
      case "Residence Halls":
        query =
            "SELECT * FROM ROOMS "
                + " WHERE TYPE = '"
                + prefType
                + "'  AND "
                + " PARENT_ID IN  "
                + " (SELECT HOUSING_ID FROM HOUSING WHERE "
                + hallId
                + " is null or "
                + "HOUSING_ID = '"
                + hallId
                + "' ) AND "
                + " (select count(*) from lease l, LEASE_REQUEST lr"
                + " where lr.REQUEST_NUMBER = l.REQUEST_NUMBER and lr.status <> 'InProgress' and l.LOCATION_NO = PLACE_NUM) = 0"
                + " order by PARENT_ID, PLACE_NUM";

        try (ResultSet rs = DBAccessor.selectQuery(conn, query)) {
          if (rs.next()) {
            housing = new Housing();
            housing.setHousingId(rs.getString("PARENT_ID"));
            housing.setLocationNumber(rs.getString("PLACE_NUM"));
            housing.setName(preference.getHallName());
            housing.setType(preference.getType());
          }
        } catch (SQLException ex) {
          System.err.println("Error Occurred During View Lease " + ex.getMessage());
        }
        break;
      case "General Student Apartments":
        query =
            "SELECT * FROM ROOMS "
                + " WHERE TYPE = '"
                + prefType
                + "'  AND "
                + " (select count(*) from lease l, LEASE_REQUEST lr"
                + " where lr.REQUEST_NUMBER = l.REQUEST_NUMBER and lr.status <> 'InProgress' and l.LOCATION_NO = PLACE_NUM) = 0"
                + " order by PARENT_ID, PLACE_NUM";

        try (ResultSet rs = DBAccessor.selectQuery(conn, query)) {
          if (rs.next()) {
            housing = new Housing();
            housing.setHousingId(rs.getString("PARENT_ID"));
            housing.setLocationNumber(rs.getString("PLACE_NUM"));
            housing.setName(preference.getHallName());
            housing.setType(preference.getType());
          }
        } catch (SQLException ex) {
          System.err.println("Error Occurred During View Lease " + ex.getMessage());
        }
        break;
      case "Family Apartments":
        query =
            " SELECT F.APT_ID AS APT_ID, H.HOUSING_ID AS H_ID, H.NAME AS NAME "
                + " FROM FAMILY_APT F, HOUSING H "
                + " WHERE H.HOUSING_ID = F.F_APT_ID AND "
                + " (select count(*) from lease l, LEASE_REQUEST lr"
                + " where lr.REQUEST_NUMBER = l.REQUEST_NUMBER and lr.status <> 'InProgress' and l.LOCATION_NO = APT_ID) = 0"
                + " order by H_ID, APT_ID";

        try (ResultSet rs = DBAccessor.selectQuery(conn, query)) {
          if (rs.next()) {
            housing = new Housing();
            housing.setHousingId(rs.getString("H_ID"));
            housing.setLocationNumber(rs.getString("APT_ID"));
            housing.setName(rs.getString("NAME"));
            housing.setType(preference.getType());
          }

        } catch (SQLException ex) {
          System.err.println("Error Occurred During View Lease " + ex.getMessage());
        }
    }
    return housing;
  }