/*
* Copyright (c) 2012 Data Harmonisation Panel
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* HUMBOLDT EU Integrated Project #030962
* Data Harmonisation Panel <http://www.dhpanel.eu>
*/
package eu.esdihumboldt.hale.ui.views.tasks.service.internal;
import eu.esdihumboldt.hale.ui.service.AbstractUpdateService;
import eu.esdihumboldt.hale.ui.service.HaleServiceListener;
import eu.esdihumboldt.hale.ui.service.UpdateMessage;
import eu.esdihumboldt.hale.ui.views.tasks.model.ResolvedTask;
import eu.esdihumboldt.hale.ui.views.tasks.model.Task;
import eu.esdihumboldt.hale.ui.views.tasks.service.TaskService;
import eu.esdihumboldt.hale.ui.views.tasks.service.TaskServiceListener;
/**
* Notification handling for {@link TaskService}s that support
* {@link TaskServiceListener}s
*
* @author Simon Templer
* @partner 01 / Fraunhofer Institute for Computer Graphics Research
*/
public abstract class AbstractTaskService extends AbstractUpdateService
implements TaskService {
/**
* The default update message
*/
private static final UpdateMessage<?> DEF_MESSAGE = new UpdateMessage<Object>(TaskService.class, null);
/**
* @see AbstractUpdateService#notifyListeners(UpdateMessage)
* @deprecated an {@link UnsupportedOperationException} will be thrown,
* use another notification method instead
*/
@Deprecated
@Override
protected void notifyListeners(UpdateMessage<?> message) {
throw new UnsupportedOperationException();
}
/**
* Call when tasks have been added
*
* @param tasks the tasks that have been added
*/
protected void notifyTasksAdded(Iterable<Task> tasks) {
for (HaleServiceListener listener : getListeners()) {
if (listener instanceof TaskServiceListener) {
((TaskServiceListener) listener).tasksAdded(tasks);
}
listener.update(DEF_MESSAGE);
}
}
/**
* Call when tasks have been removed
*
* @param tasks the tasks that have been removed
*/
protected void notifyTasksRemoved(Iterable<Task> tasks) {
for (HaleServiceListener listener : getListeners()) {
if (listener instanceof TaskServiceListener) {
((TaskServiceListener) listener).tasksRemoved(tasks);
}
listener.update(DEF_MESSAGE);
}
}
/**
* Call when the user data of a task has changed
*
* @param task the resolved task
*/
protected void notifyTaskUserDataChanged(ResolvedTask task) {
for (HaleServiceListener listener : getListeners()) {
if (listener instanceof TaskServiceListener) {
((TaskServiceListener) listener).taskUserDataChanged(task);
}
listener.update(DEF_MESSAGE);
}
}
}