/*******************************************************************************
* Copyright (c) 2005-2006, G. Weirich and Elexis
* 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.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.core.ui.actions;
import java.util.LinkedList;
import java.util.List;
import ch.elexis.data.Query;
/**
* BackgroundJob which loads data from the database in background. The definition of the access to
* the data is left to tzzhe implementing class.
*
* BackgroundJob, der für das Laden von Daten aus der Datenbank im Hintergrund zuständig ist. Die
* konkrete Definition des Datenbankzugriffs ist Sache der implementierenden Unterklassen.
*
* @deprecated Die Funktionalität der BackgroundJobs kann seit Eclipse 3.0 von Eclipse-Jobs und
* Joblisteners übernommen werden. Neuer Code sollte direkt mit Eclipse Jobs arbeiten.
* @author Gerry
*
*/
public abstract class AbstractDataLoaderJob extends BackgroundJob {
/**
* A FilterProvider is a class than can apply a filter to a DataLoader, that controls the read
* data.
*
* Ein Filterprovider ist eine Klasse, die bei Bedarf einen Filter auf den Dataloader anwenden
* kann, welcher die zu lesenden Datensätze limitiert.
*
* @author gerry
*
*/
public interface FilterProvider {
public void applyFilter();
}
protected Query qbe;
protected String[] orderBy;
private boolean orderReverse;
protected LinkedList<FilterProvider> fp = new LinkedList<FilterProvider>();
protected AbstractDataLoaderJob(String name, Query q, String[] order){
super(name);
qbe = q;
orderBy = order;
}
protected List load(){
if (fp != null) {
for (AbstractDataLoaderJob.FilterProvider f : fp) {
if (f != null) {
f.applyFilter();
}
}
}
qbe.orderBy(orderReverse, orderBy);
return qbe.execute();
}
/**
* set sorting order Umgekehrte Sortierreihenfolge setzen
*
* @param reverse
* true: sort reversely
*/
public void setReverseOrder(boolean reverse){
orderReverse = reverse;
}
/**
* Request this job's Query object
*
* Das Query-Objekt dieses Jobs erfragen
*
* @return das Query-Objekt
* @see ch.elexis.core.datatypes.Query
*/
public Query getQuery(){
return qbe;
}
/**
* Set Fields after which the data should be sorted
*
* @param order
*/
public void setOrder(String... order){
orderBy = order;
invalidate();
}
public String[] getOrder(){
return orderBy;
}
/**
* Einen FilterProvider einsetzen oder löschen
*
* @param f
* der Filterprovider
*/
public void addFilterProvider(FilterProvider f){
fp.add(f);
}
public void removeFilterProvider(FilterProvider f){
fp.remove(f);
}
}