Search in sources :

Example 16 with Event

use of org.alfresco.sync.events.types.Event in project alfresco-repository by Alfresco.

the class FavouritesServiceImpl method addFavouriteDocumentOrFolder.

private PersonFavourite addFavouriteDocumentOrFolder(String userName, Type type, NodeRef nodeRef) {
    Map<PersonFavouriteKey, PersonFavourite> personFavourites = getFavouriteNodes(userName, type);
    PersonFavourite personFavourite = getPersonFavourite(userName, type, nodeRef);
    if (personFavourite == null) {
        Date createdAt = new Date();
        final String name = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
        personFavourite = new PersonFavourite(userName, nodeRef, type, name, createdAt);
        personFavourites.put(personFavourite.getKey(), personFavourite);
        updateFavouriteNodes(userName, type, personFavourites);
        QName nodeClass = nodeService.getType(nodeRef);
        final String finalRef = nodeRef.getId();
        final QName nodeType = nodeClass;
        eventPublisher.publishEvent(new EventPreparator() {

            @Override
            public Event prepareEvent(String user, String networkId, String transactionId) {
                return new ActivityEvent("favorite.added", transactionId, networkId, user, finalRef, null, nodeType == null ? null : nodeType.toString(), Client.asType(ClientType.script), null, name, null, 0l, null);
            }
        });
        OnAddFavouritePolicy policy = onAddFavouriteDelegate.get(nodeRef, nodeClass);
        policy.onAddFavourite(userName, nodeRef);
    }
    return personFavourite;
}
Also used : EventPreparator(org.alfresco.sync.repo.events.EventPreparator) ActivityEvent(org.alfresco.sync.events.types.ActivityEvent) QName(org.alfresco.service.namespace.QName) Event(org.alfresco.sync.events.types.Event) ActivityEvent(org.alfresco.sync.events.types.ActivityEvent) PersonFavouriteKey(org.alfresco.repo.favourites.PersonFavourite.PersonFavouriteKey) Date(java.util.Date)

Example 17 with Event

use of org.alfresco.sync.events.types.Event in project alfresco-repository by Alfresco.

the class PersonServiceImpl method publishEvent.

/**
 * Publish new user event
 *
 * @param eventType String
 * @param properties Map<QName, Serializable>
 */
private void publishEvent(String eventType, Map<QName, Serializable> properties) {
    if (properties == null)
        return;
    final String managedUsername = (String) properties.get(ContentModel.PROP_USERNAME);
    final String managedFirstname = (String) properties.get(ContentModel.PROP_FIRSTNAME);
    final String managedLastname = (String) properties.get(ContentModel.PROP_LASTNAME);
    final String eventTType = eventType;
    eventPublisher.publishEvent(new EventPreparator() {

        @Override
        public Event prepareEvent(String user, String networkId, String transactionId) {
            return new UserManagementEvent(eventTType, transactionId, networkId, new Date().getTime(), user, managedUsername, managedFirstname, managedLastname);
        }
    });
}
Also used : EventPreparator(org.alfresco.sync.repo.events.EventPreparator) Event(org.alfresco.sync.events.types.Event) UserManagementEvent(org.alfresco.sync.events.types.UserManagementEvent) Date(java.util.Date) UserManagementEvent(org.alfresco.sync.events.types.UserManagementEvent)

Example 18 with Event

use of org.alfresco.sync.events.types.Event in project alfresco-repository by Alfresco.

the class EventPublisherForTestingOnly method publishEvent.

@Override
public void publishEvent(EventPreparator prep) {
    ThreadInfo info = getThreadInfo();
    Event event = prep.prepareEvent(info.user, info.network, info.transaction);
    queue.add(event);
    log("Event published: [" + event + "]");
}
Also used : Event(org.alfresco.sync.events.types.Event)

Example 19 with Event

use of org.alfresco.sync.events.types.Event in project alfresco-remote-api by Alfresco.

the class AbstractLoginBean method login.

protected Map<String, Object> login(final String username, String password) {
    try {
        // get ticket
        authenticationService.authenticate(username, password.toCharArray());
        eventPublisher.publishEvent(new EventPreparator() {

            @Override
            public Event prepareEvent(String user, String networkId, String transactionId) {
                // TODO need to fix up to pass correct seqNo and alfrescoClientId
                return new RepositoryEventImpl(-1l, "login", transactionId, networkId, new Date().getTime(), username, null);
            }
        });
        // add ticket to model for javascript and template access
        Map<String, Object> model = new HashMap<String, Object>(7, 1.0f);
        model.put("username", username);
        model.put("ticket", authenticationService.getCurrentTicket());
        return model;
    } catch (AuthenticationException e) {
        throw new WebScriptException(HttpServletResponse.SC_FORBIDDEN, "Login failed");
    } finally {
        AuthenticationUtil.clearCurrentSecurityContext();
    }
}
Also used : EventPreparator(org.alfresco.sync.repo.events.EventPreparator) WebScriptException(org.springframework.extensions.webscripts.WebScriptException) HashMap(java.util.HashMap) AuthenticationException(org.alfresco.repo.security.authentication.AuthenticationException) Event(org.alfresco.sync.events.types.Event) RepositoryEventImpl(org.alfresco.sync.events.types.RepositoryEventImpl) Date(java.util.Date)

