List of usage examples for org.joda.time Seconds secondsIn
public static Seconds secondsIn(ReadableInterval interval)
Seconds
representing the number of whole seconds in the specified interval. From source file:com.cisco.dvbu.ps.utils.date.DateDiffTimestamp.java
License:Open Source License
/** * Called to invoke the stored procedure. Will only be called a * single time per instance. Can throw CustomProcedureException or * SQLException if there is an error during invoke. */// w w w . java 2s . co m public void invoke(Object[] inputValues) throws CustomProcedureException, SQLException { Timestamp startTimestamp = null; Timestamp endTimestamp = null; Calendar startCal = null; Calendar endCal = null; DateTime startDateTime = null; DateTime endDateTime = null; String datePart = null; long dateLength = 0; try { result = null; if (inputValues[0] == null) { result = new Long(dateLength); return; } if (inputValues[1] == null) { result = new Long(dateLength); return; } if (inputValues[2] == null) { result = new Long(dateLength); return; } datePart = (String) inputValues[0]; startTimestamp = (Timestamp) inputValues[1]; // long startMilliseconds = startTimestamp.getTime() + // (startTimestamp.getNanos() / 1000000); long startMilliseconds = startTimestamp.getTime() + (startTimestamp.getNanos() % 1000000L >= 500000L ? 1 : 0); startCal = Calendar.getInstance(); startCal.setTimeInMillis(startMilliseconds); endTimestamp = (Timestamp) inputValues[2]; // long endMilliseconds = endTimestamp.getTime() + // (endTimestamp.getNanos() / 1000000); long endMilliseconds = endTimestamp.getTime() + (endTimestamp.getNanos() % 1000000L >= 500000L ? 1 : 0); endCal = Calendar.getInstance(); endCal.setTimeInMillis(endMilliseconds); startDateTime = new DateTime(startCal.get(Calendar.YEAR), startCal.get(Calendar.MONTH) + 1, startCal.get(Calendar.DAY_OF_MONTH), startCal.get(Calendar.HOUR_OF_DAY), startCal.get(Calendar.MINUTE), startCal.get(Calendar.SECOND), startCal.get(Calendar.MILLISECOND)); endDateTime = new DateTime(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH) + 1, endCal.get(Calendar.DAY_OF_MONTH), endCal.get(Calendar.HOUR_OF_DAY), endCal.get(Calendar.MINUTE), endCal.get(Calendar.SECOND), endCal.get(Calendar.MILLISECOND)); Interval interval = new Interval(startDateTime, endDateTime); if (datePart.equalsIgnoreCase("second") || datePart.equalsIgnoreCase("ss")) { Seconds seconds = Seconds.secondsIn(interval); dateLength = seconds.getSeconds(); } else if (datePart.equalsIgnoreCase("minute") || datePart.equalsIgnoreCase("mi")) { Minutes minutes = Minutes.minutesIn(interval); dateLength = minutes.getMinutes(); } else if (datePart.equalsIgnoreCase("hour") || datePart.equalsIgnoreCase("hh")) { Hours hours = Hours.hoursIn(interval); dateLength = hours.getHours(); } else if (datePart.equalsIgnoreCase("day") || datePart.equalsIgnoreCase("dd")) { Days days = Days.daysIn(interval); dateLength = days.getDays(); } else if (datePart.equalsIgnoreCase("week") || datePart.equalsIgnoreCase("wk")) { Weeks weeks = Weeks.weeksIn(interval); dateLength = weeks.getWeeks(); } else if (datePart.equalsIgnoreCase("month") || datePart.equalsIgnoreCase("mm")) { Months months = Months.monthsIn(interval); dateLength = months.getMonths(); } else if (datePart.equalsIgnoreCase("year") || datePart.equalsIgnoreCase("yy")) { Years years = Years.yearsIn(interval); dateLength = years.getYears(); } else if (datePart.equalsIgnoreCase("millisecond") || datePart.equalsIgnoreCase("ms")) { dateLength = (endTimestamp.getTime() - startTimestamp.getTime()); // millis } else if (datePart.equalsIgnoreCase("microsecond") || datePart.equalsIgnoreCase("mcs")) { dateLength = ((endTimestamp.getTime() - startTimestamp.getTime()) / 1000) // seconds * 1000000L // micros + (endTimestamp.getNanos() - startTimestamp.getNanos()) / 1000; // nanos/1000 } else if (datePart.equalsIgnoreCase("nanosecond") || datePart.equalsIgnoreCase("ns")) { dateLength = ((endTimestamp.getTime() - startTimestamp.getTime()) / 1000) // seconds * 1000000000L // nanos + (endTimestamp.getNanos() - startTimestamp.getNanos()); // nanos } else { throw new IllegalArgumentException(datePart); } result = new Long(dateLength); } catch (Throwable t) { throw new CustomProcedureException(t); } }
From source file:com.controller.webServices.JsonTopKGroupNextPlaces.java
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); PrintWriter out = response.getWriter(); System.out.println("====== Group Next Places ======== "); JsonObject jsonResult = new JsonObject(); Gson gson = new GsonBuilder().setPrettyPrinting().create(); JsonArray errorArray = new JsonArray(); String date = request.getParameter("date"); String token = request.getParameter("token"); Timestamp ts = null;/*from w ww .jav a2 s .com*/ Timestamp tsBefore = null; Timestamp tsAfter = null; HashMap<String, Integer> finalMap = null; ArrayList<String[]> personCount = null; //validation - date if (date == null) { errorArray.add(new JsonPrimitive("missing date")); } else { try { DateTime ts2 = new DateTime(date); } catch (IllegalArgumentException e) { errorArray.add(new JsonPrimitive("invalid date")); } } //validation - token if (token == null) { errorArray.add(new JsonPrimitive("missing token")); } // } else if (token.equals("")) { // errorArray.add(new JsonPrimitive("blank token")); // } else { // try { // JWTUtility.verify(token, "ylleeg4t8"); // } catch (JWTException e) { // errorArray.add(new JsonPrimitive("invalid token")); // } // } // Validation: Semantic Places String place = request.getParameter("origin"); if (place == null) { errorArray.add(new JsonPrimitive("missing origin")); } else if (place.equals("")) { errorArray.add(new JsonPrimitive("blank origin")); } if (errorArray.size() > 0) { jsonResult.add("message", errorArray); out.println(gson.toJson(jsonResult)); return; } ArrayList<Group> finalGroup = null; if (errorArray.size() == 0) { String date1 = date.substring(0, date.indexOf("T")); String time = date.substring(date.indexOf("T") + 1, date.length()); try { LocalTime after = new LocalTime(Timestamp.valueOf(date1 + " " + time)); int hour = Integer.parseInt(time.substring(0, time.indexOf(":"))); int minute = Integer.parseInt(time.substring(time.indexOf(":") + 1, time.lastIndexOf(":"))); int second = Integer.parseInt(time.substring(time.lastIndexOf(":") + 1, time.length())); if (hour >= 24 || minute >= 60 || second >= 60) { throw new Exception(); } ts = Timestamp.valueOf(date1 + " " + time); tsBefore = new Timestamp(ts.getTime() - 900000); tsAfter = new Timestamp(ts.getTime() + 900000); ArrayList<Group> groupList = new ArrayList<Group>(); finalMap = new HashMap<String, Integer>(); personCount = new ArrayList<String[]>(); AutoGroupDetectController agd = new AutoGroupDetectController(); System.out.println("Group next places: " + tsBefore.toString() + " " + ts.toString()); LocationLookupDAO llDAO = new LocationLookupDAO(); HashMap<String, String> referMap = llDAO.retrieveAll(); ArrayList<Group> firstGroup = agd.getFullGroups(tsBefore.toString(), ts.toString()); // if (firstGroup.size() == 0) { // request.setAttribute("results", personCount); // RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); // rd.forward(request, response); // return; // } System.out.println("List size for group next places: " + firstGroup.size()); ArrayList<Group> midGroup = new ArrayList<Group>(); for (Group g : firstGroup) { String s = referMap.get(g.getLastPlace()); System.out.println(s); if (s.equals(place)) { midGroup.add(g); } } System.out.println("Mid list size for group next places: " + midGroup.size()); finalGroup = agd.getMatchingGroups(ts.toString(), tsAfter.toString(), midGroup); System.out.println("Final list size for group next places: " + finalGroup.size()); LocationLookupDAO lookupDAO = new LocationLookupDAO(); HashMap<String, String> lookupMap = lookupDAO.retrieveAll(); for (Group g : finalGroup) { ArrayList<Interval> groupInterList = new ArrayList<Interval>(); HashMap<Interval, Integer> tempMap = new HashMap<Interval, Integer>(); HashMap<String, ArrayList<Interval>> overlapMap = g.getLocOverlapMap(); for (String s : overlapMap.keySet()) { ArrayList<Interval> interList = overlapMap.get(s); groupInterList.addAll(interList); for (Interval in : interList) { Integer i = Integer.parseInt(s); tempMap.put(in, i); } } Collections.sort(groupInterList, new IntervalEndComparator(groupInterList)); for (Interval in : groupInterList) { if (Seconds.secondsIn(in).getSeconds() >= 300) { Integer i = tempMap.get(in); String semPlace = lookupMap.get(String.valueOf(i)); Integer groupCount = finalMap.get(semPlace); if (groupCount != null) { finalMap.put(semPlace, (groupCount + 1)); } else { finalMap.put(semPlace, 1); } break; } } } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } for (Entry<String, Integer> entry : finalMap.entrySet()) { String[] countArray = new String[] { entry.getKey(), entry.getValue().toString() }; personCount.add(countArray); } Collections.sort(personCount, new ValueComparator(personCount)); jsonResult.addProperty("status", "success"); jsonResult.addProperty("total-groups", finalGroup.size()); jsonResult.addProperty("total-next-place-groups", personCount.size()); JsonArray results = new JsonArray(); for (int i = 0; i < personCount.size(); i++) { String[] arr = personCount.get(i); JsonObject nextPlaceObject = new JsonObject(); nextPlaceObject.addProperty("rank", i + 1); nextPlaceObject.addProperty("semantic-place", arr[0]); nextPlaceObject.addProperty("num-groups", Integer.parseInt(arr[1])); results.add(nextPlaceObject); } jsonResult.add("results", results); out.println(gson.toJson(jsonResult)); // request.setAttribute("results", personCount); // RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); // rd.forward(request, response); } }
From source file:com.sloca.controller.GroupNextPlacesServlet.java
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); PrintWriter out = response.getWriter(); Timestamp ts = null;//from w w w. j a va 2 s. c o m Timestamp tsBefore = null; Timestamp tsAfter = null; HashMap<String, Integer> finalMap = null; ArrayList<String[]> personCount = null; AutoGroupDetectController agd = null; try { String date = request.getParameter("date"); String time = request.getParameter("time"); String k = request.getParameter("kvalue"); String place = request.getParameter("sem"); request.setAttribute("date", date); request.setAttribute("time", time); request.setAttribute("kvalue", k); request.setAttribute("semanticplace", place); String year = date.substring(date.lastIndexOf("-") + 1); String month = date.substring(date.indexOf("-") + 1, date.lastIndexOf("-")); String day = date.substring(0, date.indexOf("-")); String date1 = year + "-" + month + "-" + day; LocationLookupDAO llDAO = new LocationLookupDAO(); HashMap<String, String> referMap = llDAO.retrieveAll(); int hour = Integer.parseInt(time.substring(0, time.indexOf(":"))); int minute = Integer.parseInt(time.substring(time.indexOf(":") + 1, time.lastIndexOf(":"))); int second = Integer.parseInt(time.substring(time.lastIndexOf(":") + 1, time.length())); if (hour >= 24 || minute >= 60 || second >= 60) { throw new Exception(); } ts = Timestamp.valueOf(date1 + " " + time); tsBefore = new Timestamp(ts.getTime() - 900000); tsAfter = new Timestamp(ts.getTime() + 900000); finalMap = new HashMap<String, Integer>(); personCount = new ArrayList<String[]>(); agd = new AutoGroupDetectController(); ArrayList<Group> firstGroup = agd.getFullGroups(tsBefore.toString(), ts.toString()); if (firstGroup.size() == 0) { request.setAttribute("results", personCount); RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); rd.forward(request, response); return; } System.out.println("List size for group next places: " + firstGroup.size()); ArrayList<Group> midGroup = new ArrayList<Group>(); for (Group g : firstGroup) { String s = referMap.get(g.getLastPlace()); System.out.println(s); if (s.equals(place)) { midGroup.add(g); } } System.out.println("Mid list size for group next places: " + midGroup.size()); ArrayList<Group> finalGroup = agd.getMatchingGroups(ts.toString(), tsAfter.toString(), midGroup); System.out.println("Final list size for group next places: " + finalGroup.size()); LocationLookupDAO lookupDAO = new LocationLookupDAO(); HashMap<String, String> lookupMap = lookupDAO.retrieveAll(); for (Group g : finalGroup) { ArrayList<Interval> groupInterList = new ArrayList<Interval>(); HashMap<Interval, Integer> tempMap = new HashMap<Interval, Integer>(); HashMap<String, ArrayList<Interval>> overlapMap = g.getLocOverlapMap(); for (String s : overlapMap.keySet()) { ArrayList<Interval> interList = overlapMap.get(s); groupInterList.addAll(interList); for (Interval in : interList) { Integer i = Integer.parseInt(s); tempMap.put(in, i); } } Collections.sort(groupInterList, new IntervalEndComparator(groupInterList)); for (Interval in : groupInterList) { if (Seconds.secondsIn(in).getSeconds() >= 300) { Integer i = tempMap.get(in); String semPlace = lookupMap.get(String.valueOf(i)); Integer groupCount = finalMap.get(semPlace); if (groupCount != null) { finalMap.put(semPlace, (groupCount + 1)); } else { finalMap.put(semPlace, 1); } break; } } } } catch (IllegalArgumentException e) { request.setAttribute("error", "<b>Error!</b><br>Please enter a valid datetime format."); RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); rd.forward(request, response); return; } catch (Exception e) { request.setAttribute("error", "<b>Oops!</b><br>Something went wrong!"); RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); rd.forward(request, response); return; } for (Entry<String, Integer> entry : finalMap.entrySet()) { String[] countArray = new String[] { entry.getKey(), entry.getValue().toString() }; personCount.add(countArray); } Collections.sort(personCount, new ValueComparator(personCount)); request.setAttribute("results", personCount); RequestDispatcher rd = request.getRequestDispatcher("group_next.jsp"); rd.forward(request, response); }
From source file:com.sloca.controller.NextPlaceServlet.java
/** * Processes requests for both HTTP/*from w ww. j a v a2 s . c o m*/ * <code>GET</code> and * <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String semPlace = request.getParameter("sem"); String date_s = request.getParameter("date"); String time_s = request.getParameter("time"); String k = request.getParameter("kvalue"); request.setAttribute("semanticplace", semPlace); request.setAttribute("date", date_s); request.setAttribute("time", time_s); request.setAttribute("kvalue", k); String year = date_s.substring(date_s.lastIndexOf("-") + 1); String month = date_s.substring(date_s.indexOf("-") + 1, date_s.lastIndexOf("-")); String day = date_s.substring(0, date_s.indexOf("-")); date_s = year + "-" + month + "-" + day; Timestamp ts = Timestamp.valueOf(date_s + " " + time_s); Timestamp tsBefore = getTimeBefore(ts); Timestamp tsAfter = getTimeAfter(ts); int totalUsers = 0; int nextPlaceUsers = 0; conn = ConnectionFactory.getConnection(); String sql = "select temp.mac as mac2 from location t inner join " + "(select mac_address as mac, max(time_stamp) as time from location t " + "where time_stamp between '" + tsBefore + "' and '" + ts + "' " + "group by mac_address) as temp " + "on t.mac_address = temp.mac and t.time_stamp = temp.time " + "inner join location_lookup l on l.location_id = t.location_id where semanticplace = '" + semPlace + "'"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getString(1)); totalUsers++; } pstmt = conn.prepareStatement( "select l2.mac_address as mac, u2.semanticplace, l2.time_stamp from location l2 " + "inner join ((" + sql + ") as temp2), location_lookup u2 " + "where l2.mac_address = temp2.mac2 and u2.location_id = l2.location_id and l2.time_stamp between '" + ts + "' and '" + tsAfter + "' " + "group by l2.mac_address, l2.time_stamp " + "order by l2.mac_address, l2.time_stamp DESC"); rs = pstmt.executeQuery(); String mac = ""; String semanticPlace = ""; DateTime before = null; DateTime after = null; DateTime temp = null; DateTime last = new DateTime(tsAfter.getTime()); boolean alrCount = false; HashMap<String, Integer> placeTime = new HashMap<String, Integer>(); while (rs.next()) { if (mac.equals("") && semanticPlace.equals("")) { System.out.println("firstTime"); mac = rs.getString(1); semanticPlace = rs.getString(2); after = last; temp = new DateTime(rs.getTimestamp(3).getTime()); } else if (!mac.equals(rs.getString(1))) { System.out.println("changeName"); before = temp; Interval in = new Interval(before, after); if (Seconds.secondsIn(in).getSeconds() >= 300 && !alrCount) { Integer timeCount = placeTime.get(semanticPlace); if (timeCount != null) { placeTime.put(semanticPlace, (timeCount + 1)); } else { placeTime.put(semanticPlace, 1); } nextPlaceUsers++; } alrCount = false; mac = rs.getString(1); semanticPlace = rs.getString(2); after = last; before = null; temp = new DateTime(rs.getTimestamp(3).getTime()); } else if (!semanticPlace.equals(rs.getString(2))) { System.out.println("same user changePlace"); before = temp; Interval in = new Interval(before, after); if (Seconds.secondsIn(in).getSeconds() >= 300 && !alrCount) { Integer timeCount = placeTime.get(semanticPlace); if (timeCount != null) { placeTime.put(semanticPlace, (timeCount + 1)); } else { placeTime.put(semanticPlace, 1); } nextPlaceUsers++; alrCount = true; } semanticPlace = rs.getString(2); after = before; before = null; temp = new DateTime(rs.getTimestamp(3).getTime()); } else { System.out.println("nothing changes!"); temp = new DateTime(rs.getTimestamp(3).getTime()); continue; } } before = temp; Interval in = new Interval(before, after); if (Seconds.secondsIn(in).getSeconds() >= 300 && !alrCount) { Integer timeCount = placeTime.get(semanticPlace); if (timeCount != null) { placeTime.put(semanticPlace, (timeCount + 1)); } else { placeTime.put(semanticPlace, 1); } nextPlaceUsers++; } System.out.println(placeTime.size()); SortedSet<Map.Entry<String, Integer>> newSet = entriesSortedByValues(placeTime); request.setAttribute("totalUsers", totalUsers); request.setAttribute("nextPlaceUsers", nextPlaceUsers); request.setAttribute("set", newSet); RequestDispatcher rd = request.getRequestDispatcher("top_k_next_places.jsp"); rd.forward(request, response); } catch (SQLException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { request.setAttribute("error", "<b>Error!</b><br>Please enter a valid datetime format."); RequestDispatcher rd = request.getRequestDispatcher("top_k_next_places.jsp"); rd.forward(request, response); } catch (Exception e) { request.setAttribute("error", "<b>Oops!</b><br> Something went wrong! Please check your input fields!"); RequestDispatcher rd = request.getRequestDispatcher("top_k_next_places.jsp"); rd.forward(request, response); } finally { try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } if (out != null) { out.close(); } } catch (SQLException ex) { Logger.getLogger(NextPlaceServlet.class.getName()).log(Level.SEVERE, null, ex); } } }
From source file:com.sloca.entity.Group.java
/** * Compare the overlap time/*from w w w .jav a 2 s .c om*/ * @param other the group to compare * @return -1 if not overlap, otherwise return fullCount */ public int compareOverlap(Group other) { int fullCount = 0; ArrayList<Interval> intervalList = new ArrayList<Interval>(); for (String s : getLocOverlapMap().keySet()) { ArrayList<Interval> firstList = getLocOverlapMap().get(s); ArrayList<Interval> secondList = other.getLocOverlapMap().get(s); for (Interval first : firstList) { for (Interval second : secondList) { Interval overlap = first.overlap(second); if (overlap != null) { Seconds seconds = Seconds.secondsIn(overlap); int secs = seconds.getSeconds(); fullCount = fullCount + secs; intervalList.add(overlap); } } } } if (fullCount >= 720) { return fullCount; } else { return -1; } }
From source file:org.sleuthkit.autopsy.timeline.utils.RangeDivisionInfo.java
License:Open Source License
/** * Static factory method.//from w w w. j a v a 2 s . co m * * Determine the period size, number of periods, whole period bounds, and * formatters to use to visualize the given timerange. * * @param timeRange * * @return */ public static RangeDivisionInfo getRangeDivisionInfo(Interval timeRange) { //Check from largest to smallest unit //TODO: make this more generic... reduce code duplication -jm DateTimeFieldType timeUnit; final DateTime startWithZone = timeRange.getStart().withZone(TimeLineController.getJodaTimeZone()); final DateTime endWithZone = timeRange.getEnd().withZone(TimeLineController.getJodaTimeZone()); if (Years.yearsIn(timeRange).isGreaterThan(Years.THREE)) { timeUnit = DateTimeFieldType.year(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Years.yearsIn(timeRange).get(timeUnit.getDurationType()) + 1, TimeUnits.YEARS, ISODateTimeFormat.year(), lower, upper); } else if (Months.monthsIn(timeRange).isGreaterThan(Months.THREE)) { timeUnit = DateTimeFieldType.monthOfYear(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Months.monthsIn(timeRange).getMonths() + 1, TimeUnits.MONTHS, DateTimeFormat.forPattern("YYYY'-'MMMM"), lower, upper); // NON-NLS } else if (Days.daysIn(timeRange).isGreaterThan(Days.THREE)) { timeUnit = DateTimeFieldType.dayOfMonth(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Days.daysIn(timeRange).getDays() + 1, TimeUnits.DAYS, DateTimeFormat.forPattern("YYYY'-'MMMM'-'dd"), lower, upper); // NON-NLS } else if (Hours.hoursIn(timeRange).isGreaterThan(Hours.THREE)) { timeUnit = DateTimeFieldType.hourOfDay(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Hours.hoursIn(timeRange).getHours() + 1, TimeUnits.HOURS, DateTimeFormat.forPattern("YYYY'-'MMMM'-'dd HH"), lower, upper); // NON-NLS } else if (Minutes.minutesIn(timeRange).isGreaterThan(Minutes.THREE)) { timeUnit = DateTimeFieldType.minuteOfHour(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Minutes.minutesIn(timeRange).getMinutes() + 1, TimeUnits.MINUTES, DateTimeFormat.forPattern("YYYY'-'MMMM'-'dd HH':'mm"), lower, upper); // NON-NLS } else { timeUnit = DateTimeFieldType.secondOfMinute(); long lower = startWithZone.property(timeUnit).roundFloorCopy().getMillis(); long upper = endWithZone.property(timeUnit).roundCeilingCopy().getMillis(); return new RangeDivisionInfo(timeRange, Seconds.secondsIn(timeRange).getSeconds() + 1, TimeUnits.SECONDS, DateTimeFormat.forPattern("YYYY'-'MMMM'-'dd HH':'mm':'ss"), lower, upper); // NON-NLS } }