uchicago.src.sim.analysis
Class DataRecorder

java.lang.Object
  extended by uchicago.src.sim.analysis.DataRecorder
All Implemented Interfaces:
DataSourceRecorder, Recorder, SimEventListener

public class DataRecorder
extends java.lang.Object
implements DataSourceRecorder

Created by IntelliJ IDEA. User: thowe Date: Jan 2, 2003 Time: 1:06:17 PM To change this template use Options | File Templates.


Constructor Summary
DataRecorder(java.lang.String fileName, SimModel model)
          Constructs a DataRecorder using the specified file name and model.
DataRecorder(java.lang.String fileName, SimModel model, boolean batch)
          Deprecated.  
DataRecorder(java.lang.String fileName, SimModel model, boolean isBatch, java.lang.String headerComment)
          Deprecated.  
DataRecorder(java.lang.String fileName, SimModel model, java.lang.String headerComment)
          Constructs a DataRecorder using the specified file name, model, and headerComment.
 
Method Summary
 void addNumericDataSource(java.lang.String name, NumericDataSource s)
          Adds a NumericDataSource to this DataRecorder with the specified name.
 void addNumericDataSource(java.lang.String name, NumericDataSource s, int maxIntegerDigits, int maxFractionDigits)
          Adds a NumericDataSource to this DataRecorder with the specified name, and specified number of integral and fractional digits.
 void addObjectDataSource(java.lang.String name, DataSource s)
          Adds a DataSource to this DataRecorder with the specified name.
 void createAverageDataSource(java.lang.String name, java.util.ArrayList feedFrom, java.lang.String methodName)
          Creates an average data source from a specified list using a method with the specified name.
 void createAverageDataSource(java.lang.String name, java.util.ArrayList feedFrom, java.lang.String methodName, int maxIntegerDigits, int maxFractionDigits)
          Creates an average data source from a specified list using a method with the specified name.
 void createNumericDataSource(java.lang.String name, java.lang.Object feedFrom, java.lang.String methodName)
          Creates a NumericDataSource using the specified object and the specified method name.
 void createNumericDataSource(java.lang.String name, java.lang.Object feedFrom, java.lang.String methodName, int maxIntegerDigits, int maxFractionDigits)
          Creates a NumericDataSource using the specified object and the specified method name.
 void createObjectDataSource(java.lang.String name, java.lang.Object feedFrom, java.lang.String methodName)
          Creates a DataSource using the specified object and the specified method name.
 void record()
          Records the data for the current tick in tabular format.
 void setDelimeter(java.lang.String delimeter)
          Sets the column delimiter.
 void simEventPerformed(SimEvent evt)
           
 void write()
          Writes the recorded data out to a file in tabular format.
 void writeEnd()
          Writes any ending matter to the file.
 void writeToFile()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DataRecorder

public DataRecorder(java.lang.String fileName,
                    SimModel model)
Constructs a DataRecorder using the specified file name and model. Defaults to non-batch mode.

Parameters:
fileName - the file to which the data is recorded
model - the model from which the data is drawn. The relevant model parameters (set/get parameters, rng seed) are written to the header of the file.

DataRecorder

public DataRecorder(java.lang.String fileName,
                    SimModel model,
                    java.lang.String headerComment)
Constructs a DataRecorder using the specified file name, model, and headerComment.

Parameters:
fileName - the file to which the data is recorded
model - the model from which the data is drawn. The relevant model parameters (set/get parameters, rng seed) are written to the header of the file
headerComment - a comment to prepend to the file header information

DataRecorder

public DataRecorder(java.lang.String fileName,
                    SimModel model,
                    boolean batch)
Deprecated. 

This constructor is deprecated. Use DataRecorder(String fileName, SimModel model) instead.

Parameters:
fileName -
model -
batch -

DataRecorder

public DataRecorder(java.lang.String fileName,
                    SimModel model,
                    boolean isBatch,
                    java.lang.String headerComment)
Deprecated. 

This constructor is deprecated. Use DataRecorder(String fileName, SimModel model, String headerComment) instead.

Parameters:
fileName -
model -
isBatch -
headerComment -
Method Detail

addNumericDataSource

public void addNumericDataSource(java.lang.String name,
                                 NumericDataSource s,
                                 int maxIntegerDigits,
                                 int maxFractionDigits)
Adds a NumericDataSource to this DataRecorder with the specified name, and specified number of integral and fractional digits. The NumericDataSource generates the data to be recorded.

Specify a maxIntegerDigits of less than 0 to avoid rounding and truncating the integeral portion of the number. Similarly, specify a maxFractionDigits of less than 0 to avoid rounding and truncating the fractional portion of the number.

Note that the number is rounded if necessary when trucated. For example, with a maxFactionDigits of 2, the number 99.555 becomes 99.56.

Specified by:
addNumericDataSource in interface DataSourceRecorder
Parameters:
name - the name of the data (e.g. Number of Agents)
s - the source of the data
maxIntegerDigits - the maximum number of digits before the decimal point. A value of -1 will record all the digits.
maxFractionDigits - the maximum number of digits after the decimal point. A value of -1 will record all the digits.

addNumericDataSource

