private boolean isMyWorkspaceEvent(Event e) { return e.getResource() != null && e.getResource().startsWith("/site/~"); }
protected void validateResourceName(Event event, Map<String, Object> validationContext) throws IllegalArgumentException, IllegalStateException { String resourceName = event.getResource(); if (resourceName == null) { // default if null (historical behavior) resourceName = ""; } if (resourceName.length() > 255) { throw new IllegalArgumentException("Entity Reference is longer than 255 characters. Reference=" + resourceName); } validationContext.put(ADD_RESOURCE_VALIDATION_KEY_RESOURCE_NAME, resourceName); }
/** * {@inheritDoc} */ public boolean matches(Event event) { return matches(event.getResource()); }
/** * @{inheritDoc} */ public boolean matches(Event event) { return matches(event.getResource()); }
private String entityIdFor(Event event) throws IllegalArgumentException { // Properly this should go through the EntityManager/Entity/Reference APIs to eventually result in a // Reference.getId() call. But event handlers certainly exist that *dont* do that // (see ResourceReleaseRule). And we're trying to put off building all that machinery for as long as // possible since it really just amounts to boilerplate for our needs. final String resourceRef = event.getResource(); if ( resourceRef == null ) { throw new IllegalArgumentException("Null resource reference for event: " + event); } // structure should be: // /tags/<id> // /tagcollections/<id> // (which is why we can currently use the same id unpacker for both entity types final String[] resourceRefParts = resourceRef.split(RESOURCE_REFEREENCE_DELIM_REGEX); try { return resourceRefParts[2]; } catch ( ArrayIndexOutOfBoundsException e ) { throw new IllegalArgumentException("Unexpected resource reference structure for event: " + e); } } }
private String entityIdFor(Event event) throws IllegalArgumentException { // Properly this should go through the EntityManager/Entity/Reference APIs to eventually result in a // Reference.getId() call. But event handlers certainly exist that *dont* do that // (see ResourceReleaseRule). And we're trying to put off building all that machinery for as long as // possible since it really just amounts to boilerplate for our needs. final String resourceRef = event.getResource(); if ( resourceRef == null ) { throw new IllegalArgumentException("Null resource reference for event: " + event); } // structure should be: // /tags/<id> // /tagcollections/<id> // (which is why we can currently use the same id unpacker for both entity types final String[] resourceRefParts = resourceRef.split(RESOURCE_REFEREENCE_DELIM_REGEX); try { return resourceRefParts[2]; } catch ( ArrayIndexOutOfBoundsException e ) { throw new IllegalArgumentException("Unexpected resource reference structure for event: " + e); } } }
private AssignmentGrading produceAssignmentGradingFromEvent(Event event) { Double score; String userId; String[] assignmentRefParts = event.getResource().split("/"); // a score may be null after a grading event try { score = new Double(assignmentRefParts[5]); } catch (NumberFormatException e) { score = null; } userId = assignmentRefParts[4]; return produceAssignmentGrading(userId, score); }
/** * Check to see if we want to process or ignore this update. * * @param arg * The arg from the update. * @return true to continue, false to quit. */ public boolean check(Object arg) { // arg is Event if (!(arg instanceof Event)) return false; Event event = (Event) arg; String key = event.getResource(); // reject non presence events String function = event.getEvent(); if (!(function.equals(PresenceService.EVENT_PRESENCE) || function.equals(PresenceService.EVENT_ABSENCE))) return false; // look for matches to the pattern if (m_resourcePattern != null) { if (!key.equals(m_resourcePattern)) return false; } return true; }
/** EventTrackingService observer for cache invalidation. */ public void update(Observable obs, Object o) { if(o instanceof Event){ Event e = (Event) o; String event = LOG_APP + '.' + LOG_OBJ_PREFSDATA + '.' + LOG_ACTION_EDIT; if(e.getEvent() != null && e.getEvent().equals(event)) { String siteId = e.getResource().split("/")[2]; cachePrefsData.remove(siteId); LOG.debug("Expiring preferences cache for site: "+siteId); } } }
public void update(Observable o, final Object arg) { if (arg instanceof Event) { Event e = (Event) arg; String event = e.getEvent(); if (ProfileConstants.EVENT_FRIEND_CONFIRM.equals(event) || ProfileConstants.EVENT_FRIEND_REMOVE.equals(event)) { String ref = e.getResource(); String[] pathParts = ref.split("/"); String from = e.getUserId(); String to = pathParts[2]; List<String> contextIds = new ArrayList(); contextIds.add(from); contextIds.add(to); removeContextIdsFromCache(contextIds); } } } }
@Override public void update(Observable observable, Object o) { if (o instanceof Event) { Event event = (Event) o; if (event.getResource() != null && ( BaseSiteService.SECURE_ADD_SITE.equals(event.getEvent()) || BaseSiteService.SECURE_UPDATE_SITE.equals(event.getEvent()) || BaseSiteService.SECURE_REMOVE_SITE.equals(event.getEvent()) ) ) { String siteRef = event.getResource(); m_cache.remove(siteRef); } } } }
/** * Called when events occur which come in from the event system * @param event the event from the system */ protected void handleEvent(Event event) { for (EventReceiver receiver : receivers.values()) { if (match(receiver, event)) { receiver.receiveEvent(event.getEvent(), event.getResource()); } } }
public void update(Observable o, Object arg) { if (arg instanceof Event) { Event event = (Event) arg; if (event != null && event.getEvent() != null && siteService.SECURE_REMOVE_SITE.equals(event.getEvent())) { String resource = event.getResource(); String siteRefRoot = siteService.REFERENCE_ROOT; // double check we have a /site/siteId style string if (resource.startsWith(siteRefRoot)) { String siteId = resource.substring(siteRefRoot.length()+1); userAuditRegistration.deleteUserAuditingFromSite(siteId); } } } } }
@Override public void update(Observable observable, Object o) { if (o instanceof Event) { Event event = (Event) o; if (event.getResource() != null && ( SECURE_UPDATE_USER_OWN.equals(event.getEvent()) || SECURE_UPDATE_USER_ANY.equals(event.getEvent()) || SECURE_REMOVE_USER.equals(event.getEvent()) ) ) { String userRef = event.getResource(); UserEdit u = getCachedUser(userRef); String oldEid = u != null ? u.getEid() : null; removeCachedUser(userRef, oldEid); } } } }
@Override public void update(Observable o, Object obj) { if (obj == null || !(obj instanceof Event)) { return; } Event event = (Event) obj; if (SiteService.EVENT_SITE_USER_INVALIDATE.equals(event.getEvent())) { Site site = null; try { site = siteService().getSite(event.getResource()); } catch (IdUnusedException e) { log.warn("Security invalidation error when handling an event (" + event.getEvent() + "), for site " + event.getResource()); } if (site != null) { resetSecurityCache(site.getReference()); } } }
/** Method called whenever an new event is generated from EventTrackingService: do not call this method! */ public void update(Observable obs, Object o) { // At the moment this isn't threadsafe, but as sakai event handling is single threaded this shoudn't be a problem, // but it's not a formal contract. if(o instanceof Event){ Event e = (Event) o; Event eventWithPreciseDate = buildEvent(getToday(), e.getEvent(), e.getResource(), e.getContext(), e.getUserId(), e.getSessionId()); collectThreadQueue.add(eventWithPreciseDate); } }
private LRS_Statement getStatementForUnsubmittedAssignmentGraded(LRS_Actor instructor, Event event, Assignment a, AssignmentSubmission s, User studentUser) { LRS_Verb verb = new LRS_Verb(SAKAI_VERB.scored); LRS_Object lrsObject = new LRS_Object(m_serverConfigurationService.getAccessUrl() + event.getResource(), "received-grade-unsubmitted-assignment"); HashMap<String, String> nameMap = new HashMap<String, String>(); nameMap.put("en-US", "User received a grade"); lrsObject.setActivityName(nameMap); HashMap<String, String> descMap = new HashMap<String, String>(); descMap.put("en-US", "User received a grade for an unsubmitted assginment: " + a.getTitle()); lrsObject.setDescription(descMap); LRS_Actor student = new LRS_Actor(studentUser.getEmail()); student.setName(studentUser.getDisplayName()); LRS_Context context = new LRS_Context(instructor); context.setActivity("other", "assignment"); LRS_Statement statement = new LRS_Statement(student, verb, lrsObject, getLRS_Result(a, s, false), context); return statement; }
private LRS_Statement getStatementForAssignmentGraded(LRS_Actor instructor, Event event, Assignment a, AssignmentSubmission s, User studentUser) { LRS_Verb verb = new LRS_Verb(SAKAI_VERB.scored); LRS_Object lrsObject = new LRS_Object(m_serverConfigurationService.getPortalUrl() + event.getResource(), "received-grade-assignment"); HashMap<String, String> nameMap = new HashMap<String, String>(); nameMap.put("en-US", "User received a grade"); lrsObject.setActivityName(nameMap); HashMap<String, String> descMap = new HashMap<String, String>(); descMap.put("en-US", "User received a grade for their assginment: " + a.getTitle() + "; Submission #: " + s.getResubmissionNum()); lrsObject.setDescription(descMap); LRS_Actor student = new LRS_Actor(studentUser.getEmail()); student.setName(studentUser.getDisplayName()); LRS_Context context = new LRS_Context(instructor); context.setActivity("other", "assignment"); LRS_Statement statement = new LRS_Statement(student, verb, lrsObject, getLRS_Result(a, s, true), context); return statement; }
/** * @inheritDoc */ public void notify(Notification notification, Event event) { // get the message Reference ref = entityManager.newReference(event.getResource()); AnnouncementMessageEdit msg = (AnnouncementMessageEdit) ref.getEntity(); AnnouncementMessageHeader hdr = (AnnouncementMessageHeader) msg.getAnnouncementHeader(); // do not do notification for hidden (draft) messages if (hdr.getDraft()) return; // Put here since if release date after now, do not notify // since scheduled notification has been set. Time now = timeService.newTime(); if (now.after(hdr.getDate())) { super.notify(notification, event); } }
/** * Ensure that the provided event is an instance of BaseEvent. If not, create a new BaseEvent * and transfer state. * * @param e * @return */ protected BaseEvent ensureBaseEvent(Event e) { BaseEvent event = null; if (e instanceof BaseEvent) { event = (BaseEvent) e; } else { event = new BaseEvent(e.getEvent(), e.getResource(), e.getModify(), e.getPriority(),null); event.setSessionId(e.getSessionId()); event.setUserId(e.getUserId()); } return event; }