Example 20 with Event

use of org.alfresco.sync.events.types.Event in project alfresco-repository by Alfresco.

the class ActivityPostServiceImpl method postActivity.

private void postActivity(final String activityType, String siteId, String appTool, String activityData, ActivityPostEntity.STATUS status, String userId, final Client client, final FileInfo contentNodeInfo) {
    NodeRef nodeRef = null;
    try {
        // optional - default to empty string
        if (siteId == null) {
            siteId = "";
        } else if (siteId.length() > ActivityPostDAO.MAX_LEN_SITE_ID) {
            throw new IllegalArgumentException("Invalid siteId - exceeds " + ActivityPostDAO.MAX_LEN_SITE_ID + " chars: " + siteId);
        }
        // optional - default to empty string
        if (appTool == null) {
            appTool = "";
        } else if (appTool.length() > ActivityPostDAO.MAX_LEN_APP_TOOL_ID) {
            throw new IllegalArgumentException("Invalid app tool - exceeds " + ActivityPostDAO.MAX_LEN_APP_TOOL_ID + " chars: " + appTool);
        }
        // required
        ParameterCheck.mandatoryString("activityType", activityType);
        if (activityType.length() > ActivityPostDAO.MAX_LEN_ACTIVITY_TYPE) {
            throw new IllegalArgumentException("Invalid activity type - exceeds " + ActivityPostDAO.MAX_LEN_ACTIVITY_TYPE + " chars: " + activityType);
        }
        if (ignoredActivityTypes != null && ignoredActivityTypes.contains(activityType)) {
            // do not log the activity for ignored activity types.
            logger.debug("Ignoring activity type for posting: " + activityType);
            return;
        }
        // optional - default to empty string
        if (activityData == null) {
            activityData = "";
        }
        try {
            if (activityData.length() > 0) {
                JSONObject jo = new JSONObject(new JSONTokener(activityData));
                if (AuthenticationUtil.isMtEnabled()) {
                    // MT share - add tenantDomain
                    jo.put(PostLookup.JSON_TENANT_DOMAIN, tenantService.getCurrentUserDomain());
                    activityData = jo.toString();
                }
                nodeRef = checkNodeRef(jo);
                // ALF-10362 - belts-and-braces (note: Share sets "title" from cm:name)
                if (jo.has(PostLookup.JSON_TITLE)) {
                    String title = jo.getString(PostLookup.JSON_TITLE);
                    if (title.length() > ActivityPostDAO.MAX_LEN_NAME) {
                        jo.put(PostLookup.JSON_TITLE, title.substring(0, 255));
                        activityData = jo.toString();
                    }
                }
            }
        } catch (JSONException e) {
        // throw new IllegalArgumentException("Invalid activity data - not valid JSON: " + e);
        // According to test data in org/alfresco/repo/activities/script/test_activityService.js
        // invalid JSON should be OK.
        }
        if (activityData.length() > ActivityPostDAO.MAX_LEN_ACTIVITY_DATA) {
            throw new IllegalArgumentException("Invalid activity data - exceeds " + ActivityPostDAO.MAX_LEN_ACTIVITY_DATA + " chars: " + activityData);
        }
        // required
        ParameterCheck.mandatoryString("userId", userId);
        if (userId.length() > ActivityPostDAO.MAX_LEN_USER_ID) {
            throw new IllegalArgumentException("Invalid user - exceeds " + ActivityPostDAO.MAX_LEN_USER_ID + " chars: " + userId);
        }
    } catch (IllegalArgumentException e) {
        // log error and throw exception
        logger.error(e);
        throw new IllegalArgumentException("Failed to post activity: " + e, e);
    }
    try {
        final Date postDate = new Date();
        final ActivityPostEntity activityPost = new ActivityPostEntity();
        final String network = tenantService.getName(siteId);
        final String site = siteId;
        final NodeRef finalNodeRef = nodeRef;
        // MNT-9104 If username contains uppercase letters the action of joining a site will not be displayed in "My activities"
        if (!userNamesAreCaseSensitive) {
            userId = userId.toLowerCase();
        }
        activityPost.setUserId(userId);
        activityPost.setSiteNetwork(network);
        activityPost.setAppTool(appTool);
        activityPost.setActivityData(activityData);
        activityPost.setActivityType(activityType);
        activityPost.setPostDate(postDate);
        activityPost.setStatus(status.toString());
        activityPost.setLastModified(postDate);
        eventPublisher.publishEvent(new EventPreparator() {

            @Override
            public Event prepareEvent(String user, String networkId, String transactionId) {
                String filename = null, nodeType = null, mime = null, encoding = null;
                long size = 0l;
                String nodeId = finalNodeRef != null ? finalNodeRef.getId() : null;
                FileInfo fileInfo = contentNodeInfo;
                // Use content info
                if (fileInfo != null) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Enhancing the Activity Event with fileInfo provided for node " + nodeId);
                    }
                    if (nodeId == null) {
                        nodeId = fileInfo.getNodeRef().getId();
                    }
                    filename = fileInfo.getName();
                    nodeType = fileInfo.getType().toString();
                    if (!fileInfo.isFolder()) {
                        // It's a file so get more info
                        ContentData contentData = fileInfo.getContentData();
                        if (contentData != null) {
                            mime = contentData.getMimetype();
                            size = contentData.getSize();
                            encoding = contentData.getEncoding();
                        }
                    }
                }
                return new ActivityEvent(activityType, transactionId, networkId, user, nodeId, site, nodeType, client, activityPost.getActivityData(), filename, mime, size, encoding);
            }
        });
        // hash the userid to generate a job task node
        int nodeCount = estGridSize;
        int userHashCode = userId.hashCode();
        int nodeHash = (userHashCode % nodeCount) + 1;
        activityPost.setJobTaskNode(nodeHash);
        try {
            long postId = postDAO.insertPost(activityPost);
            if (logger.isDebugEnabled()) {
                activityPost.setId(postId);
                logger.debug("Posted: " + activityPost);
            }
        } catch (SQLException e) {
            throw new AlfrescoRuntimeException("Failed to post activity: " + e, e);
        } catch (Throwable t) {
            throw new AlfrescoRuntimeException("Failed to post activity: " + t, t);
        }
    } catch (AlfrescoRuntimeException e) {
        // log error, subsume exception (for post activity)
        logger.error(e);
    }
}
Also used : ActivityEvent(org.alfresco.sync.events.types.ActivityEvent) SQLException(java.sql.SQLException) JSONException(org.json.JSONException) ActivityPostEntity(org.alfresco.repo.domain.activities.ActivityPostEntity) Date(java.util.Date) JSONTokener(org.json.JSONTokener) NodeRef(org.alfresco.service.cmr.repository.NodeRef) EventPreparator(org.alfresco.sync.repo.events.EventPreparator) ContentData(org.alfresco.service.cmr.repository.ContentData) JSONObject(org.json.JSONObject) FileInfo(org.alfresco.service.cmr.model.FileInfo) ActivityEvent(org.alfresco.sync.events.types.ActivityEvent) Event(org.alfresco.sync.events.types.Event) AlfrescoRuntimeException(org.alfresco.error.AlfrescoRuntimeException)

