java.lang.Object
org.refcodes.logger.PartedTrimLoggerImpl<T,P>
- Type Parameters:
T
- The type of theRecord
instances managed by theLogger
.P
- The type of theColumn
's value used for partitioning theLogger
.
- All Implemented Interfaces:
Flushable
,org.refcodes.component.Closable
,org.refcodes.component.CompositeComponent
,org.refcodes.component.Decomposeable
,org.refcodes.component.Destroyable
,org.refcodes.component.Flushable
,org.refcodes.component.Initializable
,org.refcodes.component.LifeCycleComponent
,org.refcodes.component.LinkComponent
,org.refcodes.component.Openable
,org.refcodes.component.Pausable
,org.refcodes.component.Resetable
,org.refcodes.component.Resumable
,org.refcodes.component.Startable
,org.refcodes.component.Stoppable
,LogDecorator
,Logger<T>
,QueryLogger<T>
,TrimLogger<T>
,org.refcodes.mixin.Clearable
,org.refcodes.mixin.Disposable
public class PartedTrimLoggerImpl<T,P extends T> extends Object implements org.refcodes.component.CompositeComponent
The
PartedTrimLoggerImpl
is a ready to use implementation of a parted
TrimLogger
extending the AbstractPartedTrimLogger
.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.CompositeComponent
org.refcodes.component.CompositeComponent.ExtendedCompositeComponent<CTX extends Object,CON extends Object>
Nested classes/interfaces inherited from interface org.refcodes.component.Decomposeable
org.refcodes.component.Decomposeable.DecomposeAutomaton
Nested classes/interfaces inherited from interface org.refcodes.component.Destroyable
org.refcodes.component.Destroyable.DestroyAutomaton
Nested classes/interfaces inherited from interface org.refcodes.mixin.Disposable
org.refcodes.mixin.Disposable.Disposedable
Nested classes/interfaces inherited from interface org.refcodes.component.Flushable
org.refcodes.component.Flushable.FlushBuilder<B extends org.refcodes.component.Flushable.FlushBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.Initializable
org.refcodes.component.Initializable.InitializeAutomaton, org.refcodes.component.Initializable.InitializeBuilder<B extends org.refcodes.component.Initializable.InitializeBuilder<B>>, org.refcodes.component.Initializable.UncheckedInitializable
Nested classes/interfaces inherited from interface org.refcodes.component.LifeCycleComponent
org.refcodes.component.LifeCycleComponent.LifeCycleAutomaton, org.refcodes.component.LifeCycleComponent.UncheckedLifeCycleComponent
Nested classes/interfaces inherited from interface org.refcodes.component.LinkComponent
org.refcodes.component.LinkComponent.LinkAutomaton, org.refcodes.component.LinkComponent.LinkComponentBuilder<B extends org.refcodes.component.LinkComponent.LinkComponentBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.Openable
org.refcodes.component.Openable.OpenAutomaton, org.refcodes.component.Openable.OpenBuilder<B extends org.refcodes.component.Openable.OpenBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.Pausable
org.refcodes.component.Pausable.PauseAutomaton, org.refcodes.component.Pausable.PauseBuilder<B extends org.refcodes.component.Pausable.PauseBuilder<B>>, org.refcodes.component.Pausable.UncheckedPausable
Nested classes/interfaces inherited from interface org.refcodes.component.Resumable
org.refcodes.component.Resumable.ResumeAutomaton, org.refcodes.component.Resumable.ResumeBuilder<B extends org.refcodes.component.Resumable.ResumeBuilder<B>>, org.refcodes.component.Resumable.UncheckedResumable
Nested classes/interfaces inherited from interface org.refcodes.component.Startable
org.refcodes.component.Startable.StartAutomaton, org.refcodes.component.Startable.StartBuilder<B extends org.refcodes.component.Startable.StartBuilder<B>>, org.refcodes.component.Startable.UncheckedStartable
Nested classes/interfaces inherited from interface org.refcodes.component.Stoppable
org.refcodes.component.Stoppable.StopAutomaton, org.refcodes.component.Stoppable.StopBuilder<B extends org.refcodes.component.Stoppable.StopBuilder<B>>, org.refcodes.component.Stoppable.UncheckedStoppable
-
Field Summary
Fields Modifier and Type Field Description protected static RuntimeLogger
LOGGER
-
Constructor Summary
Constructors Constructor Description PartedTrimLoggerImpl(org.refcodes.controlflow.ExecutionStrategy aComponentExecutionStrategy, org.refcodes.tabular.Column<P> aPartitionColumn, String aDefaultLoggerName, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)
Similar to thePartedTrimLoggerImpl(Column, LoggerFactory, boolean)
constructor with the additional option of determining the execution strategy of the state change request calls for the encapsulatedTrimLogger
instances (as ofCompositeComponent
).PartedTrimLoggerImpl(org.refcodes.controlflow.ExecutionStrategy aComponentExecutionStrategy, org.refcodes.tabular.Column<P> aPartitionColumn, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)
Similar to thePartedTrimLoggerImpl(Column, LoggerFactory, boolean)
constructor with the additional option of determining the execution strategy of the state change request calls for the encapsulatedTrimLogger
instances (as ofCompositeComponent
).PartedTrimLoggerImpl(org.refcodes.tabular.Column<P> aPartitionColumn, String aDefaultLoggerName, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)
Instantiates a new parted trim logger impl.PartedTrimLoggerImpl(org.refcodes.tabular.Column<P> aPartitionColumn, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)
Instantiates a new parted trim logger impl. -
Method Summary
Modifier and Type Method Description void
clear()
void
close()
void
decompose()
void
decomposePartition(P aPartition)
Decomposes the given partition.void
deleteLogs(org.refcodes.criteria.Criteria aCriteria)
Deletes loggedRecord
instances according to the providedCriteria
.void
destroy()
void
destroyPartition(P aPartition)
Destroys the given partition.void
dispose()
org.refcodes.tabular.Records<T>
findLogs()
Retrieves all availableRecord
instances being logged.org.refcodes.tabular.Records<T>
findLogs(int aLimit)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.org.refcodes.tabular.Records<T>
findLogs(org.refcodes.criteria.Criteria aCriteria)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.org.refcodes.tabular.Records<T>
findLogs(org.refcodes.criteria.Criteria aCriteria, int aLimit)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.org.refcodes.tabular.Records<T>
findLogs(org.refcodes.criteria.Criteria aCriteria, org.refcodes.tabular.Header<T> aHeader)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.org.refcodes.tabular.Records<T>
findLogs(org.refcodes.criteria.Criteria aCriteria, org.refcodes.tabular.Header<T> aHeader, int aLimit)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.org.refcodes.tabular.Records<T>
findLogs(org.refcodes.tabular.Header<T> aHeader, int aLimit)
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.void
flush()
void
flushPartition(P aPartition)
Flushes the given partition, all buffered data is to be forwarded to the physical data sink.protected TrimLogger<T>
getFallbackLogger()
Returns the fallbackLogger
.protected Collection<TrimLogger<T>>
getLoggers()
Provides access to the partitions managed by theAbstractPartedLogger
.protected org.refcodes.tabular.Column<P>
getPartitionColumn()
Provides access to theColumn
used to identify partitions.protected TrimLogger<T>
getPartitionLogger(P aPartition)
Returns theLogger
being responsible for the given partition.protected Collection<TrimLogger<T>>
getPartitionLoggers(Set<P> aPartitions)
Retrieves a collection withLogger
instances managing the provided partitions.protected String
getPartitionUid(P aPartition)
Depending whether the partition object provides a Universal-TID or not we return the string representation of the partition's object or the UID.boolean
hasPartition(P aPartition)
Tests whether the provided partition exists.void
initialize()
TrimLogger<T>
initPartition(P aPartition)
Initializes the given partition.void
log(org.refcodes.tabular.Record<? extends T> aRecord)
Logs aRecord
.void
open()
void
pause()
void
reset()
void
resume()
void
start()
void
stop()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.component.Flushable
flushUnchecked, isFlushable
Methods inherited from interface org.refcodes.component.Initializable
initializeUnchecked
Methods inherited from interface org.refcodes.logger.LogDecorator
printHead, printSeparator, printTail
Methods inherited from interface org.refcodes.component.Openable
openUnchecked
Methods inherited from interface org.refcodes.component.Pausable
pauseUnchecked
Methods inherited from interface org.refcodes.logger.QueryLogger
findLogs, findLogs, findLogs, findLogs, findLogs, findLogs, findLogs
Methods inherited from interface org.refcodes.component.Resumable
resumeUnchecked
Methods inherited from interface org.refcodes.component.Startable
startUnchecked
Methods inherited from interface org.refcodes.component.Stoppable
stopUnchecked
-
Field Details
-
LOGGER
-
-
Constructor Details
-
PartedTrimLoggerImpl
public PartedTrimLoggerImpl(org.refcodes.tabular.Column<P> aPartitionColumn, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)Instantiates a new parted trim logger impl.- Parameters:
aPartitionColumn
- the partition columnaLoggerFactory
- the logger factoryisPartitionAutoInitialize
- the is partition auto initialize
-
PartedTrimLoggerImpl
public PartedTrimLoggerImpl(org.refcodes.tabular.Column<P> aPartitionColumn, String aDefaultLoggerName, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)Instantiates a new parted trim logger impl.- Parameters:
aPartitionColumn
- the partition columnaDefaultLoggerName
- the default logger nameaLoggerFactory
- the logger factoryisPartitionAutoInitialize
- the is partition auto initialize
-
PartedTrimLoggerImpl
public PartedTrimLoggerImpl(org.refcodes.controlflow.ExecutionStrategy aComponentExecutionStrategy, org.refcodes.tabular.Column<P> aPartitionColumn, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)Similar to thePartedTrimLoggerImpl(Column, LoggerFactory, boolean)
constructor with the additional option of determining the execution strategy of the state change request calls for the encapsulatedTrimLogger
instances (as ofCompositeComponent
).- Parameters:
aComponentExecutionStrategy
- The strategy to be used when invoking a component's (encapsulatedTrimLogger
instance's) state change request call (as ofCompositeComponent
).
-
PartedTrimLoggerImpl
public PartedTrimLoggerImpl(org.refcodes.controlflow.ExecutionStrategy aComponentExecutionStrategy, org.refcodes.tabular.Column<P> aPartitionColumn, String aDefaultLoggerName, LoggerFactory<TrimLogger<T>> aLoggerFactory, boolean isPartitionAutoInitialize)Similar to thePartedTrimLoggerImpl(Column, LoggerFactory, boolean)
constructor with the additional option of determining the execution strategy of the state change request calls for the encapsulatedTrimLogger
instances (as ofCompositeComponent
).- Parameters:
aComponentExecutionStrategy
- The strategy to be used when invoking a component's (encapsulatedTrimLogger
instance's) state change request call (as ofCompositeComponent
).
-
-
Method Details
-
initialize
public void initialize() throws org.refcodes.component.InitializeException- Specified by:
initialize
in interfaceorg.refcodes.component.Initializable
- Throws:
org.refcodes.component.InitializeException
-
start
public void start() throws org.refcodes.component.StartException- Specified by:
start
in interfaceorg.refcodes.component.Startable
- Throws:
org.refcodes.component.StartException
-
pause
public void pause() throws org.refcodes.component.PauseException- Specified by:
pause
in interfaceorg.refcodes.component.Pausable
- Throws:
org.refcodes.component.PauseException
-
resume
public void resume() throws org.refcodes.component.ResumeException- Specified by:
resume
in interfaceorg.refcodes.component.Resumable
- Throws:
org.refcodes.component.ResumeException
-
stop
public void stop() throws org.refcodes.component.StopException- Specified by:
stop
in interfaceorg.refcodes.component.Stoppable
- Throws:
org.refcodes.component.StopException
-
decompose
public void decompose()- Specified by:
decompose
in interfaceorg.refcodes.component.Decomposeable
-
flush
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
IOException
-
destroy
public void destroy()- Specified by:
destroy
in interfaceorg.refcodes.component.Destroyable
-
reset
public void reset()- Specified by:
reset
in interfaceorg.refcodes.component.Resetable
-
open
- Specified by:
open
in interfaceorg.refcodes.component.Openable
- Throws:
IOException
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
dispose
public void dispose()- Specified by:
dispose
in interfaceorg.refcodes.mixin.Disposable
-
deleteLogs
public void deleteLogs(org.refcodes.criteria.Criteria aCriteria)Deletes loggedRecord
instances according to the providedCriteria
.- Specified by:
deleteLogs
in interfaceTrimLogger<L extends TrimLogger<T>>
- Parameters:
aCriteria
- TheCriteria
to be applied when deleting previously loggedRecord
instances.
-
clear
public void clear()- Specified by:
clear
in interfaceorg.refcodes.mixin.Clearable
-
findLogs
Retrieves all availableRecord
instances being logged.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Returns:
- A
Records
instance containing all availableRecord
instances being logged.
-
findLogs
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aLimit
- The maximumRecord
instances contained in the returnedRecords
instance; there may be moreRecord
instances which are not contained in theRecords
instance in case theRecords
instance's size is that of the specified limit.- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
findLogs
Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aCriteria
- TheCriteria
to be applied to theRecord
instances- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
findLogs
public org.refcodes.tabular.Records<T> findLogs(org.refcodes.tabular.Header<T> aHeader, int aLimit)Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aHeader
- TheHeader
used to restrict the "columns" (key/value entries) in the retrievedRecord
instances (provided by theRecords
instance).aLimit
- The maximumRecord
instances contained in the returnedRecords
instance; there may be moreRecord
instances which are not contained in theRecords
instance in case theRecords
instance's size is that of the specified limit.- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
findLogs
public org.refcodes.tabular.Records<T> findLogs(org.refcodes.criteria.Criteria aCriteria, int aLimit)Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aCriteria
- TheCriteria
to be applied to theRecord
instancesaLimit
- The maximumRecord
instances contained in the returnedRecords
instance; there may be moreRecord
instances which are not contained in theRecords
instance in case theRecords
instance's size is that of the specified limit.- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
findLogs
public org.refcodes.tabular.Records<T> findLogs(org.refcodes.criteria.Criteria aCriteria, org.refcodes.tabular.Header<T> aHeader)Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aCriteria
- TheCriteria
to be applied to theRecord
instancesaHeader
- TheHeader
used to restrict the "columns" (key/value entries) in the retrievedRecord
instances (provided by theRecords
instance).- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
findLogs
public org.refcodes.tabular.Records<T> findLogs(org.refcodes.criteria.Criteria aCriteria, org.refcodes.tabular.Header<T> aHeader, int aLimit)Retrieves all availableRecord
instances being logged matching the given criteria and restrictions.- Specified by:
findLogs
in interfaceQueryLogger<L extends QueryLogger<T>>
- Parameters:
aCriteria
- TheCriteria
to be applied to theRecord
instancesaHeader
- TheHeader
used to restrict the "columns" (key/value entries) in the retrievedRecord
instances (provided by theRecords
instance).aLimit
- The maximumRecord
instances contained in the returnedRecords
instance; there may be moreRecord
instances which are not contained in theRecords
instance in case theRecords
instance's size is that of the specified limit.- Returns:
- A
Records
instance containing all availableRecord
instances being logged matching the given criteria and restrictions.
-
getPartitionLoggers
Retrieves a collection withLogger
instances managing the provided partitions.- Parameters:
aPartitions
- The partitions for which to get theLogger
instances.- Returns:
- A
Collection
with none to manyLogger
instances
-
log
public void log(org.refcodes.tabular.Record<? extends T> aRecord) throws IllegalRecordRuntimeException, UnexpectedLogRuntimeExceptionLogs aRecord
. The targeted data sink for theRecord
instances (where them are physically stored) depends on the implementation of theLogger
. It can be a console, a file, a stream or a database.- Specified by:
log
in interfaceLogger<L extends Logger<T>>
- Parameters:
aRecord
- TheRecord
to be logged.- Throws:
IllegalRecordRuntimeException
- Thrown in case the record cannot be logged as a specific implementation might expect some dedicatedColumn
instances to be contained in the provided Record.UnexpectedLogRuntimeException
- Thrown in case some other problems regarding logging occurred, e.g. the data sink (physical system where to log to) experiences problems.
-
hasPartition
Tests whether the provided partition exists.- Parameters:
aPartition
- The value of theColumn
in aRecord
specifying the partition which is to be addressed (or even auto initialized).- Returns:
- True in case the partition exists, else false.
-
initPartition
Initializes the given partition.- Parameters:
aPartition
- The value of theColumn
in aRecord
specifying the partition which is to be auto initialized.- Returns:
- the l
- Throws:
org.refcodes.component.InitializeException
- in case initialization failed e.g. when the partition already exists or the system was not able to create the required amount of endpoints.
-
destroyPartition
Destroys the given partition. External resources might stay untouched! In case the partition does not exist, then there is no partition to be destroyed. To make things easier, this is not considered an exceptional state as after the call we expect that there is none such partition (any more) which is not destroyed.- Parameters:
aPartition
- the partition
-
flushPartition
Flushes the given partition, all buffered data is to be forwarded to the physical data sink.- Parameters:
aPartition
- The partition to be flushed.- Throws:
IOException
- in case there were problems when flushing, e.g. there is none such partition.
-
decomposePartition
Decomposes the given partition. External resources might get deleted (such as files or DB schemas)! In case the partition does not exist, then there is no partition to be decomposed. To make things easier, this is not considered an exceptional state as after the call we expect that there is none such partition (any more).- Parameters:
aPartition
- The partition to be decomposed.
-
getLoggers
Provides access to the partitions managed by theAbstractPartedLogger
. This is especially useful for extensions of this class such as theAbstractPartedQueryLogger
or theAbstractPartedTrimLogger
.- Returns:
- The
Logger
instances managed by theAbstractPartedLogger
instance.
-
getPartitionUid
Depending whether the partition object provides a Universal-TID or not we return the string representation of the partition's object or the UID.- Parameters:
aPartition
- The partition for which to get the identifier- Returns:
- The UID in case the partition provides a UID, else the partition's string representation.
-
getPartitionColumn
Provides access to theColumn
used to identify partitions.- Returns:
- The
Column
identifying partitions.
-
getPartitionLogger
Returns theLogger
being responsible for the given partition. -
getFallbackLogger
Returns the fallbackLogger
.- Returns:
- The fallback logger or null if none was enabled.
-