List of usage examples for com.mongodb DBCollection aggregate
@SuppressWarnings("deprecation") @Nullable private Cursor aggregate(final List<? extends DBObject> pipeline, final AggregationOptions options, final ReadPreference readPreference, final boolean returnCursorForOutCollection)
From source file:HW4.java
@SuppressWarnings("empty-statement") private void executeQueryButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_executeQueryButtonActionPerformed DefaultTableModel dtm = new DefaultTableModel(0, 0); //nothing is selected if (finalCat.isEmpty()) { if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; }//from w ww . jav a 2 s. c o m if (Address.equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } DB dbBusiness = mongoClient.getDB("business"); DBCollection collBusiness = dbBusiness.getCollection("business"); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; dtm.setColumnIdentifiers(header); DBCursor cursorForBusiness = collBusiness.find(query); while (cursorForBusiness.hasNext()) { //pointInterest.add(cursorForBusiness.next()); Object[] row = new Object[5]; row[0] = cursorForBusiness.next().get("business_id"); row[1] = cursorForBusiness.next().get("name"); row[2] = cursorForBusiness.next().get("city"); row[3] = cursorForBusiness.next().get("state"); row[4] = cursorForBusiness.next().get("stars"); dtm.addRow(row); } } if (!memberSince.isEmpty() || !operReviewCount.isEmpty() || !operNoOfFriends.isEmpty() || !operAvgStar.isEmpty() || !valueReviewCount.isEmpty() || !valueNoOfFriends.isEmpty() || !valueAvgStar.isEmpty() || !andOrAttribute.isEmpty() || !operNoOfVotes.isEmpty() || !valueNoOfVotes.isEmpty()) { DB dbUser = mongoClient.getDB("user"); DBCollection collUser = dbUser.getCollection("user"); BasicDBObject andQuery = new BasicDBObject(); List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); try { if (!memberSince.isEmpty()) { obj.add(new BasicDBObject("yelping_since", memberSince)); } if (!valueReviewCount.isEmpty()) { int vrc = Integer.parseInt(valueReviewCount); BasicDBObject rCount = null; if (operReviewCount.equals(">")) { rCount = new BasicDBObject("review_count", new BasicDBObject("$gt", vrc)); //rCount = new BasicDBObject("$where", "review_count >" + vrc); } if (operReviewCount.equals("<")) { rCount = new BasicDBObject("review_count", new BasicDBObject("$lt", vrc)); //rCount = new BasicDBObject("$where", "review_count <" + vrc); } if (operReviewCount.equals("=")) { rCount = new BasicDBObject("review_count", vrc); // rCount = new BasicDBObject("$where", "review_count =" + vrc); } obj.add(new BasicDBObject(rCount)); } if (!valueNoOfFriends.isEmpty()) { int vnf = Integer.parseInt(valueNoOfFriends); BasicDBObject vFriends = null; if (operNoOfFriends.equals(">")) { vFriends = new BasicDBObject("$where", "this.friends.length >" + vnf); } if (operNoOfFriends.equals("<")) { vFriends = new BasicDBObject("$where", "this.friends.length <" + vnf); } if (operNoOfFriends.equals("=")) { vFriends = new BasicDBObject("$where", "this.friends.length =" + vnf); } obj.add(new BasicDBObject(vFriends)); } if (!valueAvgStar.isEmpty()) { Double doubleValueAvgStar = Double.parseDouble(valueAvgStar); BasicDBObject avgStarValue = null; if (operAvgStar.equals(">")) { avgStarValue = new BasicDBObject("average_stars", new BasicDBObject("$gt", doubleValueAvgStar)); // avgStarValue = new BasicDBObject("$where", "average_stars >" + doubleValueAvgStar); } if (operAvgStar.equals("<")) { avgStarValue = new BasicDBObject("average_stars", new BasicDBObject("$lt", doubleValueAvgStar)); // avgStarValue = new BasicDBObject("$where", "average_stars <" + doubleValueAvgStar); } if (operAvgStar.equals("=")) { avgStarValue = new BasicDBObject("average_stars", doubleValueAvgStar); // avgStarValue = new BasicDBObject("$where", "average_stars =" + doubleValueAvgStar); } obj.add(new BasicDBObject(avgStarValue)); } if (!valueNoOfVotes.isEmpty()) { // BasicDBObject noOfVotesValue = null; // if (operNoOfVotes.equals(">")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$gt", valueNoOfVotes)); // } // if (operNoOfVotes.equals("<")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$lt", valueNoOfVotes)); // } // if (operNoOfVotes.equals("=")) { // noOfVotesValue = new BasicDBObject("average_stars", new BasicDBObject("$eq", valueNoOfVotes)); // } // // obj.add(new BasicDBObject(noOfVotesValue)); } System.out.println(andOrAttribute); if (andOrAttribute.equalsIgnoreCase("AND")) { System.out.println("Here"); andQuery.put("$and", obj); } else { andQuery.put("$or", obj); } queryLabel.setText("<html><p>" + andQuery.toString() + "</p></html>"); List<DBObject> outputMyList = new ArrayList<DBObject>(); DBCursor cursor = collUser.find(andQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } resultTable.setModel(dtm); String header[] = new String[] { "U_ID", "User Name", "Yelping Since", "Avg Stars", "Review Count" }; // add header in table model dtm.setColumnIdentifiers(header); for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("user_id"); row[1] = temp.get("name"); row[2] = temp.get("yelping_since"); row[3] = temp.get("average_stars"); row[4] = temp.get("review_count"); dtm.addRow(row); } } catch (Exception e) { } } else { queryLabel.setText("Please select atleast one category from business"); } } //only cat selected //////////////////////////Business////////////////////////////////////////////////////////// if (finalCat.size() > 0) { DB dbBusiness = mongoClient.getDB("business"); DBCollection collBusiness = dbBusiness.getCollection("business"); if (!fromCheckin.isEmpty() && !fromCheckinHour.isEmpty() && !toCheckin.isEmpty() && !toCheckinHour.isEmpty() && !operationCheckin.isEmpty() && !valueCheckin.isEmpty()) { DB dbCheckin = mongoClient.getDB("checkin"); DBCollection collCheckin = dbCheckin.getCollection("checkin"); if (!fromReview.isEmpty() && !toReview.isEmpty() && !operationStar.isEmpty() && !valueStar.isEmpty() && !operationVote.isEmpty() && !valueVote.isEmpty()) { //////////////////////Category, Checkin and Review/////////////////////////////////////////////////// DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); String fromDate1 = fromReview; String fromdate = fromDate1 + "T00:00:00Z"; String toDate1 = toReview; String todate = toDate1 + "T00:00:00Z"; int starValue = Integer.parseInt(valueStar); int voteValue = Integer.parseInt(valueVote); StringBuffer finalQuery = new StringBuffer(); DB dbReview = mongoClient.getDB("review"); DBCollection collReview = dbReview.getCollection("review"); int j = 0; int l = 0; HashMap<String, Integer> tempCheckin = new HashMap<String, Integer>(); ArrayList<String> finalCheckinBid = new ArrayList<String>(); ArrayList<CheckinDetail> checkinList = new ArrayList<CheckinDetail>(); //System.out.println("I am in checkin box"); String[] arrayDays = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; for (int i = 0; i < arrayDays.length; i++) { if (fromCheckin == arrayDays[i]) { j = i; } else if (toCheckin == arrayDays[i]) { l = i; } } ArrayList<Integer> days = new ArrayList<Integer>(); days.add(j); int temfromday = j; days.add(l); int difference = CheckForDay(fromCheckin, toCheckin); if (difference > 0) { for (int k = 0; k < difference; k++) { j = j + 1; if (j == 7) { j = 0; } days.add(j); } } List<DBObject> categoryIdList = new ArrayList<DBObject>(); for (String t : finalCat) { BasicDBObject whereQueryBusiness = new BasicDBObject(); BasicDBObject fieldsBusiness = new BasicDBObject(); fieldsBusiness.put("business_id", 1); whereQueryBusiness.put("categories", t); DBCursor cursorForBusiness = collBusiness.find(whereQueryBusiness, fieldsBusiness); finalQuery.append(whereQueryBusiness); while (cursorForBusiness.hasNext()) { int i = 1; categoryIdList.add(cursorForBusiness.next()); i++; } } //for FINALCAT List<DBObject> checkinCategoryIdList = new ArrayList<DBObject>(); for (DBObject s : categoryIdList) { //System.out.println(s.get("business_id")); BasicDBObject whereQueryCheckin = new BasicDBObject(); whereQueryCheckin.put("business_id", s.get("business_id")); DBCursor cursorForCheckin = collCheckin.find(whereQueryCheckin); while (cursorForCheckin.hasNext()) { int i = 1; checkinCategoryIdList.add(cursorForCheckin.next()); i++; } } //for DBObject s:categoryIdList for (DBObject u : checkinCategoryIdList) { String full = u.get("checkin_info").toString(); String a = full.replaceAll("[{}]", ""); String[] b = a.split(","); for (int x = 0; x < b.length; x++) { CheckinDetail objCheckin = new CheckinDetail(); String[] c = b[x].split(":"); String d = c[0].replaceAll("[\"]", ""); String[] e = d.split("-"); objCheckin.b_Id = u.get("business_id").toString(); objCheckin.fromTime = Integer.parseInt(e[0].replaceAll("\\s+", "")); objCheckin.checkinDay = Integer.parseInt(e[1].replaceAll("\\s+", "")); objCheckin.CountValue = Integer.parseInt(c[1].replaceAll("\\s+", "")); ; checkinList.add(objCheckin); } } for (CheckinDetail e : checkinList) { for (int f : days) { if ((f == temfromday && temfromday == e.checkinDay && Integer.parseInt(fromCheckinHour) <= e.fromTime) || (f == l && l == e.checkinDay && Integer.parseInt(toCheckinHour) >= e.fromTime) || (f == e.checkinDay && f != temfromday && f != l)) { // System.out.println(e.b_Id); // System.out.println(e.CountValue); if (tempCheckin.containsKey(e.b_Id)) { tempCheckin.put(e.b_Id, tempCheckin.get(e.b_Id) + e.CountValue); } else { tempCheckin.put(e.b_Id, e.CountValue); } } } } Iterator itr = tempCheckin.entrySet().iterator(); while (itr.hasNext()) { Map.Entry entry = (Map.Entry) itr.next(); if ((operationCheckin.contains("="))) { if (entry.getValue() == valueCheckin) { finalCheckinBid.add(entry.getKey().toString()); } } if ((operationCheckin.contains("<"))) { if (Integer.parseInt(entry.getValue().toString()) < Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in <"); } } if ((operationCheckin.contains(">"))) { if (Integer.parseInt(entry.getValue().toString()) > Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in >"); } } } //abhi tak ki bid is in finalCheckinBid // for(String a :finalCheckinBid){ // System.out.println(a); // } finalQuery.append( "Stage{name='$match', value=Or Filter{filters=[Operator Filter{fieldName='checkin_info.2-3', operator='$exists', value=BsonBoolean{value=true}}, Operator Filter{fieldName='checkin_info.2-4', operator='$exists', value=BsonBoolean{value=true}}]}}\n" + "Document{{$group=Document{{_id=$business_id, total1=Document{{$sum=$checkin_info.2-4}}, total2=Document{{$sum=$checkin_info.2-3}}}}}}\n" + "Stage{name='$match', value=Operator Filter{fieldName='totalCheckins', operator='$gt', value=4}}"); try { List<Object> reviewCategoryIdList = new ArrayList<Object>(); DBObject match = new BasicDBObject("$match", new BasicDBObject("date", new BasicDBObject("$gt", format.parse(fromdate)) .append("$lt", format.parse(todate)))); DBObject groupFields = new BasicDBObject("_id", "$business_id"); groupFields.put("total1", new BasicDBObject("$sum", "$votes.funny")); groupFields.put("total2", new BasicDBObject("$sum", "$votes.useful")); groupFields.put("total3", new BasicDBObject("$sum", "$votes.cool")); groupFields.put("totalStars", new BasicDBObject("$sum", "$stars")); DBObject group = new BasicDBObject("$group", groupFields); DBObject fields = new BasicDBObject("_id", 1); BasicDBList addFields = new BasicDBList(); addFields.add("$total1"); addFields.add("$total2"); addFields.add("$total3"); fields.put("totalVotes", new BasicDBObject("$sum", addFields)); fields.put("totalStars", 1); DBObject project = new BasicDBObject("$project", fields); BasicDBObject votes = null; BasicDBObject stars = null; if (operationStar.equals(">")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$gt", starValue)); } if (operationStar.equals("<")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$lt", starValue)); } if (operationStar.equals("=")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$eq", starValue)); } if (operationVote.equals(">")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$gt", voteValue)); } if (operationVote.equals("<")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$lt", voteValue)); } if (operationVote.equals("=")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$eq", voteValue)); } List<BasicDBObject> list1 = new ArrayList<BasicDBObject>(); list1.add(new BasicDBObject(votes)); list1.add(new BasicDBObject(stars)); DBObject votesnStars = new BasicDBObject("$and", list1); DBObject match2 = new BasicDBObject("$match", votesnStars); AggregationOutput cursorForReview = collReview.aggregate(match, group, project, match2); String query33 = match + "\n" + group + "\n" + project + "\n" + match2; finalQuery.append(query33); Iterable<DBObject> list = cursorForReview.results(); Iterator<DBObject> resultSet1 = list.iterator(); while (resultSet1.hasNext()) { // System.out.println(resultSet1.next().get("_id")); reviewCategoryIdList.add(resultSet1.next().get("_id")); } // System.out.println(reviewCategoryIdList.size()); // System.out.println(finalCheckinBid.size()); reviewCategoryIdList.retainAll(finalCheckinBid); // System.out.println(reviewCategoryIdList.size()); // for (Object s : reviewCategoryIdList) { // System.out.println(s.toString()); // } if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address.equalsIgnoreCase( "6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQuery.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); reviewCategoryIdList.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } List<DBObject> outputMyList = new ArrayList<DBObject>(); BasicDBObject whereQuery = new BasicDBObject(); for (Object fianlBid2 : reviewCategoryIdList) { // System.out.println(fianlBid2); whereQuery.put("business_id", fianlBid2.toString()); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } } queryLabel.setText("<html><p>" + finalQuery + "</p></html>"); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } } catch (Exception e) { } } //review if ///////////////////////////////Category and Checkin/////////////////////////////// else {//Check in with cat not review int j = 0; int l = 0; HashMap<String, Integer> tempCheckin = new HashMap<String, Integer>(); ArrayList<String> finalCheckinBid = new ArrayList<String>(); StringBuffer finalQueryCatCheck = new StringBuffer(); ArrayList<CheckinDetail> checkinList = new ArrayList<CheckinDetail>(); //System.out.println("I am in checkin box"); String[] arrayDays = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; for (int i = 0; i < arrayDays.length; i++) { if (fromCheckin == arrayDays[i]) { j = i; } else if (toCheckin == arrayDays[i]) { l = i; } } ArrayList<Integer> days = new ArrayList<Integer>(); days.add(j); int temfromday = j; days.add(l); // System.out.println("Input Data "+j+" "+fromCheckinHour+" "+toCheckin+" "+toCheckinHour+" "+ // operationCheckin+" "+valueCheckin); // System.out.println(j); int difference = CheckForDay(fromCheckin, toCheckin); if (difference > 0) { for (int k = 0; k < difference; k++) { j = j + 1; if (j == 7) { j = 0; } days.add(j); } } // for(int q:days){ // System.out.println(q); // } List<DBObject> categoryIdList = new ArrayList<DBObject>(); for (String t : finalCat) { BasicDBObject whereQueryBusiness = new BasicDBObject(); BasicDBObject fieldsBusiness = new BasicDBObject(); fieldsBusiness.put("business_id", 1); whereQueryBusiness.put("categories", t); DBCursor cursorForBusiness = collBusiness.find(whereQueryBusiness, fieldsBusiness); finalQueryCatCheck.append(whereQueryBusiness); while (cursorForBusiness.hasNext()) { int i = 1; categoryIdList.add(cursorForBusiness.next()); i++; } } //for FINALCAT List<DBObject> checkinCategoryIdList = new ArrayList<DBObject>(); for (DBObject s : categoryIdList) { //System.out.println(s.get("business_id")); BasicDBObject whereQueryCheckin = new BasicDBObject(); whereQueryCheckin.put("business_id", s.get("business_id")); DBCursor cursorForCheckin = collCheckin.find(whereQueryCheckin); while (cursorForCheckin.hasNext()) { int i = 1; checkinCategoryIdList.add(cursorForCheckin.next()); i++; } } //for DBObject s:categoryIdList for (DBObject u : checkinCategoryIdList) { // System.out.println(s.get("business_id")); // System.out.println(u.get("checkin_info").toString()); String full = u.get("checkin_info").toString(); String a = full.replaceAll("[{}]", ""); String[] b = a.split(","); for (int x = 0; x < b.length; x++) { CheckinDetail objCheckin = new CheckinDetail(); String[] c = b[x].split(":"); String d = c[0].replaceAll("[\"]", ""); String[] e = d.split("-"); objCheckin.b_Id = u.get("business_id").toString(); // System.out.println(u.get("business_id").toString()); // System.out.println(e[0]);//from time objCheckin.fromTime = Integer.parseInt(e[0].replaceAll("\\s+", "")); // System.out.println(e[1]);//day objCheckin.checkinDay = Integer.parseInt(e[1].replaceAll("\\s+", "")); // System.out.println(c[1]);//value objCheckin.CountValue = Integer.parseInt(c[1].replaceAll("\\s+", "")); ; checkinList.add(objCheckin); //System.out.println(checkinList.size()); } } for (CheckinDetail e : checkinList) { for (int f : days) { if ((f == temfromday && temfromday == e.checkinDay && Integer.parseInt(fromCheckinHour) <= e.fromTime) || (f == l && l == e.checkinDay && Integer.parseInt(toCheckinHour) >= e.fromTime) || (f == e.checkinDay && f != temfromday && f != l)) { // System.out.println(e.b_Id); // System.out.println(e.CountValue); if (tempCheckin.containsKey(e.b_Id)) { tempCheckin.put(e.b_Id, tempCheckin.get(e.b_Id) + e.CountValue); } else { tempCheckin.put(e.b_Id, e.CountValue); } } } } Iterator itr = tempCheckin.entrySet().iterator(); while (itr.hasNext()) { Map.Entry entry = (Map.Entry) itr.next(); if ((operationCheckin.contains("="))) { if (entry.getValue() == valueCheckin) { finalCheckinBid.add(entry.getKey().toString()); } } if ((operationCheckin.contains("<"))) { if (Integer.parseInt(entry.getValue().toString()) < Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in <"); } } if ((operationCheckin.contains(">"))) { if (Integer.parseInt(entry.getValue().toString()) > Integer.parseInt(valueCheckin)) { finalCheckinBid.add(entry.getKey().toString()); //System.out.println("in >"); } } // } finalQueryCatCheck.append( "Stage{name='$match', value=Or Filter{filters=[Operator Filter{fieldName='checkin_info.2-3', operator='$exists', value=BsonBoolean{value=true}}, Operator Filter{fieldName='checkin_info.2-4', operator='$exists', value=BsonBoolean{value=true}}]}}\n" + "Document{{$group=Document{{_id=$business_id, total1=Document{{$sum=$checkin_info.2-4}}, total2=Document{{$sum=$checkin_info.2-3}}}}}}\n" + "Stage{name='$match', value=Operator Filter{fieldName='totalCheckins', operator='$gt', value=4}}"); if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address .equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQueryCatCheck.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); finalCheckinBid.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } resultTable.setModel(dtm); queryLabel.setText("<html><p>" + finalQueryCatCheck.toString() + "</p></html>"); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); List<DBObject> outputMyList = new ArrayList<DBObject>(); BasicDBObject whereQuery = new BasicDBObject(); for (String fianlBid2 : finalCheckinBid) { whereQuery.put("business_id", fianlBid2); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { int i = 1; //System.out.println(cursor.next()); outputMyList.add(cursor.next()); i++; } } for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } // } } //else with no review } //if for entire checkin check else {//only cat /////////////////////////////////////////Cat N Review///////////////////////////////////////////////////////////////////// if (!fromReview.isEmpty() && !toReview.isEmpty() && !operationStar.isEmpty() && !valueStar.isEmpty() && !operationVote.isEmpty() && !valueVote.isEmpty()) { StringBuffer finalQueryCatReview = new StringBuffer(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); String fromDate1 = fromReview; String fromdate = fromDate1 + "T00:00:00Z"; String toDate1 = toReview; String todate = toDate1 + "T00:00:00Z"; int starValue = Integer.parseInt(valueStar); //int voteValue = 4; int voteValue = Integer.parseInt(valueVote); DB dbReview = mongoClient.getDB("review"); DBCollection collReview = dbReview.getCollection("review"); //abhi tak ki bid is in finalCheckinBid // for(String a :finalCheckinBid){ // System.out.println(a); // } try { List<Object> finalCatBid = new ArrayList<Object>(); List<Object> reviewCategoryIdList = new ArrayList<Object>(); for (String a : finalCat) { BasicDBObject whereQueryBusinessReview = new BasicDBObject(); //System.out.println(a); whereQueryBusinessReview.put("categories", a); DBCursor cursor = collBusiness.find(whereQueryBusinessReview); finalQueryCatReview.append(whereQueryBusinessReview); while (cursor.hasNext()) { int i = 1; //System.out.println(cursor.next()); finalCatBid.add(cursor.next().get("business_id")); i++; } } DBObject match = new BasicDBObject("$match", new BasicDBObject("date", new BasicDBObject("$gt", format.parse(fromdate)) .append("$lt", format.parse(todate)))); DBObject groupFields = new BasicDBObject("_id", "$business_id"); groupFields.put("total1", new BasicDBObject("$sum", "$votes.funny")); groupFields.put("total2", new BasicDBObject("$sum", "$votes.useful")); groupFields.put("total3", new BasicDBObject("$sum", "$votes.cool")); groupFields.put("totalStars", new BasicDBObject("$sum", "$stars")); DBObject group = new BasicDBObject("$group", groupFields); DBObject fields = new BasicDBObject("_id", 1); BasicDBList addFields = new BasicDBList(); addFields.add("$total1"); addFields.add("$total2"); addFields.add("$total3"); fields.put("totalVotes", new BasicDBObject("$sum", addFields)); fields.put("totalStars", 1); DBObject project = new BasicDBObject("$project", fields); BasicDBObject votes = null; BasicDBObject stars = null; if (operationStar.equals(">")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$gt", starValue)); } if (operationStar.equals("<")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$lt", starValue)); } if (operationStar.equals("=")) { stars = new BasicDBObject("totalStars", new BasicDBObject("$eq", starValue)); } if (operationVote.equals(">")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$gt", voteValue)); } if (operationVote.equals("<")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$lt", voteValue)); } if (operationVote.equals("=")) { votes = new BasicDBObject("totalVotes", new BasicDBObject("$eq", voteValue)); } List<BasicDBObject> list1 = new ArrayList<BasicDBObject>(); list1.add(new BasicDBObject(votes)); list1.add(new BasicDBObject(stars)); DBObject votesnStars = new BasicDBObject("$and", list1); DBObject match2 = new BasicDBObject("$match", votesnStars); AggregationOutput cursorForReview = collReview.aggregate(match, group, project, match2); String query33 = match + "\n" + group + "\n" + project + "\n" + match2; finalQueryCatReview.append(query33); Iterable<DBObject> list = cursorForReview.results(); Iterator<DBObject> resultSet1 = list.iterator(); while (resultSet1.hasNext()) { // System.out.println(resultSet1.next().get("_id")); reviewCategoryIdList.add(resultSet1.next().get("_id")); } //System.out.println(reviewCategoryIdList.size()); //System.out.println(finalCatBid.size()); reviewCategoryIdList.retainAll(finalCatBid); //System.out.println(reviewCategoryIdList.size()); // for (Object s : reviewCategoryIdList) { // System.out.println(s.toString()); // } if (!Address.isEmpty() && !proximity.isEmpty()) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address.equalsIgnoreCase( "6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } List<String> pointInterest = new ArrayList<String>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); DBCursor cursorForBusiness = collBusiness.find(query); finalQueryCatReview.append(query); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next().get("business_id").toString()); } // System.out.println(pointInterest.size()); // System.out.println(reviewCategoryIdList.size()); reviewCategoryIdList.retainAll(pointInterest); // System.out.println(reviewCategoryIdList.size()); } queryLabel.setText("<html><p>" + finalQueryCatReview.toString() + "</p></html>"); resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars" }; // add header in table model dtm.setColumnIdentifiers(header); List<DBObject> outputMyList = new ArrayList<DBObject>(); for (Object fianlBid2 : reviewCategoryIdList) { BasicDBObject whereQuery = new BasicDBObject(); // System.out.println(fianlBid2); whereQuery.put("business_id", fianlBid2.toString()); DBCursor cursor = collBusiness.find(whereQuery); while (cursor.hasNext()) { //System.out.println(cursor.next()); outputMyList.add(cursor.next()); } } for (DBObject temp : outputMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[5]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); dtm.addRow(row); } } catch (Exception e) { } } //////////////////////////////////////Only Category //////////////////////////////////////////// else { resultTable.setModel(dtm); String header[] = new String[] { "B_ID", "Business", "City", "State", "Stars", "Category" }; // add header in table model dtm.setColumnIdentifiers(header); StringBuffer catOnly = new StringBuffer(); if (!Address.isEmpty() && !proximity.isEmpty() && finalCat.size() > 0) { if (Address.contains("3799 S Las Vegas Blvd Eastside Las Vegas, NV 89119")) { longitude = -115.16768879999999; latitude = 36.103017899999998; } if (Address .equalsIgnoreCase("6002 S Durango Dr Ste 100 Spring Valley Las Vegas, NV 89113")) { longitude = -115.27906539999999; latitude = 36.079256100000002; } if (Address.equalsIgnoreCase("1801 E Baseline Rd, #101 Ste 101 Tempe, AZ 85283")) { longitude = -111.90860979259; latitude = 33.377052104372098; } if (Address.equalsIgnoreCase("1033 S Park St Bay Creek Madison, WI 53715")) { longitude = -89.397478300000003; latitude = 43.055539400000001; } if (Address.equalsIgnoreCase("University Center II Lot Phoenix, AZ 85008")) { longitude = -112.02540759999999; latitude = 33.451857400000002; } //BasicDBList category = new BasicDBList(); for (String a : finalCat) { BasicDBObject andQuery = new BasicDBObject(); List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); List<DBObject> pointInterest = new ArrayList<DBObject>(); BasicDBList geoCoord = new BasicDBList(); geoCoord.add(longitude); geoCoord.add(latitude); BasicDBList geoParams = new BasicDBList(); geoParams.add(geoCoord); geoParams.add(Integer.parseInt(proximity) / 1018.59); BasicDBObject query = new BasicDBObject("loc", new BasicDBObject("$geoWithin", new BasicDBObject("$center", geoParams))); obj.add(query); obj.add(new BasicDBObject("categories", a)); andQuery.put("$and", obj); System.out.println(andQuery); DBCursor cursorForBusiness = collBusiness.find(andQuery); catOnly.append(andQuery); while (cursorForBusiness.hasNext()) { pointInterest.add(cursorForBusiness.next()); } for (DBObject temp : pointInterest) { Object[] row = new Object[6]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); row[5] = a; dtm.addRow(row); } } } else { List<DBObject> testMyList = new ArrayList<DBObject>(); for (String a : finalCat) { BasicDBObject whereQuery = new BasicDBObject(); //System.out.println(a); whereQuery.put("categories", a); DBCursor cursor = collBusiness.find(whereQuery); catOnly.append(whereQuery); while (cursor.hasNext()) { testMyList.add(cursor.next()); } for (DBObject temp : testMyList) { //System.out.println("Business Name : " + temp.get("name") + " Category : " + temp.get("categories")); Object[] row = new Object[6]; row[0] = temp.get("business_id"); row[1] = temp.get("name"); row[2] = temp.get("city"); row[3] = temp.get("state"); row[4] = temp.get("stars"); row[5] = a; dtm.addRow(row); } } } queryLabel.setText("<html><p>" + catOnly.toString() + "</p></html>"); } } //else } //cat and subCat is selected }