/** * ajax 를 이용한 사용자 검색 요청 헤더의 accept 파라미터에 application/json 값이 없으면 406 응답 응답에 포함되는 데이터 수는 * MAX_FETCH_USERS 로 제한된다 입력 파라미터 query 가 부분매칭 되는 loginId 목록을 json 형태로 응답 * * @param query 검색어 * @return */ public static Result users(String query) { if (!request().accepts("application/json")) { return status(Http.Status.NOT_ACCEPTABLE); } ExpressionList<User> el = User.find.select("loginId, name").where().disjunction(); el.icontains("loginId", query); el.icontains("name", query); el.endJunction(); int total = el.findRowCount(); if (total > MAX_FETCH_USERS) { el.setMaxRows(MAX_FETCH_USERS); response().setHeader("Content-Range", "items " + MAX_FETCH_USERS + "/" + total); } List<Map<String, String>> users = new ArrayList<>(); for (User user : el.findList()) { StringBuilder sb = new StringBuilder(); sb.append(String.format("<img class='mention_image' src='%s'>", user.avatarUrl())); sb.append(String.format("<b class='mention_name'>%s</b>", user.name)); sb.append(String.format("<span class='mention_username'> @%s</span>", user.loginId)); Map<String, String> userMap = new HashMap<>(); userMap.put("info", sb.toString()); userMap.put("loginId", user.loginId); users.add(userMap); } return ok(toJson(users)); }
public static boolean existsByAuthUserIdentity(final AuthUserIdentity identity) { final ExpressionList<User> exp; if (identity instanceof UsernamePasswordAuthUser) { exp = getUsernamePasswordAuthUserFind((UsernamePasswordAuthUser) identity); } else { exp = getAuthUserFind(identity); } return exp.findRowCount() > 0; }
/** * ajax 를 이용한 사용자 검색 요청 헤더의 accept 파라미터에 application/json 값이 없으면 406 응답 응답에 포함되는 데이터 수는 * MAX_FETCH_USERS 로 제한된다 입력 파라미터 query 가 부분매칭 되는 loginId 목록을 json 형태로 응답 * * @param query 검색어 * @return */ public static Result users(String query) { if (!request().accepts("application/json")) { return status(Http.Status.NOT_ACCEPTABLE); } ExpressionList<User> el = User.find.select("loginId").where().contains("loginId", query); int total = el.findRowCount(); if (total > MAX_FETCH_USERS) { el.setMaxRows(MAX_FETCH_USERS); response().setHeader("Content-Range", "items " + MAX_FETCH_USERS + "/" + total); } List<String> loginIds = new ArrayList<>(); for (User user : el.findList()) { loginIds.add(user.loginId); } return ok(toJson(loginIds)); }
@Test public void matchingBBTest() { /* ==================================================== BLACK BOX TEST : SEE /Z/report/report.pdf, page 16 ==================================================== */ Coordinate coorATest = new Coordinate(50.669715, 4.602624); Coordinate coorBTest = new Coordinate(50.667892, 4.619073); User userTest = new User( "loginTest", "Mister", "Nobody", "*****@*****.**", "0123-456", 0, null, null, null, null, null); Date arrTimeTest = new Date(2013, 01, 04, 15, 00); Traject trajectTest = new Traject( 1, // Seats 15, // TotalCost null, // Request userTest, // User null, // Dep PP null, // Arr PP null); // Proposal Request reqTest = new Request( coorATest, // Coor departure coorBTest, // Coor arrival "Place Galilee 6 1348 Louvain-La-Neuve", // Adress departure "Cour des Fleurets 1348 Louvain-La-Neuve", // Adress arrival arrTimeTest, // Arrival time 1, // Seats 60, // Time tolerance 3000, // Walk tolerance in m 5, // Price tolerance userTest, // User trajectTest); // Traject trajectTest.setRequest(reqTest); // BB Test : msg-1 ArrayList<Traject> response = controllers.Matching.match(reqTest); /*for(Traject traj : response){ Assert.fail("Requete n est pas dans la base de donnees mais matching retourne un trajet"); }*/ reqTest.getUser().addRequest(reqTest); reqTest.save(); reqTest.getUser().save(); // BB Test : msg-2 ArrayList<Traject> response2 = controllers.Matching.match(reqTest); for (Traject traj : response2) { ExpressionList<Proposal> res = Proposal.find.where().eq("id", traj.getProposal().getId()); if (res.findRowCount() < 1) { Assert.fail("Proposal n est pas dans la base de donnees mais matching retourne un trajet"); } } // BB Test : msg-3 + msg-4 for (Traject traj : response2) { PickupPoint depPP = traj.getDeparturePP().getPickupPoint(); PickupPoint arrPP = traj.getArrivalPP().getPickupPoint(); if (PickupPoint.find.where().eq("id", depPP.getId()) != depPP) { Assert.fail("Departure PickUpPoint pas dans la base de donnees"); } if (PickupPoint.find.where().eq("id", arrPP.getId()) != arrPP) { Assert.fail("Arrival PickUpPoint pas dans la base de donnees"); } } for (Traject traj : response2) { // BB Test : msg-5 double walkBegin = Matching.distance( traj.getDeparturePP().getPickupPoint().getCoordinates(), reqTest.getTraject().getDeparturePP().getPickupPoint().getCoordinates()); double walkEnd = Matching.distance( reqTest.getTraject().getArrivalPP().getPickupPoint().getCoordinates(), traj.getArrivalPP().getPickupPoint().getCoordinates()); if (walkBegin + walkEnd > 3000) { Assert.fail("La tolerance de distance de marche n est pas respectee"); } // BB Test : msg-6 Date maxiTime = new Date(2013, 01, 04, 16, 00); if (traj.getArrivalPP().getTime().after(maxiTime)) { Assert.fail("Heure d arrivee du passager depasse la tolerance d heure d arrivee"); } // BB Test : msg-7 if (traj.getReservedSeats() - 1 < 0) { Assert.fail("Pas assez de sieges libres dans la proposition pour satisfaire la requete"); } // BB Test : msg-8 if (traj.getTotalCost() > 5) { Assert.fail("Tolerance en cout non respectee."); } } }