List of usage examples for org.joda.time DateTime withTimeAtStartOfDay
public DateTime withTimeAtStartOfDay()
From source file:com.ro.ssc.app.client.utils.Utils.java
public static Map<Pair<DateTime, DateTime>, List<Pair<Event, Event>>> splitPerDay(LocalTime time, List<Event> events, DateTime iniDate, DateTime endDate) { Map<Pair<DateTime, DateTime>, List<Pair<Event, Event>>> result = new LinkedHashMap<>(); List<Pair<Event, Event>> pairedEvents = new LinkedList<>(); List<Pair<Event, Event>> perDayList = new LinkedList<>(); List<Pair<Event, Event>> additionalList = new LinkedList<>(); if (!events.isEmpty()) { pairedEvents = Seq.seq(events.iterator()).window() .filter(w -> w.lead().isPresent() && w.value().getAddr().contains("In")) .map(w -> new Pair<>(w.value(), w.lead().get())) // alternatively, use your new Pair() class .toList();// w w w.j a v a 2s . c o m for (DateTime date = iniDate.withTimeAtStartOfDay(); date .isBefore(endDate.plusDays(1).withTimeAtStartOfDay()); date = date.plusDays(1)) { final DateTime dd = date; perDayList = pairedEvents.stream() .filter(o -> o.getKey().getEventDateTime().withTimeAtStartOfDay().isEqual(dd)) .collect(Collectors.toList()); perDayList.removeAll(additionalList); additionalList.clear(); if (!perDayList.isEmpty()) { final DateTime evt = perDayList.get(perDayList.size() - 1).getValue().getEventDateTime(); if (evt.isAfter(date.plusDays(1))) { additionalList = pairedEvents.stream() .filter(o -> o.getValue().getEventDateTime().isAfter(evt) && o.getValue().getEventDateTime() .isBefore(dd.plusDays(1).plusHours(time.getHour()) .plusMinutes(time.getMinute()))) .collect(Collectors.toList()); perDayList.addAll(additionalList); if (!additionalList.isEmpty()) { result.put( new Pair(perDayList.get(0).getKey().getEventDateTime(), additionalList .get(additionalList.size() - 1).getValue().getEventDateTime()), perDayList); } else { result.put( new Pair(perDayList.get(0).getKey().getEventDateTime(), perDayList.get(perDayList.size() - 1).getValue().getEventDateTime()), perDayList); } } else { result.put( new Pair(perDayList.get(0).getKey().getEventDateTime(), perDayList.get(perDayList.size() - 1).getValue().getEventDateTime()), perDayList); } } } } return result; }
From source file:com.ro.ssc.app.client.utils.Utils.java
public static Map<DateTime, List<Event>> splitPerDayWrong(LocalTime time, List<Event> events, DateTime iniDate, DateTime endDate) {/* w w w . j a va 2 s.c om*/ Map<DateTime, List<Event>> result = new LinkedHashMap<>(); List<Event> perDayList = new LinkedList<>(); if (!events.isEmpty()) { for (DateTime date = iniDate.withTimeAtStartOfDay(); date .isBefore(endDate.plusDays(1).withTimeAtStartOfDay()); date = date.plusDays(1)) { final DateTime dd = date; perDayList = events.stream().filter(o -> o.getEventDateTime().withTimeAtStartOfDay().isEqual(dd)) .collect(Collectors.toList()); result.put(dd, perDayList); } } return result; }
From source file:com.sonicle.webtop.calendar.bol.ORecurrence.java
License:Open Source License
public void set(Recur recur, LocalDate recurStartDate, DateTime eventStartDate, DateTime eventEndDate, DateTimeZone eventTimezone) {/*from w w w .j a v a 2s . c o m*/ DateTime newStart = (recurStartDate != null) ? recurStartDate.toDateTimeAtStartOfDay(eventTimezone) : eventStartDate; setStartDate(newStart); if (ICal4jUtils.recurHasCount(recur)) { DateTime untilDate = ICal4jUtils.calculateRecurrenceEnd(recur, newStart, eventTimezone); setUntilDate(untilDate.withTimeAtStartOfDay().plusDays(1)); } else if (ICal4jUtils.recurHasUntilDate(recur)) { DateTime untilDate = ICal4jUtils.toJodaDateTime(recur.getUntil(), DateTimeZone.UTC) .withZone(eventTimezone); setUntilDate(untilDate.withTimeAtStartOfDay().plusDays(1)); } else { setUntilDate(ICal4jUtils.ifiniteDate(eventTimezone)); } setRule(recur.toString()); }
From source file:com.sonicle.webtop.calendar.bol.ORecurrence.java
License:Open Source License
@Deprecated public RRule __applyEndUntil(DateTime untilDate, DateTimeZone etz, boolean setRule) { RRule rr = null;//from w ww. ja v a 2 s . c o m setRepeat(null); setPermanent(false); setUntilDate(untilDate.withTimeAtStartOfDay()); rr = buildRRule(etz); if (setRule) setRule(rr.getValue()); return rr; }
From source file:com.sonicle.webtop.calendar.CalendarManager.java
License:Open Source License
@Override public List<SchedEventInstance> listUpcomingEventInstances(Collection<Integer> calendarIds, DateTime now, int days, Condition<EventQuery> conditionPredicate, DateTimeZone targetTimezone) throws WTException { if (days > 15) days = 15;//from w w w.j a v a2 s . c om DateTimeRange range = new DateTimeRange( now.withSecondOfMinute(0).withMillisOfSecond(0).withZone(targetTimezone), now.withTimeAtStartOfDay().plusDays(days)); return listEventInstances(calendarIds, range, conditionPredicate, targetTimezone, true); }
From source file:com.sonicle.webtop.calendar.CalendarManager.java
License:Open Source License
public List<BaseReminder> getRemindersToBeNotified(DateTime now) { EventDAO evtDao = EventDAO.getInstance(); Connection con = null;// w ww .ja va 2 s . c o m ensureSysAdmin(); ArrayList<VExpEventInstance> evtInstCandidates = new ArrayList<>(); logger.trace("Analyzing event instances..."); try { final DateTime from = now.withTimeAtStartOfDay(); con = WT.getConnection(SERVICE_ID, false); for (VExpEventInstance evtInst : doEventGetExpiredForUpdate(con, from, from.plusDays(7 * 2 + 1))) { final DateTime remindOn = evtInst.getStartDate().withZone(DateTimeZone.UTC) .minusMinutes(evtInst.getReminder()); if (now.compareTo(remindOn) < 0) continue; // If instance should have been reminded in past... if (evtInst.getRemindedOn() != null) { // Only recurring event instances should pass here, classic events are already excluded by the db query if (evtInst.getRecurrenceId() == null) throw new WTException("This should never happen (famous last words)"); final DateTime lastRemindedOn = evtInst.getRemindedOn().withZone(DateTimeZone.UTC); if (remindOn.compareTo(lastRemindedOn) <= 0) continue; // If instance should have been reminded after last remind... } int ret = evtDao.updateRemindedOn(con, evtInst.getEventId(), now); evtInstCandidates.add(evtInst); } DbUtils.commitQuietly(con); } catch (SQLException | DAOException | WTException ex) { DbUtils.rollbackQuietly(con); logger.error("Error collecting instances", ex); } finally { DbUtils.closeQuietly(con); } logger.debug("Found {} instances to be reminded", evtInstCandidates.size()); ArrayList<BaseReminder> alerts = new ArrayList<>(); HashMap<UserProfileId, Boolean> byEmailCache = new HashMap<>(); logger.trace("Preparing alerts..."); for (VExpEventInstance evtInst : evtInstCandidates) { logger.debug("Working on instance [{}, {}]", evtInst.getEventId(), evtInst.getStartDate()); if (!byEmailCache.containsKey(evtInst.getCalendarProfileId())) { CalendarUserSettings cus = new CalendarUserSettings(SERVICE_ID, evtInst.getCalendarProfileId()); boolean bool = cus.getEventReminderDelivery() .equals(CalendarSettings.EVENT_REMINDER_DELIVERY_EMAIL); byEmailCache.put(evtInst.getCalendarProfileId(), bool); } if (byEmailCache.get(evtInst.getCalendarProfileId())) { UserProfile.Data ud = WT.getUserData(evtInst.getCalendarProfileId()); CoreUserSettings cus = new CoreUserSettings(evtInst.getCalendarProfileId()); try { EventInstance eventInstance = getEventInstance(evtInst.getKey()); alerts.add(createEventReminderAlertEmail(ud.getLocale(), cus.getShortDateFormat(), cus.getShortTimeFormat(), ud.getPersonalEmailAddress(), evtInst.getCalendarProfileId(), eventInstance)); } catch (WTException ex) { logger.error("Error preparing email", ex); } } else { alerts.add(createEventReminderAlertWeb(evtInst)); } } //FIXME: remove this when zpush is using manager methods sendInvitationForZPushEvents(); // ---------------------------- return alerts; }
From source file:com.sonicle.webtop.calendar.Service.java
License:Open Source License
public void processPrintScheduler(HttpServletRequest request, HttpServletResponse response) { ByteArrayOutputStream baos = null; UserProfile up = getEnv().getProfile(); try {// w ww . j a v a 2s . c om String filename = ServletUtils.getStringParameter(request, "filename", "print"); String view = ServletUtils.getStringParameter(request, "view", "w5"); String from = ServletUtils.getStringParameter(request, "startDate", true); DateTime startDate = DateTimeUtils.parseYmdHmsWithZone(from, "00:00:00", up.getTimeZone()); ReportConfig.Builder builder = reportConfigBuilder(); DateTime fromDate = null, toDate = null; AbstractAgenda rpt = null; if (view.equals("d")) { fromDate = startDate.withTimeAtStartOfDay(); toDate = startDate.plusDays(1).withTimeAtStartOfDay(); rpt = new RptAgendaSummary(builder.build(), 1); } else if (view.equals("w5")) { fromDate = startDate.withTimeAtStartOfDay(); toDate = startDate.plusDays(5).withTimeAtStartOfDay(); rpt = new RptAgendaWeek5(builder.build()); } else if (view.equals("w")) { fromDate = startDate.withTimeAtStartOfDay(); toDate = startDate.plusDays(7).withTimeAtStartOfDay(); rpt = new RptAgendaWeek7(builder.build()); } else if (view.equals("dw")) { fromDate = startDate.withTimeAtStartOfDay(); toDate = startDate.plusDays(14).withTimeAtStartOfDay(); rpt = new RptAgendaSummary(builder.build(), 14); } else if (view.equals("m")) { if (startDate.getDayOfMonth() == 1) { fromDate = startDate.withTimeAtStartOfDay(); } else { fromDate = startDate.plusMonths(1).withDayOfMonth(1).withTimeAtStartOfDay(); } int days = fromDate.dayOfMonth().getMaximumValue(); toDate = fromDate.plusMonths(1).withDayOfMonth(1).withTimeAtStartOfDay(); rpt = new RptAgendaSummary(builder.build(), days); } else { throw new WTException("View not supported [{0}]", view); } Set<Integer> activeCalIds = getActiveFolderIds(); Map<Integer, Calendar> calendars = folders.entrySet().stream() .filter(map -> activeCalIds.contains(map.getKey())) .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue().getCalendar())); List<SchedEventInstance> instances = manager.listEventInstances(activeCalIds, new DateTimeRange(fromDate, toDate), up.getTimeZone(), true); rpt.setDataSource(manager, fromDate, toDate, up.getTimeZone(), calendars, instances); baos = new ByteArrayOutputStream(); WT.generateReportToStream(rpt, AbstractReport.OutputType.PDF, baos); ServletUtils.setContentDispositionHeader(response, "inline", filename + ".pdf"); ServletUtils.writeContent(response, baos, "application/pdf"); } catch (Exception ex) { logger.error("Error in PrintScheduler", ex); ServletUtils.writeErrorHandlingJs(response, ex.getMessage()); } finally { IOUtils.closeQuietly(baos); } }
From source file:com.weebly.opus1269.copyeverywhere.model.ClipContentProvider.java
License:Apache License
/** * Delete rows older than the storage duration * * @return Number of rows deleted/* w ww .ja v a 2 s. c om*/ */ @SuppressWarnings("CallToStringEquals") public static int deleteOldItems() { final String value = Prefs.getDuration(); if (value.equals(Prefs.DEFAULT_DURATION)) { return 0; } final Context context = App.getContext(); DateTime today = DateTime.now(); today = today.withTimeAtStartOfDay(); DateTime deleteDate = today; switch (value) { case "day": deleteDate = deleteDate.minusDays(1); break; case "week": deleteDate = deleteDate.minusWeeks(1); break; case "month": deleteDate = deleteDate.minusMonths(1); break; case "year": deleteDate = deleteDate.minusYears(1); break; default: return 0; } final long deleteTime = deleteDate.getMillis(); // Select all non-favorites older than the calculated time final String selection = "(" + ClipContract.Clip.COL_FAV + " == 0 " + ")" + " AND (" + ClipContract.Clip.COL_DATE + " < " + deleteTime + ")"; return context.getContentResolver().delete(ClipContract.Clip.CONTENT_URI, selection, null); }
From source file:common.CommonFunction.java
public static boolean isGreaterThanDate(Date date1, Date date2) { DateTime d1 = new DateTime(date1); DateTime d2 = new DateTime(date2); return d1.withTimeAtStartOfDay().isAfter(d2.withTimeAtStartOfDay()); }
From source file:cron.DayOfWeekField.java
License:Open Source License
public boolean matches(DateTime time) { if (unspecified) return true; final int dayOfWeek = time.getDayOfWeek(); int number = number(dayOfWeek); if (hasLast) { return last.contains(number) && time.getMonthOfYear() != time.plusWeeks(1).getMonthOfYear(); } else if (hasNth) { for (int possibleMatch : nth.get(number)) { DateTime midnight = time.withTimeAtStartOfDay(); DateTime first = midnight.withDayOfMonth(1).withDayOfWeek(dayOfWeek); if (first.getMonthOfYear() != time.getMonthOfYear()) first = first.plusWeeks(1); DateTime tomorrow = midnight.plusDays(1); int weekNumber = 1 + (int) ((tomorrow.getMillis() - first.getMillis()) / MILLISECONDS_PER_WEEK); if (possibleMatch == weekNumber) return true; }/*from w w w .j a v a2 s . c om*/ } return contains(number); }