예제 #1
0
 private String buildFreeBusyAttendeeResponse(
     Profile attendee, ICalFormatter.FreeBusyRequest request, String domain, String attendeeMailto)
     throws NotAuthorizedException, BadRequestException {
   Date start = request.getStart();
   Date finish = request.getFinish();
   List<EventResourceImpl> list = new ArrayList<>();
   if (attendee.getCalendars() != null) {
     for (Calendar cal : attendee.getCalendars()) {
       if (cal.getEvents() != null) {
         for (CalEvent event : cal.getEvents()) {
           if (!outsideDates(event, start, finish)) {
             EventResourceImpl er = new EventResourceImpl();
             er.setEnd(event.getEndDate());
             er.setStart(event.getStartDate());
             er.setSummary(er.getSummary());
             er.setUniqueId(er.getUniqueId());
             list.add(er);
             log.info("** INSIDE: " + event.getSummary());
           } else {
             log.info("Outside dates: " + event.getSummary());
           }
         }
       }
     }
   }
   return formatter.buildFreeBusyAttendeeResponse(list, request, domain, attendeeMailto);
 }
예제 #2
0
 public static Profile create(String email, Date now) {
   Profile p = new Profile();
   p.setEmail(email.toLowerCase());
   p.setCreatedDate(now);
   p.setModifiedDate(now);
   return p;
 }
예제 #3
0
 /**
  * Remove all memberships of this profile within this organiosation or subordinate organisations
  *
  * @param profile
  * @param session
  */
 public void removeMember(Profile profile, Session session) {
   log.info("removeMember: profileid=" + profile.getId() + " org=" + getOrgId());
   List<GroupMembership> toDelete = new ArrayList<>();
   if (profile.getMemberships() != null) {
     for (GroupMembership m : profile.getMemberships()) {
       Organisation memberWithin = m.getWithinOrg();
       if (memberWithin.isWithin(this)) {
         log.info(
             "Remove membership of user: "******" from org: "
                 + memberWithin.getOrgId());
         toDelete.add(m);
       }
     }
   }
   for (GroupMembership m : toDelete) {
     m.delete(session);
   }
 }
예제 #4
0
 @FreeBusyQuery
 public List<SchedulingResponseItem> freeBusyQuery(Profile profile, String icalQuery)
     throws NotAuthorizedException {
   ICalFormatter.FreeBusyRequest r = formatter.parseFreeBusyRequest(icalQuery);
   log.info(
       "queryFreeBusy: attendees="
           + r.getAttendeeLines().size()
           + " - "
           + r.getAttendeeMailtos().size());
   List<SchedulingResponseItem> list = new ArrayList<>();
   try {
     for (String attendeeMailto : r.getAttendeeMailtos()) {
       MailboxAddress add = MailboxAddress.parse(attendeeMailto);
       Profile attendee = findUserFromMailto(add);
       if (attendee == null) {
         log.warn("Attendee not found: " + attendeeMailto);
         SchedulingResponseItem item =
             new SchedulingResponseItem(
                 "mailto:" + attendeeMailto, ITip.StatusResponse.RS_INVALID_37, null);
         list.add(item);
       } else {
         log.info("Found attendee: " + attendee.getName());
         // Now locate events and build an ical response
         String ical = buildFreeBusyAttendeeResponse(attendee, r, add.domain, attendeeMailto);
         SchedulingResponseItem item =
             new SchedulingResponseItem(
                 "mailto:" + attendeeMailto, ITip.StatusResponse.RS_SUCCESS_20, ical);
         list.add(item);
       }
     }
   } catch (NotAuthorizedException ex) {
     throw ex;
   } catch (BadRequestException ex) {
     throw new RuntimeException(ex);
   }
   return list;
 }
예제 #5
0
 @CalendarInvitations
 public List<AttendeeRequest> getAttendeeRequests(Profile user) {
   log.info("getAttendeeRequests: " + user.getName());
   return calendarService.getAttendeeRequests(user, false);
 }
예제 #6
0
 /**
  * @param add
  * @return
  * @throws NotAuthorizedException
  * @throws BadRequestException
  */
 private Profile findUserFromMailto(MailboxAddress add)
     throws NotAuthorizedException, BadRequestException {
   return Profile.findByEmail(add.toPlainAddress(), SessionManager.session());
 }