org.processmining.framework.log.proxy
Class ProxyAuditTrailEntryList

java.lang.Object
  extended by org.processmining.framework.log.proxy.ProxyAuditTrailEntryList
All Implemented Interfaces:
AuditTrailEntryList

public class ProxyAuditTrailEntryList
extends java.lang.Object
implements AuditTrailEntryList

Author:
Christian W. Guenther (christian@deckfour.org)

Field Summary
protected  AuditTrailEntryList parent
           
 
Constructor Summary
ProxyAuditTrailEntryList(AuditTrailEntryList aParent)
           
 
Method Summary
 int append(AuditTrailEntry ate)
          Appends a given audit trail entry to the end of the list.
 void cleanup()
          Frees all resources associated with this instance.
 AuditTrailEntryList cloneInstance()
          Returns a deep copy of this list of audit trail entries.
 boolean consolidate()
          Consolidates this object, and transforms it into an optimized state.
 AuditTrailEntry get(int index)
          Retrieves the audit trail entry located at the given position, i.e.
 void insert(AuditTrailEntry ate, int index)
          Inserts the given audit trail entry at the given logical position, or index, within the list.
 int insertOrdered(AuditTrailEntry ate)
          Inserts the given audit trail entry at the correct order position, depending on its timestamp.
 boolean isTainted()
          Probes whether the implementing structure is in a tainted state.
 java.util.Iterator iterator()
          Retrieves an iterator on this list.
 AuditTrailEntry remove(int index)
          Removes the audit trail entry at the given position, or index, from the list
 AuditTrailEntry replace(AuditTrailEntry ate, int index)
          Replaces the audit trail entry at the given position by another provided audit trail entry
 int size()
          Returns the current size of this audit trail entry list.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parent

protected AuditTrailEntryList parent
Constructor Detail

ProxyAuditTrailEntryList

public ProxyAuditTrailEntryList(AuditTrailEntryList aParent)
Method Detail

append

public int append(AuditTrailEntry ate)
           throws java.io.IOException
Description copied from interface: AuditTrailEntryList
Appends a given audit trail entry to the end of the list.

Specified by:
append in interface AuditTrailEntryList
Parameters:
ate - The audit trail entry to append to the list.
Returns:
The index, or position, within the list at which the audit trail entry has been inserted.
Throws:
java.io.IOException - Thrown on I/O failure

cleanup

public void cleanup()
             throws java.io.IOException
Description copied from interface: AuditTrailEntryList
Frees all resources associated with this instance.

This method should be invoked, when it is foreseeable that this instance will no longer be accessed in any way. Do not attempt to access this instance after this method has been invoked, as things are about to get ugly otherwise!

Specified by:
cleanup in interface AuditTrailEntryList
Throws:
java.io.IOException

cloneInstance

public AuditTrailEntryList cloneInstance()
                                  throws java.io.IOException
Description copied from interface: AuditTrailEntryList
Returns a deep copy of this list of audit trail entries.

Modifications are not synchronized between original and clone.

Specified by:
cloneInstance in interface AuditTrailEntryList
Returns:
A deep copy of this list of audit trail entries.
Throws:
java.io.IOException

consolidate

public boolean consolidate()
                    throws java.io.IOException
Description copied from interface: AuditTrailEntryList
Consolidates this object, and transforms it into an optimized state.

Tainted, in this context, is defined as not being structured in an optimal fashion. Tainted instances can be identified using their method isTainted(). They may be transformed into an optimized state by calling their consolidate() method.

In general, consolidation is supposed to be expensive. Implementations of this interface are expected to consolidate themselves at specified events or intervals. You should not manually consolidate an instance other than if you know what you are doing, and what for.

One situation where manual consolidation is suggested is, when you stop modifying a list of audit trail entries and want to start excessive read operations on it (which are not interleaved with modifying operations). For details to tainting and consolidation, refer to the documentation of the implementing classes.

Specified by:
consolidate in interface AuditTrailEntryList
Returns:
Throws:
java.io.IOException

get

public AuditTrailEntry get(int index)
                    throws java.lang.IndexOutOfBoundsException,
                           java.io.IOException
Description copied from interface: AuditTrailEntryList
Retrieves the audit trail entry located at the given position, i.e. index, in the list.

The usage contract for indices in this context is, that the given value must reside within [0, size() - 1].

