Class LineWriter
- java.lang.Object
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
ArrayOfRecordsExporter
,CSVWriter
,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, precede this actor with TokenToExpression.
The file is specified by the fileName attribute using any form acceptable to
FileParameter
.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$
- Author:
- Edward A. Lee
- See Also:
FileParameter
,ExpressionWriter
- Pt.AcceptedRating:
- Red (liuj)
- Pt.ProposedRating:
- Yellow (eal)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_flushValue
If true, flush the writer after every write.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.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _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
Constructors Constructor Description LineWriter(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 from each input channel and write it to the file, one line per token.void
preinitialize()
Read the value of alwaysFlush parameter.void
wrapup()
Close the writer if there is one.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, 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
_addPort, _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, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
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
-
-
-
-
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.
-
-
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 classNamedObj
- 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 classTypedAtomicActor
- 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 from each input channel and write it to the file, one line per token. 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 interfaceExecutable
- Overrides:
postfire
in classAtomicActor<TypedIOPort>
- 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 interfaceInitializable
- Overrides:
preinitialize
in classAtomicActor<TypedIOPort>
- 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 interfaceInitializable
- Overrides:
wrapup
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If an IO error occurs.
-
_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.
-
-