Author: nicolas Date: Tue Apr 15 02:14:45 2008 New Revision: 648190 URL: http://svn.apache.org/viewvc?rev=648190&view=rev Log: PeriodicLogger can be started at a fixed Date
Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/MonitoringListener.java Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java?rev=648190&r1=648189&r2=648190&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java Tue Apr 15 02:14:45 2008 @@ -44,7 +44,7 @@ private int size; - public HistorizedRepositoryDecorator( long period, final int size, Observable repository ) + public HistorizedRepositoryDecorator( int period, final int size, Observable repository ) { super( period, repository ); this.repository = repository; Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java?rev=648190&r1=648189&r2=648190&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java Tue Apr 15 02:14:45 2008 @@ -18,6 +18,8 @@ package org.apache.commons.monitoring.reporting; import java.io.IOException; +import java.util.Calendar; +import java.util.Date; import java.util.Timer; import java.util.TimerTask; @@ -47,15 +49,35 @@ /** * @param period the period (in ms) to log the monitoring state - * @param repository the target monitoring repository + * @param repository the observed repository */ - public AbstractPeriodicLogger( long period, Repository.Observable repository ) + public AbstractPeriodicLogger( int period, Repository.Observable repository ) + { + this( period, null, repository ); + } + + /** + * Create and start a PeriodicLogger to observe and log the repository datas. + * If <tt>firstTime</tt> is null, the first time to log will be computed to + * log first at current date + period. + * + * @param period the period (in ms) to log the monitoring state + * @param firstTime the first time to log the observed repository (may be null) + * @param repository the observed repository + */ + public AbstractPeriodicLogger( int period, Date firstTime, Repository.Observable repository ) { super(); this.repository = repository; observeRepositoryForPeriod(); timer = new Timer(); - timer.scheduleAtFixedRate( this, period, period ); + if (firstTime == null) + { + Calendar c = Calendar.getInstance(); + c.add( Calendar.MILLISECOND, period ); + firstTime = c.getTime(); + } + timer.scheduleAtFixedRate( this, firstTime, period ); } @@ -115,7 +137,7 @@ * @param period secondary repository that observed the monitored state during the last active period */ protected abstract void log( SecondaryRepository period ) throws IOException; - + /** * @return the SecondaryRepository active for the current period. */ Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java?rev=648190&r1=648189&r2=648190&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/SelectorPeriodicLogger.java Tue Apr 15 02:14:45 2008 @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.Arrays; +import java.util.Date; import java.util.List; import org.apache.commons.monitoring.Repository; @@ -40,12 +41,13 @@ /** * @param period the period (in ms) to log the monitoring state - * @param repository the target monitoring repository + * @param firstTime the first time to log (may be null) + * @param repository the observed repository * @param output the output file */ - public SelectorPeriodicLogger( long period, Repository.Observable repository, List<String> selectors ) + public SelectorPeriodicLogger( int period, Date firstTime, Repository.Observable repository, List<String> selectors ) { - super( period, repository ); + super( period, firstTime, repository ); this.selectors = new Selector[selectors.size()]; int i = 0; for ( String path : selectors ) @@ -54,14 +56,16 @@ } } + + /** * @param period the period (in ms) to log the monitoring state * @param repository the target monitoring repository * @param output the output file */ - public SelectorPeriodicLogger( long period, Repository.Observable repository, String[] selectors ) + public SelectorPeriodicLogger( int period, Date firstTime, Repository.Observable repository, String[] selectors ) { - this( period, repository, Arrays.asList( selectors ) ); + this( period, firstTime, repository, Arrays.asList( selectors ) ); } /** Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/MonitoringListener.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/MonitoringListener.java?rev=648190&r1=648189&r2=648190&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/MonitoringListener.java (original) +++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/MonitoringListener.java Tue Apr 15 02:14:45 2008 @@ -137,12 +137,12 @@ Repository.Observable observable = (Repository.Observable) repository; int idx = history.indexOf( ':' ); char[] ch = history.toCharArray(); - long period = 0; + int period = 0; for ( int i = 0; i < idx; i++ ) { if ( Character.isDigit( ch[i] ) ) continue; - period = Long.parseLong( history.substring( 0, i ) ); + period = Integer.parseInt( history.substring( 0, i ) ); String unit = history.substring( i, idx ); if ( unit != null ) {