event-publisher-hook/src/main/java/org/gcube/portal/event/publisher/lr62/model/UserEventPublisher.java

159 lines
5.8 KiB
Java

package org.gcube.portal.event.publisher.lr62.model;
import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.User;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
public class UserEventPublisher extends AbstractEventPublisherBaseModelListener<User> {
protected static final Log log = LogFactoryUtil.getLog(UserEventPublisher.class);
public UserEventPublisher() {
super();
log.info("New UserEventPublisher instance created");
}
@Override
public void onAfterCreate(User user) throws ModelListenerException {
log.info("New user created");
UserEvent userEvent = UserEvent.newCreatedEvent(user);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
}
@Override
public void onBeforeRemove(User user) throws ModelListenerException {
log.info("User removed");
UserEvent userEvent = UserEvent.newDeletedEvent(user);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
}
@Override
public void onAfterAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
if (Group.class.getName().equals(associationClassName)) {
log.debug("User has been associated to a group");
User user = getUser((Long) classPK);
Group group = getGroup((Long) associationClassPK);
if (user != null && group != null) {
if (group.isSite() && group.isActive()) {
if (log.isDebugEnabled()) {
log.debug("Target group is a site: " + group.getName());
}
UserEvent userEvent = UserEvent.newCreatedEvent(user, group);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
} else if (log.isDebugEnabled() && !group.isSite()) {
log.debug("Target Group is a non-site group");
} else if (log.isDebugEnabled() && group.isSite() && !group.isActive()) {
log.debug("Target group is disabled");
}
}
} else {
if (log.isDebugEnabled()) {
log.debug("Uninteresting association with: " + associationClassName);
}
}
}
@Override
public void onBeforeRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
if (Group.class.getName().equals(associationClassName)) {
log.debug("User has been associated to a group");
User user = getUser((Long) classPK);
Group group = getGroup((Long) associationClassPK);
if (user != null && group != null) {
if (group.isSite() && group.isActive()) {
if (log.isDebugEnabled()) {
log.debug("Target group is a site: " + group.getName());
}
UserEvent userEvent = UserEvent.newDeletedEvent(user, group);
if (log.isTraceEnabled()) {
log.trace("User event is: " + userEvent);
}
publish(userEvent);
} else if (log.isDebugEnabled() && !group.isSite()) {
log.debug("Target group is a non-site group");
} else if (log.isDebugEnabled() && group.isSite() && !group.isActive()) {
log.debug("Target group is disabled");
}
}
} else {
if (log.isDebugEnabled()) {
log.debug("Uninteresting association removal with: " + associationClassName);
}
}
}
protected User getUser(Long userPK) {
User user = null;
try {
if (log.isTraceEnabled()) {
log.trace("Getting user object idetified by pk: " + userPK);
}
user = UserLocalServiceUtil.getUser(userPK);
} catch (PortalException | SystemException e) {
logger.error("Cannot get user with pk: " + userPK, e);
}
return user;
}
protected Group getGroup(Long groupPK) {
Group group = null;
try {
if (log.isTraceEnabled()) {
log.trace("Getting group object idetified by pk: " + groupPK);
}
group = GroupLocalServiceUtil.getGroup((Long) groupPK);
} catch (PortalException | SystemException e) {
logger.error("Cannot get group with pk: " + groupPK, e);
}
return group;
}
/* Uninteresting model events */
@Override
public void onAfterRemove(User user) throws ModelListenerException {
}
@Override
public void onAfterRemoveAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onAfterUpdate(User user) throws ModelListenerException {
}
@Override
public void onBeforeAddAssociation(Object classPK, String associationClassName, Object associationClassPK)
throws ModelListenerException {
}
@Override
public void onBeforeCreate(User user) throws ModelListenerException {
}
@Override
public void onBeforeUpdate(User user) throws ModelListenerException {
}
}