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;
}
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);
}
});
}
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 + "]");
}
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();
}
}
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);
}
}
Aggregations