ptolemy.actor.lib.io
Class LineWriter

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.Sink
                              extended by ptolemy.actor.lib.io.LineWriter
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
ArrayOfRecordsExporter, ExpressionWriter

public class LineWriter
extends Sink

This actor reads string-valued input tokens and writes them, one line at a time, to a specified file. It does not include any enclosing quotation marks in the output. If you need the enclosing quotation marks, use ExpressionWriter.

The file is specified by the fileName attribute using any form acceptable to FilePortParameter.

If the append attribute has value true, then the file will be appended to. If it has value false, then if the file exists, the user will be queried for permission to overwrite, and if granted, the file will be overwritten.

If the confirmOverwrite parameter has value false, then this actor will overwrite the specified file if it exists without asking. If true (the default), then if the file exists, then this actor will ask for confirmation before overwriting.

Since:
Ptolemy II 2.2
Version:
$Id: LineWriter.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Edward A. Lee
See Also:
FilePortParameter, ExpressionWriter, Serialized Form
Accepted Rating:
Red (liuj)
Proposed Rating:
Yellow (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
protected  boolean _flushValue
          If true, flush the writer after every write.
private  java.lang.String _previousFileName
          Previous value of fileName parameter.
protected  java.io.PrintWriter _writer
          The current writer.
 Parameter alwaysFlush
          If true, flush output after each line is written.
 Parameter append
          If true, then append to the specified file.
 Parameter confirmOverwrite
          If false, then overwrite the specified file if it exists without asking.
 Parameter endOfLineCharacter
          End of line character to use.
 FilePortParameter fileName
          The file name to which to write.
 
Fields inherited from class ptolemy.actor.lib.Sink
input
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
LineWriter(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
protected  void _setInputConstraints()
          Set the type constraints and multiport property of the input port.
protected  void _writeToken(Token token)
          Write the specified token to the current writer.
 void attributeChanged(Attribute attribute)
          If the specified attribute is fileName and there is an open file being written, then close that file.
 java.lang.Object clone(Workspace workspace)
          Clone the actor into the specified workspace.
 boolean postfire()
          Read an input string token and write it to the file.
 void preinitialize()
          Read the value of alwaysFlush parameter.
 void wrapup()
          Close the writer if there is one.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, removeInitializable
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

append

public Parameter append
If true, then append to the specified file. If false (the default), then overwrite any preexisting file after asking the user for permission.


fileName

public FilePortParameter fileName
The file name to which to write. This is a string with any form accepted by FilePortParameter. The default value is "System.out".

See Also:
FilePortParameter

confirmOverwrite

public Parameter confirmOverwrite
If false, then overwrite the specified file if it exists without asking. If true (the default), then if the file exists, ask for confirmation before overwriting.


endOfLineCharacter

public Parameter endOfLineCharacter
End of line character to use. This is a string that defaults to null, which results in the current platform's standard end-of-line character being used. If an empty string is specified, then no end of line character is used after each output written to the file.


alwaysFlush

public Parameter alwaysFlush
If true, flush output after each line is written. If false (the default), the output may not be written until the stream is closed during wrapup().


_flushValue

protected boolean _flushValue
If true, flush the writer after every write.


_writer

protected java.io.PrintWriter _writer
The current writer.


_previousFileName

private java.lang.String _previousFileName
Previous value of fileName parameter.

Constructor Detail

LineWriter

public LineWriter(CompositeEntity container,
                  java.lang.String name)
           throws IllegalActionException,
                  NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
If the specified attribute is fileName and there is an open file being written, then close that file. The new file will be opened or created when it is next written to.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that has changed.
Throws:
IllegalActionException - If the specified attribute is fileName and the previously opened file cannot be closed.

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the actor into the specified workspace.

Overrides:
clone in class AtomicActor
Parameters:
workspace - The workspace for the new object.
Returns:
A new actor.
Throws:
java.lang.CloneNotSupportedException - If a derived class contains an attribute that cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

postfire

public boolean postfire()
                 throws IllegalActionException
Read an input string token and write it to the file. If there is no input, do nothing. If the file is not open for writing then open it. If the file does not exist, then create it. If the file already exists, then query the user for overwrite, unless the append parameter has value true.

Specified by:
postfire in interface Executable
Overrides:
postfire in class AtomicActor
Returns:
True if execution can continue into the next iteration.
Throws:
IllegalActionException - If the file cannot be opened or created, or if the user refuses to overwrite an existing file.

preinitialize

public void preinitialize()
                   throws IllegalActionException
Read the value of alwaysFlush parameter.

Specified by:
preinitialize in interface Initializable
Overrides:
preinitialize in class AtomicActor
Throws:
IllegalActionException - If there is an error reading the alwaysFlush parameter.

wrapup

public void wrapup()
            throws IllegalActionException
Close the writer if there is one.

Specified by:
wrapup in interface Initializable
Overrides:
wrapup in class AtomicActor
Throws:
IllegalActionException - If an IO error occurs.

_setInputConstraints

protected void _setInputConstraints()
                             throws IllegalActionException
Set the type constraints and multiport property of the input port. This is done here so that derived classes can override it.

Throws:
IllegalActionException - If making the port a multiport is not allowed.

_writeToken

protected void _writeToken(Token token)
                    throws IllegalActionException
Write the specified token to the current writer. This is protected so that derived classes can modify the format in which the token is written.

Parameters:
token - The token to write.
Throws:
IllegalActionException - Not thrown in this base class.