Specified by:
get in interface AuditTrailEntryList
Parameters:
index - Position of the requested audit trail entry (within [0, size() - 1])
Returns:
The requested audit trail entry object
Throws:
java.lang.IndexOutOfBoundsException - Thrown when given index is invalid
java.io.IOException - Thrown on general I/O failures

insert

public void insert(AuditTrailEntry ate,
                   int index)
            throws java.lang.IndexOutOfBoundsException,
                   java.io.IOException
Description copied from interface: AuditTrailEntryList
Inserts the given audit trail entry at the given logical position, or index, within the list.

Specified by:
insert in interface AuditTrailEntryList
Parameters:
ate - The audit trail entry to be inserted.
index - Index, or position within the list, at which to insert the audit trail entry. Must be within [0, size()].
Throws:
java.lang.IndexOutOfBoundsException - Thrown if the given index is not within [0, size()].
java.io.IOException - Thrown on I/O failure.

insertOrdered

public int insertOrdered(AuditTrailEntry ate)
                  throws java.io.IOException
Description copied from interface: AuditTrailEntryList
Inserts the given audit trail entry at the correct order position, depending on its timestamp.

Specified by:
insertOrdered in interface AuditTrailEntryList
Parameters:
ate - The audit trail entry to be inserted
Returns:
Index, at which the audit trail entry has been inserted in the list
Throws:
java.io.IOException

isTainted

public boolean isTainted()
Description copied from interface: AuditTrailEntryList
Probes whether the implementing structure is in a tainted state.

Tainted, in this context, is defined as not being structured in an optimal fashion. Tainted instances can be identified using their method isTainted(). They may be transformed into an optimized state by calling their consolidate() method.

In general, consolidation is supposed to be expensive. Implementations of this interface are expected to consolidate themselves at specified events or intervals. You should not manually consolidate an instance other than if you know what you are doing, and what for.

One situation where manual consolidation is suggested is, when you stop modifying a list of audit trail entries and want to start excessive read operations on it (which are not interleaved with modifying operations). For details to tainting and consolidation, refer to the documentation of the implementing classes.

Specified by:
isTainted in interface AuditTrailEntryList
Returns:
Whether this object is tainted.

iterator

public java.util.Iterator iterator()
Description copied from interface: AuditTrailEntryList
Retrieves an iterator on this list.

Warning: Iterators on audit trail entry lists are not required to be consistent. When the list is modified during the lifetime of an iterator, this iterator becomes inconsistent and may return wrong results or perform in unexpected manner. You are advised to use modifying iterators exclusively, and not perform modifying operations on the list while using the iterator. Multiple read-only iterators on the same list will perform independently, each as expected.

Specified by:
iterator in interface AuditTrailEntryList
Returns:
An iterator over the contained audit trail entries.

remove

public AuditTrailEntry remove(int index)
                       throws java.lang.IndexOutOfBoundsException,
                              java.io.IOException
Description copied from interface: AuditTrailEntryList
Removes the audit trail entry at the given position, or index, from the list

Specified by:
remove in interface AuditTrailEntryList
Parameters:
index - Position of the audit trail entry to be removed (within [0, size() - 1]).
Returns:
The removed audit trail entry.
Throws:
java.lang.IndexOutOfBoundsException - Thrown if the given index is not within [0, size() - 1].
java.io.IOException

replace

public AuditTrailEntry replace(AuditTrailEntry ate,
                               int index)
                        throws java.lang.IndexOutOfBoundsException,
                               java.io.IOException
Description copied from interface: AuditTrailEntryList
Replaces the audit trail entry at the given position by another provided audit trail entry

Specified by:
replace in interface AuditTrailEntryList
Parameters:
ate - Audit trail entry to be inserted at the specified index.
index - Index at which the current audit trail entry is removed, and the provided one is inserted. Must be within [0, size() - 1].
Returns:
The previous audit trail entry which was replaced and removed from the log.
Throws:
java.lang.IndexOutOfBoundsException - Thrown if the index is not within [0, size() - 1].
java.io.IOException - Thrown on I/O failure.

size

public int size()
Description copied from interface: AuditTrailEntryList
Returns the current size of this audit trail entry list.

Specified by:
size in interface AuditTrailEntryList
Returns:
The number of (valid) audit trail entries contained in this list.