List of usage examples for org.joda.time DateTime getDayOfWeek
public int getDayOfWeek()
From source file:org.projectforge.web.timesheet.TimesheetEventsProvider.java
License:Open Source License
/** * @see org.projectforge.web.calendar.MyFullCalendarEventsProvider#buildEvents(org.joda.time.DateTime, org.joda.time.DateTime) *//*from www .ja v a 2 s . com*/ @Override protected void buildEvents(final DateTime start, final DateTime end) { totalDuration = 0; for (int i = 0; i < durationsPerDayOfMonth.length; i++) { durationsPerDayOfMonth[i] = 0; } for (int i = 0; i < durationsPerDayOfYear.length; i++) { durationsPerDayOfYear[i] = 0; } final Integer userId = calFilter.getTimesheetUserId(); if (userId == null) { return; } breaksMap = new HashMap<String, TimesheetDO>(); int breaksCounter = 0; final TimesheetFilter filter = new TimesheetFilter(); filter.setUserId(userId); filter.setStartTime(start.toDate()); filter.setStopTime(end.toDate()); filter.setOrderType(OrderDirection.ASC); timesheets = timesheetDao.getList(filter); boolean longFormat = false; days = Days.daysBetween(start, end).getDays(); if (days < 10) { // Week or day view: longFormat = true; month = null; firstDayOfMonth = null; } else { // Month view: final DateTime currentMonth = new DateTime(start.plusDays(10), PFUserContext.getDateTimeZone()); // Now we're definitely in the right // month. month = currentMonth.getMonthOfYear(); firstDayOfMonth = currentMonth.withDayOfMonth(1); } if (CollectionUtils.isEmpty(timesheets) == false) { DateTime lastStopTime = null; for (final TimesheetDO timesheet : timesheets) { final DateTime startTime = new DateTime(timesheet.getStartTime(), PFUserContext.getDateTimeZone()); final DateTime stopTime = new DateTime(timesheet.getStopTime(), PFUserContext.getDateTimeZone()); if (stopTime.isBefore(start) == true || startTime.isAfter(end) == true) { // Time sheet doesn't match time period start - end. continue; } if (calFilter.isShowBreaks() == true) { if (lastStopTime != null && DateHelper.isSameDay(stopTime, lastStopTime) == true && startTime.getMillis() - lastStopTime.getMillis() > 60000) { // Show breaks between time sheets of one day (> 60s). final Event breakEvent = new Event(); breakEvent.setEditable(false); final String breakId = String.valueOf(++breaksCounter); breakEvent.setClassName(BREAK_EVENT_CLASS_NAME).setId(breakId).setStart(lastStopTime) .setEnd(startTime).setTitle(getString("timesheet.break")); breakEvent.setTextColor("#666666").setBackgroundColor("#F9F9F9").setColor("#F9F9F9"); events.put(breakId, breakEvent); final TimesheetDO breakTimesheet = new TimesheetDO().setStartDate(lastStopTime.toDate()) .setStopTime(startTime.getMillis()); breaksMap.put(breakId, breakTimesheet); } lastStopTime = stopTime; } final long duration = timesheet.getDuration(); final MyEvent event = new MyEvent(); final String id = "" + timesheet.getId(); event.setClassName(EVENT_CLASS_NAME); event.setId(id); event.setStart(startTime); event.setEnd(stopTime); final String title = getTitle(timesheet); if (longFormat == true) { // Week or day view: event.setTitle(title + "\n" + getToolTip(timesheet) + "\n" + formatDuration(duration, false)); } else { // Month view: event.setTitle(title); } if (month != null && startTime.getMonthOfYear() != month && stopTime.getMonthOfYear() != month) { // Display time sheets of other month as grey blue: event.setTextColor("#222222").setBackgroundColor("#ACD9E8").setColor("#ACD9E8"); } events.put(id, event); if (month == null || startTime.getMonthOfYear() == month) { totalDuration += duration; addDurationOfDay(startTime.getDayOfMonth(), duration); } final int dayOfYear = startTime.getDayOfYear(); addDurationOfDayOfYear(dayOfYear, duration); event.setTooltip(getString("timesheet"), new String[][] { { title }, { timesheet.getLocation(), getString("timesheet.location") }, { KostFormatter.formatLong(timesheet.getKost2()), getString("fibu.kost2") }, { TaskFormatter.instance().getTaskPath(timesheet.getTaskId(), true, OutputType.PLAIN), getString("task") }, { timesheet.getDescription(), getString("description") } }); } } if (calFilter.isShowStatistics() == true) { // Show statistics: duration of every day is shown as all day event. DateTime day = start; final Calendar cal = DateHelper.getCalendar(); cal.setTime(start.toDate()); final int numberOfDaysInYear = cal.getActualMaximum(Calendar.DAY_OF_YEAR); int paranoiaCounter = 0; do { if (++paranoiaCounter > 1000) { log.error( "Paranoia counter exceeded! Dear developer, please have a look at the implementation of buildEvents."); break; } final int dayOfYear = day.getDayOfYear(); final long duration = durationsPerDayOfYear[dayOfYear]; final boolean firstDayOfWeek = day.getDayOfWeek() == PFUserContext.getJodaFirstDayOfWeek(); if (firstDayOfWeek == false && duration == 0) { day = day.plusDays(1); continue; } final Event event = new Event().setAllDay(true); final String id = "s-" + (dayOfYear); event.setId(id); event.setStart(day); final String durationString = formatDuration(duration, false); if (firstDayOfWeek == true) { // Show week of year at top of first day of week. long weekDuration = 0; for (short i = 0; i < 7; i++) { int d = dayOfYear + i; if (d > numberOfDaysInYear) { d -= numberOfDaysInYear; } weekDuration += durationsPerDayOfYear[d]; } final StringBuffer buf = new StringBuffer(); buf.append(getString("calendar.weekOfYearShortLabel")).append(DateHelper.getWeekOfYear(day)); if (days > 1 && weekDuration > 0) { // Show total sum of durations over all time sheets of current week (only in week and month view). buf.append(": ").append(formatDuration(weekDuration, false)); } if (duration > 0) { buf.append(", ").append(durationString); } event.setTitle(buf.toString()); } else { event.setTitle(durationString); } event.setTextColor("#666666").setBackgroundColor("#F9F9F9").setColor("#F9F9F9"); event.setEditable(false); events.put(id, event); day = day.plusDays(1); } while (day.isAfter(end) == false); } }
From source file:org.softdays.mandy.service.support.CalendarServiceImpl.java
License:Open Source License
@Override public DateTime getFirstSundayAfterEndOfMonth(final DateTime givenDate) { DateTime date = givenDate.dayOfMonth().withMaximumValue(); while (date.getDayOfWeek() != DateTimeConstants.SUNDAY) { date = date.plusDays(1);/* www. ja v a 2 s.c o m*/ } return date; }
From source file:org.unitime.timetable.export.events.EventsExportEventsToICal.java
License:Open Source License
public boolean print(ICalendar ical, EventInterface event, Status status) throws IOException { if (event.getType() == EventType.Unavailabile) return false; TreeSet<ICalendarMeeting> meetings = new TreeSet<ICalendarMeeting>(); Set<Integer> days = new TreeSet<Integer>(); if (event.hasMeetings()) meetings: for (MeetingInterface m : event.getMeetings()) { if (m.isArrangeHours()) continue; if (m.getApprovalStatus() != ApprovalStatus.Approved && m.getApprovalStatus() != ApprovalStatus.Pending) continue; ICalendarMeeting x = new ICalendarMeeting(m, status); for (ICalendarMeeting icm : meetings) if (icm.merge(x)) continue meetings; meetings.add(x);/*from w w w .j a v a 2 s .co m*/ days.add(x.getStart().getDayOfWeek()); } if (meetings.isEmpty()) return false; ICalendarMeeting first = meetings.first(); VEvent master = new VEvent(); master.setDateStart(first.getDateStart()); master.setDateEnd(first.getDateEnd()); master.setLocation(first.getLocation()); master.setStatus(first.getStatus()); List<VEvent> events = new ArrayList<VEvent>(); events.add(master); if (meetings.size() > 1) { // last day of the recurrence DateTime until = new DateTime(meetings.last().getStart().getYear(), meetings.last().getStart().getMonthOfYear(), meetings.last().getStart().getDayOfMonth(), first.getEnd().getHourOfDay(), first.getEnd().getMinuteOfHour(), first.getEnd().getSecondOfMinute()); // count meeting days int nrMeetingDays = 0; for (DateTime date = first.getStart(); !date.isAfter(until); date = date.plusDays(1)) { // skip days of week with no meeting if (days.contains(date.getDayOfWeek())) nrMeetingDays++; } // make sure that there is enough meeting days to cover all meetings while (nrMeetingDays < meetings.size()) { until = until.plusDays(1); if (days.contains(until.getDayOfWeek())) nrMeetingDays++; } Recurrence.Builder recur = new Recurrence.Builder(Frequency.WEEKLY); for (Iterator<Integer> i = days.iterator(); i.hasNext();) { switch (i.next()) { case DateTimeConstants.MONDAY: recur.byDay(DayOfWeek.MONDAY); break; case DateTimeConstants.TUESDAY: recur.byDay(DayOfWeek.TUESDAY); break; case DateTimeConstants.WEDNESDAY: recur.byDay(DayOfWeek.WEDNESDAY); break; case DateTimeConstants.THURSDAY: recur.byDay(DayOfWeek.THURSDAY); break; case DateTimeConstants.FRIDAY: recur.byDay(DayOfWeek.FRIDAY); break; case DateTimeConstants.SATURDAY: recur.byDay(DayOfWeek.SATURDAY); break; case DateTimeConstants.SUNDAY: recur.byDay(DayOfWeek.SUNDAY); break; } } recur.workweekStarts(DayOfWeek.MONDAY).until(until.toDate()); master.setRecurrenceRule(recur.build()); ExceptionDates exdates = new ExceptionDates(true); // for all dates till the last date dates: for (DateTime date = first.getStart(); !date.isAfter(until); date = date.plusDays(1)) { // skip days of week with no meeting if (!days.contains(date.getDayOfWeek())) continue; // try to find a fully matching meeting for (Iterator<ICalendarMeeting> i = meetings.iterator(); i.hasNext();) { ICalendarMeeting ics = i.next(); if (date.getYear() == ics.getStart().getYear() && date.getDayOfYear() == ics.getStart().getDayOfYear() && first.same(ics)) { i.remove(); continue dates; } } // try to find a meeting that is on the same day for (Iterator<ICalendarMeeting> i = meetings.iterator(); i.hasNext();) { ICalendarMeeting ics = i.next(); if (date.getYear() == ics.getStart().getYear() && date.getDayOfYear() == ics.getStart().getDayOfYear()) { VEvent x = new VEvent(); RecurrenceId id = new RecurrenceId(date.toDate(), true); id.setLocalTime(false); id.setTimezoneId(TimeZone.getDefault().getID()); x.setRecurrenceId(id); x.setDateStart(ics.getDateStart()); x.setDateEnd(ics.getDateEnd()); x.setLocation(ics.getLocation()); x.setStatus(ics.getStatus()); events.add(x); i.remove(); continue dates; } } // add exception exdates.addValue(date.toDate()); } // process remaining meetings for (ICalendarMeeting ics : meetings) { VEvent x = new VEvent(); x.setDateStart(ics.getDateStart()); x.setDateEnd(ics.getDateEnd()); x.setLocation(ics.getLocation()); x.setStatus(ics.getStatus()); // use exception as recurrence if there is one available if (!exdates.getValues().isEmpty()) { RecurrenceId id = new RecurrenceId(exdates.getValues().get(0), true); id.setLocalTime(false); id.setTimezoneId(TimeZone.getDefault().getID()); x.setRecurrenceId(id); exdates.getValues().remove(0); } events.add(x); } if (!exdates.getValues().isEmpty()) master.addExceptionDates(exdates); } for (VEvent vevent : events) { vevent.setSequence(event.getSequence()); vevent.setUid(event.getId().toString()); vevent.setSummary(event.getName()); vevent.setDescription( event.getInstruction() != null ? event.getInstruction() : event.getType().getName(CONSTANTS)); if (event.hasTimeStamp()) { DateTimeStamp ts = new DateTimeStamp(event.getTimeStamp()); vevent.setDateTimeStamp(ts); } if (event.hasInstructors()) { int idx = 0; for (ContactInterface instructor : event.getInstructors()) { if (idx++ == 0) { Organizer organizer = new Organizer( "mailto:" + (instructor.hasEmail() ? instructor.getEmail() : "")); organizer.setCommonName(instructor.getName(MESSAGES)); vevent.setOrganizer(organizer); } else { Attendee attendee = new Attendee( "mailto:" + (instructor.hasEmail() ? instructor.getEmail() : "")); attendee.setCommonName(instructor.getName(MESSAGES)); attendee.setRole(Role.CHAIR); vevent.addAttendee(attendee); } } } else if (event.hasSponsor()) { Organizer organizer = new Organizer( "mailto:" + (event.getSponsor().hasEmail() ? event.getSponsor().getEmail() : "")); organizer.setCommonName(event.getSponsor().getName()); vevent.setOrganizer(organizer); } else if (event.hasContact()) { Organizer organizer = new Organizer( "mailto:" + (event.getContact().hasEmail() ? event.getContact().getEmail() : "")); organizer.setCommonName(event.getContact().getName(MESSAGES)); vevent.setOrganizer(organizer); } ical.addEvent(vevent); } return true; }
From source file:pt.ist.bennu.core.domain.scheduler.TaskConfiguration.java
License:Open Source License
public boolean shouldRunNow(DateTime now) { final int min = now.getMinuteOfHour(); final int hour = now.getHourOfDay(); final int day = now.getDayOfMonth(); final int month = now.getMonthOfYear(); final int dayofweek = now.getDayOfWeek(); if (matchField(getMinute(), min) && matchField(getHour(), hour) && matchField(getDay(), day) && matchField(getMonth(), month) && matchField(getDayofweek(), dayofweek)) { final DateTime lastRun = getLastRun(); return lastRun == null || nowIsAfterLastRun(now, lastRun); }//from w ww.j a va2 s . c o m return false; }
From source file:pt.ist.fenixedu.integration.api.infra.FenixAPICanteen.java
License:Open Source License
public static String get(String daySearch) { String locale = I18N.getLocale().toString().replace("_", "-"); if (canteenInfo == null || canteenInfo.isJsonNull() || oldInformation()) { String canteenUrl = FenixEduIstIntegrationConfiguration.getConfiguration().getFenixApiCanteenUrl(); try {//from ww w . j ava 2s . co m Response response = HTTP_CLIENT.target(canteenUrl).request(MediaType.APPLICATION_JSON) .header("Authorization", getServiceAuth()).get(); if (response.getStatus() == 200) { JsonParser parser = new JsonParser(); canteenInfo = (JsonObject) parser.parse(response.readEntity(String.class)); day = new DateTime(); } else { return new JsonObject().toString(); } } catch (ProcessingException e) { e.printStackTrace(); return new JsonObject().toString(); } } JsonArray jsonArrayWithLang = canteenInfo.getAsJsonArray(locale); DateTime dayToCompareStart; DateTime dayToCompareEnd; DateTime dateTime = DateTime.parse(daySearch, DateTimeFormat.forPattern(datePattern)); int dayOfWeek = dateTime.getDayOfWeek(); if (dayOfWeek != 7) { dayToCompareStart = dateTime.minusDays(dayOfWeek); dayToCompareEnd = dateTime.plusDays(7 - dayOfWeek); } else { dayToCompareStart = dateTime; dayToCompareEnd = dateTime.plusDays(7); } JsonArray jsonResult = new JsonArray(); for (JsonElement jObj : jsonArrayWithLang) { DateTime dateToCompare = DateTime.parse(((JsonObject) jObj).get("day").getAsString(), DateTimeFormat.forPattern(datePattern)); if (dateToCompare.isAfter(dayToCompareStart) && dateToCompare.isBefore(dayToCompareEnd)) { jsonResult.add(jObj); } } Gson gson = new GsonBuilder().setPrettyPrinting().create(); return gson.toJson(jsonResult); }
From source file:pt.ist.fenixedu.integration.api.infra.FenixAPIFromExternalServer.java
License:Open Source License
public static String getCanteen(String daySearch, String canteenName) { String canteenUrl = FenixEduIstIntegrationConfiguration.getConfiguration().getFenixApiCanteenUrl() .concat("?name=" + canteenName); JsonObject canteenInfo = getInformation(canteenUrl); String lang = I18N.getLocale().toLanguageTag(); if (!canteenInfo.has(lang)) { return empty.toString(); }// w w w .j av a2 s .co m JsonArray jsonArrayWithLang = canteenInfo.getAsJsonObject().getAsJsonArray(lang); DateTime dayToCompareStart; DateTime dayToCompareEnd; DateTime dateTime = DateTime.parse(daySearch, DateTimeFormat.forPattern(datePattern)); int dayOfWeek = dateTime.getDayOfWeek(); if (dayOfWeek != 7) { dayToCompareStart = dateTime.minusDays(dayOfWeek); dayToCompareEnd = dateTime.plusDays(7 - dayOfWeek); } else { dayToCompareStart = dateTime; dayToCompareEnd = dateTime.plusDays(7); } Interval validInterval = new Interval(dayToCompareStart, dayToCompareEnd); JsonArray jsonResult = new JsonArray(); for (JsonElement jObj : jsonArrayWithLang) { DateTime dateToCompare = DateTime.parse(((JsonObject) jObj).get("day").getAsString(), DateTimeFormat.forPattern(datePattern)); if (validInterval.contains(dateToCompare)) { jsonResult.add(jObj); } } return gson.toJson(jsonResult); }
From source file:pt.utl.ist.codeGenerator.database.WrittenTestsRoomManager.java
License:Open Source License
public DateTime getNextDateTime(final ExecutionSemester executionPeriod) { EvaluationRoomManager evaluationRoomManager = evaluationRoomManagerMap.get(executionPeriod); if (evaluationRoomManager == null) { evaluationRoomManager = new EvaluationRoomManager( executionPeriod.getBeginDateYearMonthDay().plusMonths(1).toDateTimeAtMidnight(), executionPeriod.getEndDateYearMonthDay().minusDays(31).toDateTimeAtMidnight(), 120, this); evaluationRoomManagerMap.put(executionPeriod, evaluationRoomManager); }/* w w w . j a v a 2 s . c om*/ DateTime dateTime; Space oldRoom; do { dateTime = evaluationRoomManager.getNextDateTime(); oldRoom = evaluationRoomManager.getNextOldRoom(); } while (SpaceUtils.isFree(oldRoom, dateTime.toYearMonthDay(), dateTime.plusMinutes(120).toYearMonthDay(), new HourMinuteSecond(dateTime.getHourOfDay(), dateTime.getMinuteOfHour(), dateTime.getSecondOfMinute()), dateTime.plusMinutes(120).getHourOfDay() == 0 ? new HourMinuteSecond(dateTime.plusMinutes(119).getHourOfDay(), dateTime.plusMinutes(119).getMinuteOfHour(), dateTime.plusMinutes(119).getSecondOfMinute()) : new HourMinuteSecond(dateTime.plusMinutes(120).getHourOfDay(), dateTime.plusMinutes(120).getMinuteOfHour(), dateTime.plusMinutes(120).getSecondOfMinute()), new DiaSemana(dateTime.getDayOfWeek() + 1), FrequencyType.DAILY, Boolean.TRUE, Boolean.TRUE)); return dateTime; }
From source file:rapture.common.USCalendar.java
License:Open Source License
public static boolean isWeekend(DateTime date) { return date.getDayOfWeek() > 5; // Sat=6 }
From source file:rapture.event.generator.EventGenerator.java
License:Open Source License
private static void generatePeriodic(List<String> ret, DateTime dt, boolean periodic) { // We guarantee that each call to this function, cal will be advanced a // minute at least int dayOfWeek = dt.getDayOfWeek(); if (periodic) { checkAdd(dayOfWeek, dt.getMinuteOfHour(), minuteChecks, "minutes", "/time", ret); if (dt.getMinuteOfHour() == 0) { checkAdd(dayOfWeek, dt.getHourOfDay(), hourChecks, "hours", "/time", ret); if (dt.getHourOfDay() == 0) { ret.add("/time/days" + dt.getDayOfMonth()); if (dt.getDayOfMonth() == 1) { ret.add("/time/months" + dt.getMonthOfYear()); }//from ww w.j a va2 s . c om } } } // We construct, for each supported timezone, // timezone/daily/[timezone]/hour/minute // timezone/weekend/ (if a weekend) // timezone/weekeday/ (if a weekday) // timezone/day // So initially create the end point for each timezone, then push it out // We assume dt is in UT (but does this matter?) for (Map.Entry<String, DateTimeZone> zoneEntry : timeZones.entrySet()) { DateTime dtLocal = dt.withZone(zoneEntry.getValue()); String convertedZone = getConvertedTimeZone(zoneEntry.getKey()); int localDow = dtLocal.getDayOfWeek(); String endField = hmFormat.print(dtLocal); ret.add(String.format("/timezone/daily/%s/%s", convertedZone, endField)); ret.add(String.format("/timezone/%s/%s/%s", isWeekend(localDow) ? "weekend" : "weekday", convertedZone, endField)); ret.add(String.format("/timezone/%s/%s/%s", getDOWName(localDow), convertedZone, endField)); } }
From source file:rapture.event.generator.EventGenerator.java
License:Open Source License
public static Collection<? extends TimedEventRecord> generateWeeklyEventRecords(DateTime startDt, EventHelper eventHelper) {//w ww.j a v a 2 s . c om // Given a start date, look forward one week (7 days), showing events // that are at most one minute granular. Don't show periodic events // Do some attempt to order them correctly List<TimedEventRecord> records = new ArrayList<TimedEventRecord>(); int currentDow = startDt.getDayOfWeek(); DateTime endPoint = startDt.plusDays(7); DateTime current = startDt.plus(0); int endDow = endPoint.getDayOfWeek(); boolean first = true; while (currentDow != endDow || first) { first = false; String startPoint = String.format("/timezone/%s", getDOWName(currentDow)); List<TimedEventRecord> recs = eventHelper.filterEvent(startPoint, current); if (recs != null) { records.addAll(recs); } startPoint = "/timezone/daily"; recs = eventHelper.filterEvent(startPoint, current); if (recs != null) { records.addAll(recs); } if (isWeekend(currentDow)) { startPoint = "/timezone/weekend"; recs = eventHelper.filterEvent(startPoint, current); } else { startPoint = "/timezone/weekday"; recs = eventHelper.filterEvent(startPoint, current); } if (recs != null) { records.addAll(recs); } current = current.plusDays(1); currentDow = current.getDayOfWeek(); } return records; }