/* * Copyright (c) JForum Team. All rights reserved. * * The software in this package is published under the terms of the LGPL * license a copy of which has been included with this distribution in the * license.txt file. * * The JForum Project * http://www.jforum.net */ package net.jforum.events.listeners; import java.util.ArrayList; import java.util.List; import net.jforum.events.Event; import org.aspectj.lang.annotation.Pointcut; /** * @author Rafael Steil */ public abstract class AbstractListener<EventType extends Event<TargetType>, TargetType> { private List<EventType> events = new ArrayList<EventType>(); @Pointcut("execution(* net.jforum.repository.Repository.add(..))") @SuppressWarnings("all") protected void repositoryAdd() {} @Pointcut("execution(* net.jforum.repository.Repository.remove(..))") @SuppressWarnings("all") protected void repositoryRemove() {} @Pointcut("execution(* net.jforum.repository.Repository.update(..))") @SuppressWarnings("all") protected void repositoryUpdate() {} /** * Defines the list the events * @param events the events to set */ public void setEvents(List<EventType> events) { this.events = events; } protected void fireBeforeAdd(TargetType entity) { for (EventType event : this.events) { event.beforeAdd(entity); } } protected void fireAdd(TargetType entity) { for (EventType event : this.events) { event.added(entity); } } protected void fireBeforeRemove(TargetType entity) { for (EventType event : this.events) { event.beforeDeleted(entity); } } protected void fireRemove(TargetType entity) { for (EventType event : this.events) { event.deleted(entity); } } protected void fireBeforeUpdated(TargetType entity) { for (EventType event : this.events) { event.beforeUpdated(entity); } } protected void fireUpdated(TargetType entity) { for (EventType event : this.events) { event.updated(entity); } } }