Aggregations

Event (org.alfresco.sync.events.types.Event)39 NodeAddedEvent (org.alfresco.sync.events.types.NodeAddedEvent)27 NodeCheckOutCancelledEvent (org.alfresco.sync.events.types.NodeCheckOutCancelledEvent)27 NodeCheckedInEvent (org.alfresco.sync.events.types.NodeCheckedInEvent)27 NodeCheckedOutEvent (org.alfresco.sync.events.types.NodeCheckedOutEvent)27 NodeCommentedEvent (org.alfresco.sync.events.types.NodeCommentedEvent)27 NodeContentGetEvent (org.alfresco.sync.events.types.NodeContentGetEvent)27 NodeContentPutEvent (org.alfresco.sync.events.types.NodeContentPutEvent)27 NodeFavouritedEvent (org.alfresco.sync.events.types.NodeFavouritedEvent)27 NodeLikedEvent (org.alfresco.sync.events.types.NodeLikedEvent)27 NodeLockedEvent (org.alfresco.sync.events.types.NodeLockedEvent)27 NodeMovedEvent (org.alfresco.sync.events.types.NodeMovedEvent)27 NodeRemovedEvent (org.alfresco.sync.events.types.NodeRemovedEvent)27 NodeRenamedEvent (org.alfresco.sync.events.types.NodeRenamedEvent)27 NodeTaggedEvent (org.alfresco.sync.events.types.NodeTaggedEvent)27 NodeUnFavouritedEvent (org.alfresco.sync.events.types.NodeUnFavouritedEvent)27 NodeUnLikedEvent (org.alfresco.sync.events.types.NodeUnLikedEvent)27 NodeUnTaggedEvent (org.alfresco.sync.events.types.NodeUnTaggedEvent)27 NodeUnlockedEvent (org.alfresco.sync.events.types.NodeUnlockedEvent)27 NodeUpdatedEvent (org.alfresco.sync.events.types.NodeUpdatedEvent)27