/* ********************************************************************** **
** Copyright notice **
** **
** (c) 2005-2009 RSSOwl Development Team **
** http://www.rssowl.org/ **
** **
** All rights reserved **
** **
** This program and the accompanying materials are made available under **
** the terms of the Eclipse Public License v1.0 which accompanies this **
** distribution, and is available at: **
** http://www.rssowl.org/legal/epl-v10.html **
** **
** A copy is found in the file epl-v10.html and important notices to the **
** license from the team is found in the textfile LICENSE.txt distributed **
** in this package. **
** **
** This copyright notice MUST APPEAR in all copies of the file! **
** **
** Contributors: **
** RSSOwl Development Team - initial API and implementation **
** **
** ********************************************************************** */
package org.rssowl.core.persist.event;
import org.rssowl.core.persist.INews;
import org.rssowl.core.persist.event.runnable.NewsEventRunnable;
/**
* <p>
* An Event-Object being used to notify Listeners, whenever the type
* <code>INews</code> was added, updated or deleted in the persistance layer.
* </p>
*
* @author bpasero
*/
public final class NewsEvent extends ModelEvent {
private final INews fOldNews;
private final boolean fIsMerged;
/**
* Stores an instance of <code>INews</code> for the affected Type in this
* Event.
*
* @param news An instance of <code>INews</code> for the affected Type.
*/
public NewsEvent(INews news) {
super(news);
fOldNews = null;
fIsMerged = false;
}
/**
* Creates an instance of this event type.
*
* @param oldNews The previous saved version of the affected type or
* <code>null</code> if not known.
* @param currentNews The affected type.
* @param isRoot <code>TRUE</code> if this Event is a Root-Event,
* <code>FALSE</code> otherwise.
*/
public NewsEvent(INews oldNews, INews currentNews, boolean isRoot) {
super(currentNews, isRoot);
fOldNews = oldNews;
fIsMerged = false;
}
/**
* Creates an instance of this event type.
*
* @param oldNews The previous saved version of the affected type or
* <code>null</code> if not known.
* @param currentNews The affected type.
* @param isRoot <code>TRUE</code> if this Event is a Root-Event,
* <code>FALSE</code> otherwise.
* @param isMerged if <code>true</code>, indicates that this event is
* triggered from a news that got merged with another one (e.g. on feed
* reload) and <code>false</code> otherwise.
*/
public NewsEvent(INews oldNews, INews currentNews, boolean isRoot, boolean isMerged) {
super(currentNews, isRoot);
fOldNews = oldNews;
fIsMerged = isMerged;
}
/*
* @see org.rssowl.core.model.events.ModelEvent#getReference()
*/
@Override
public final INews getEntity() {
return (INews) super.getEntity();
}
/*
* @see org.rssowl.core.persist.event.ModelEvent#createEventRunnable()
*/
@Override
public NewsEventRunnable createEventRunnable() {
return new NewsEventRunnable();
}
/**
* @return The previous saved version of the affected type.
*/
public final INews getOldNews() {
return fOldNews;
}
/**
* @return <code>true</code> indicates that this event is triggered from a
* news that got merged with another one (e.g. on feed reload) and
* <code>false</code> otherwise.
*/
public boolean isMerged() {
return fIsMerged;
}
}