Elexis API documentation
Version 2.1.6 as of December 11 2011

ch.elexis.actions
Class PersistentObjectLoader

java.lang.Object
  extended by ch.elexis.actions.PersistentObjectLoader
All Implemented Interfaces:
DelayableJob.IWorker, ViewerConfigurer.ControlFieldListener, ViewerConfigurer.ICommonViewerContentProvider
Direct Known Subclasses:
FlatDataLoader, ReadOnceTreeLoader, TreeDataLoader

public abstract class PersistentObjectLoader
extends java.lang.Object
implements ViewerConfigurer.ICommonViewerContentProvider, DelayableJob.IWorker

This is a replacement for the former BackgroundJob-System. Since it became clear that the database access takes less than 10% of the total time needed for reload of a CommonViewer, the BackgroundJobs were not adequate for this task. Furthermore, there were several issues with those widely used jobs. PersistentObjectLoader is a much simpler replacement and does not load in background. Instead it uses a @see DelayableJob to perform loading.

Author:
Gerry

Nested Class Summary
static interface PersistentObjectLoader.QueryFilter
          a QueryFilter can modify the Query of this Loader.
 
Field Summary
static java.lang.String PARAM_FIELDNAMES
           
static java.lang.String PARAM_VALUES
           
 
Constructor Summary
PersistentObjectLoader(CommonViewer cv, Query<? extends PersistentObject> qbe)
           
 
Method Summary
 void addQueryFilter(PersistentObjectLoader.QueryFilter fp)
           
 void applyQueryFilters()
           
 void changed(java.util.HashMap<java.lang.String,java.lang.String> values)
          One or more of the ControlField's selectors habe been changed.
 void dispose()
           
 java.lang.Object[] getElements(java.lang.Object inputElement)
           
 Query<? extends PersistentObject> getQuery()
           
 void init()
          Called after all elements of the CommonViewer are created but before setting input
 void inputChanged(Viewer viewer, java.lang.Object oldInput, java.lang.Object newInput)
          This will be called by the CommonViewer on construction
 boolean isSuspended()
           
 void removeQueryFilter(PersistentObjectLoader.QueryFilter fp)
           
 void reorder(java.lang.String field)
          The user request reordering of the table
 void selected()
          ENTER has been pressed
 void setOrderFields(java.lang.String... name)
           
 void setSuspended(boolean bSuspend)
           
 void startListening()
          start listening the selector fields of the ControlField of the loader's CommonViewer.
 void stopListening()
          stop listening the selector fields
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface ch.elexis.actions.DelayableJob.IWorker
work
 

Field Detail

PARAM_FIELDNAMES

public static final java.lang.String PARAM_FIELDNAMES
See Also:
Constant Field Values

PARAM_VALUES

public static final java.lang.String PARAM_VALUES
See Also:
Constant Field Values
Constructor Detail

PersistentObjectLoader

public PersistentObjectLoader(CommonViewer cv,
                              Query<? extends PersistentObject> qbe)
Method Detail

getQuery

public Query<? extends PersistentObject> getQuery()

startListening

public void startListening()
start listening the selector fields of the ControlField of the loader's CommonViewer. If the user enters text or clicks the headings, a changed() or reorder() event will be fired

Specified by:
startListening in interface ViewerConfigurer.ICommonViewerContentProvider

stopListening

public void stopListening()
stop listening the selector fields

Specified by:
stopListening in interface ViewerConfigurer.ICommonViewerContentProvider

getElements

public java.lang.Object[] getElements(java.lang.Object inputElement)

dispose

public void dispose()

inputChanged

public void inputChanged(Viewer viewer,
                         java.lang.Object oldInput,
                         java.lang.Object newInput)
This will be called by the CommonViewer on construction


changed

public void changed(java.util.HashMap<java.lang.String,java.lang.String> values)
One or more of the ControlField's selectors habe been changed. We'll wait a moment for more changes before we launch the loader. Use this method also to force a restart of the loader programatically (values can be null)

Specified by:
changed in interface ViewerConfigurer.ControlFieldListener
Parameters:
values - the new values

reorder

public void reorder(java.lang.String field)
The user request reordering of the table

Specified by:
reorder in interface ViewerConfigurer.ControlFieldListener
Parameters:
field - the field name after which the table should e reordered

selected

public void selected()
Description copied from interface: ViewerConfigurer.ControlFieldListener
ENTER has been pressed

Specified by:
selected in interface ViewerConfigurer.ControlFieldListener

addQueryFilter

public void addQueryFilter(PersistentObjectLoader.QueryFilter fp)

removeQueryFilter

public void removeQueryFilter(PersistentObjectLoader.QueryFilter fp)

applyQueryFilters

public void applyQueryFilters()

setOrderFields

public void setOrderFields(java.lang.String... name)

setSuspended

public void setSuspended(boolean bSuspend)

isSuspended

public boolean isSuspended()

init

public void init()
Description copied from interface: ViewerConfigurer.ICommonViewerContentProvider
Called after all elements of the CommonViewer are created but before setting input

Specified by:
init in interface ViewerConfigurer.ICommonViewerContentProvider

Elexis API documentation
Version 2.1.6 as of December 11 2011

Copyright 2005-2011 by Gerry Weirich, Elexis