public void addNumericDataSource(java.lang.String name,
                                 NumericDataSource s)
Adds a NumericDataSource to this DataRecorder with the specified name. The NumericDataSource generates the data to be recorded.

Specified by:
addNumericDataSource in interface DataSourceRecorder
Parameters:
name - the name of the data (e.g. Number of Agents)
s - the source of the data

createObjectDataSource

public void createObjectDataSource(java.lang.String name,
                                   java.lang.Object feedFrom,
                                   java.lang.String methodName)
Creates a DataSource using the specified object and the specified method name. Whenever DataRecorder.record is called, the method of this name is called on this object and the result is recorded.

Note the specified method must return an Object, that is, anything but void or a primitive. The method must be public.

Specified by:
createObjectDataSource in interface DataSourceRecorder
Parameters:
name - the name for this data source. This corresponds to the column name when this object is written out to the file
feedFrom - the object on which to call the method
methodName - the name of the method to call

createNumericDataSource

public void createNumericDataSource(java.lang.String name,
                                    java.lang.Object feedFrom,
                                    java.lang.String methodName,
                                    int maxIntegerDigits,
                                    int maxFractionDigits)
Creates a NumericDataSource using the specified object and the specified method name. Whenever DataRecorder.record is called, the method of this name is called on this object and the result is recorded.

Note the specified method must explicity return a double, that is, the return value of the method signature must be a double (e.g. public double ...). The method must be public.

Specified by:
createNumericDataSource in interface DataSourceRecorder
Parameters:
name - the name for this data source. This corresponds to the column name when this object is written out to the file
feedFrom - the object on which to call the method
methodName - the name of the method to call
maxIntegerDigits - the maximum number of digits before the decimal point. A value of -1 will record all the digits.
maxFractionDigits - the maximum number of digits after the decimal point. A value of -1 will record all the digits.

createNumericDataSource

public void createNumericDataSource(java.lang.String name,
                                    java.lang.Object feedFrom,
                                    java.lang.String methodName)
Creates a NumericDataSource using the specified object and the specified method name. Whenever DataRecorder.record is called, the method of this name is called on this object and the result is recorded.

Note the specified method must explicity return a double, that is, the return value of the method signature must be a double (e.g. public double ...). The method must be public.

Specified by:
createNumericDataSource in interface DataSourceRecorder
Parameters:
name - the name for this data source. This corresponds to the column name when this object is written out to the file
feedFrom - the object on which to call the method
methodName - the name of the method to call

addObjectDataSource

public void addObjectDataSource(java.lang.String name,
                                DataSource s)
Adds a DataSource to this DataRecorder with the specified name. The DataSource generates the data that is to be recorded.

Specified by:
addObjectDataSource in interface DataSourceRecorder
Parameters:
name - the name of the data to be recorded
s - the DataSource for the data to be recorded

createAverageDataSource

public void createAverageDataSource(java.lang.String name,
                                    java.util.ArrayList feedFrom,
                                    java.lang.String methodName)
Creates an average data source from a specified list using a method with the specified name. Whenever DataRecorder.record is called, this method is called on all the objects in the list, the resulting values are averaged, and this average is recorded.

Specified by:
createAverageDataSource in interface DataSourceRecorder
Parameters:
name - the name for this data source. This corresponds to the column name when this object is written out to the file
feedFrom - the list of object on which to call the method
methodName - the name of the method to call. This method should return some sub class of java.lang.Number

createAverageDataSource

public void createAverageDataSource(java.lang.String name,
                                    java.util.ArrayList feedFrom,
                                    java.lang.String methodName,
                                    int maxIntegerDigits,
                                    int maxFractionDigits)
Creates an average data source from a specified list using a method with the specified name. Whenever DataRecorder.record is called, this method is called on all the objects in the list, the resulting values are averaged, and this average is recorded.

Specified by:
createAverageDataSource in interface DataSourceRecorder
Parameters:
name - the name for this data source. This corresponds to the column name when this object is written out to the file
feedFrom - the list of object on which to call the method
methodName - the name of the method to call. This method should return some sub class of java.lang.Number

record

public void record()
Records the data for the current tick in tabular format. Each tick is a row, and each column is the name of the data source.

Specified by:
record in interface Recorder

write

public void write()
Writes the recorded data out to a file in tabular format. This also does a flush on the data itself (i.e. the data is no longer stored by repast and exists only in the file). Identical to writeToFile().

Specified by:
write in interface Recorder

writeToFile

public void writeToFile()
Specified by:
writeToFile in interface Recorder

writeEnd

public void writeEnd()
Writes any ending matter to the file. Used internally during a batch run to write the ending time of the entire batch. A model would not typically call this method.

Specified by:
writeEnd in interface Recorder

simEventPerformed

public void simEventPerformed(SimEvent evt)
Specified by:
simEventPerformed in interface Recorder
Specified by:
simEventPerformed in interface SimEventListener

setDelimeter

public void setDelimeter(java.lang.String delimeter)
Sets the column delimiter. Data is written out in tabular format where the columns are separated by the specified delimiter.

Specified by:
setDelimeter in interface DataSourceRecorder
Parameters:
delimeter - the new delimiter