Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. public List<Place> getPlacesForCategory(ElementList<Category> categories,
  2. GeoPosition geoposition) throws SQLException {
  3. reconnectIfBroken();
  4. int distance = 1;
  5. Place currentPlace = null;
  6. Address address;
  7. List<Place> places = new ArrayList<Place>();
  8. ElementList<Voucher> vouchers = new ElementList<Voucher>();
  9.  
  10. for (int i = 0; i < categories.getList().size(); i++) {
  11. stmt = "SELECT id,name,city,ccode,address,postcode,state,website,"
  12. + "category,subcategory,latitude,longitude,rating,numberofr,qr, (((acos( "
  13. + "sin( ( ?"
  14. + " * pi( ) /180 ) ) * "
  15. + "sin( (`latitude` * pi( ) /180 ) ) + "
  16. + "cos( ( ?"
  17. + " * pi( ) /180 ) ) *"
  18. + "cos( (`latitude` * pi( ) /180 )) * "
  19. + "cos( (( ?"
  20. + " - `longitude` ) * "
  21. + "pi( ) /180 )))))) "
  22. + " AS `distance` FROM places WHERE category =? HAVING `distance`<=?"
  23. + " ORDER BY `distance` ASC";
  24. prepStmt = connection.prepareStatement(stmt);
  25. prepStmt.setDouble(1, geoposition.getLat());
  26. prepStmt.setDouble(2, geoposition.getLat());
  27. prepStmt.setDouble(3, geoposition.getLon());
  28. prepStmt.setString(4, categories.getList().get(i).getName());
  29. prepStmt.setInt(5, distance);
  30. rs = prepStmt.executeQuery();
  31. /*
  32. * statement.executeQuery(
  33. * "SELECT id,name,city,ccode,address,postcode,state,website," +
  34. * "category,subcategory,latitude,longitude,rating,numberofr,qr, (((acos( "
  35. * + "sin( ( " + geoposition.getLat() + " * pi( ) /180 ) ) * " +
  36. * "sin( (`latitude` * pi( ) /180 ) ) + " + "cos( ( " +
  37. * geoposition.getLat() + " * pi( ) /180 ) ) *" +
  38. * "cos( (`latitude` * pi( ) /180 )) * " + "cos( (( " +
  39. * geoposition.getLon() + " - `longitude` ) * " +
  40. * "pi( ) /180 )))))) " +
  41. * " AS `distance` FROM places WHERE category ='" +
  42. * categories.getList().get(i).getName() + "' HAVING `distance`<=" +
  43. * distance + " ORDER BY `distance` ASC");
  44. */
  45.  
  46. while(rs.next()){
  47.  
  48. rs2 = statement3
  49. .executeQuery("SELECT * FROM cities where name = '"
  50. + rs.getString("city") + "'");
  51. rs2.next();
  52. if (rs.getString("state") == null)
  53. address = new Address(rs.getString("address"), rs
  54. .getString("postcode"), rs.getString("city"), "",
  55. rs2.getString("country_code"));
  56. else
  57. address = new Address(rs.getString("address"), rs
  58. .getString("postcode"), rs.getString("city"), rs
  59. .getString("state"), rs2.getString("country_code"));
  60. currentPlace = new Place(rs.getInt("id"), rs.getString("name"),
  61. address, rs.getString("website"), new GeoPosition(rs
  62. .getDouble("longitude"), rs
  63. .getDouble("latitude")),
  64. rs.getDouble("rating"), rs.getString("qr"));
  65. stmt = "SELECT * FROM categories WHERE placeID = ?";
  66. prepStmt = connection.prepareStatement(stmt);
  67. prepStmt.setInt(1, rs.getInt("id"));
  68. rs3 = prepStmt.executeQuery();
  69. while (rs3.next())
  70. categories.add(new Category(rs3.getString("category"), rs3
  71. .getString("description")));
  72. currentPlace.setCategories(categories);
  73. rs3.close();
  74. rs2.close();
  75. rs2 = statement2
  76. .executeQuery("SELECT * FROM vouchers WHERE placeID = "
  77. + rs.getInt("id"));
  78. while (rs2.next())
  79. vouchers.add(new Voucher(rs2.getInt("voucherID"), rs
  80. .getInt("id"), rs2.getString("description")));
  81. currentPlace.setVouchers(vouchers);
  82. if (places.contains(currentPlace))
  83. System.out.println("Place already exists");
  84. else
  85. places.add(currentPlace);
  86. }
  87. }
  88. // if (places.isEmpty())
  89. // return null;
  90. // else
  91. return places;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement