Package org.esa.snap.core.dataio
Class AbstractProductWriter
- java.lang.Object
-
- org.esa.snap.core.dataio.AbstractProductWriter
-
- All Implemented Interfaces:
ProductWriter
- Direct Known Subclasses:
DimapProductWriter
public abstract class AbstractProductWriter extends Object implements ProductWriter
TheAbstractProductWriter
class can be used as a base class for new product writer implementations.- Version:
- $Revision$ $Date$
- See Also:
writeProductNodes(org.esa.snap.core.datamodel.Product, java.lang.Object)
-
-
Constructor Summary
Constructors Constructor Description AbstractProductWriter(ProductWriterPlugIn writerPlugIn)
Constructs aProductWriter
.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
checkOutput()
Utility method which ensures that an output is assigned to this writer.Object
getOutput()
Retrives the current output destination object.protected Product
getSourceProduct()
Returns the source product to be written ornull
if thewriteProductNodes
has not be called so far.ProductWriterPlugIn
getWriterPlugIn()
Returns the plug-in which created this product writer.boolean
isIncrementalMode()
Returns whether this product writer writes only modified product nodes.protected boolean
isInstanceOfValidOutputType(Object output)
Checks if the given object is an instance of one of the valid output types for this product writer.void
removeBand(Band band)
Overwrite this method to physicaly delete aBand
from the writer's output file.void
setFormatName(String formatName)
Sets selectable product format for writers which handle multiple formats.void
setIncrementalMode(boolean enabled)
Enables resp.boolean
shouldWrite(ProductNode node)
Returns wether the given product node is to be written.void
writeProductNodes(Product product, Object output)
Writes the in-memory representation of a data product.protected abstract void
writeProductNodesImpl()
Writes the in-memory representation of a data product.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.esa.snap.core.dataio.ProductWriter
close, deleteOutput, flush, writeBandRasterData
-
-
-
-
Constructor Detail
-
AbstractProductWriter
public AbstractProductWriter(ProductWriterPlugIn writerPlugIn)
Constructs aProductWriter
. Since no output destination is set, thesetOutput
method must be called before data can be written.- Parameters:
writerPlugIn
- the plug-in which created this writer, must not benull
- Throws:
IllegalArgumentException
- See Also:
writeProductNodes(org.esa.snap.core.datamodel.Product, java.lang.Object)
-
-
Method Detail
-
getWriterPlugIn
public ProductWriterPlugIn getWriterPlugIn()
Returns the plug-in which created this product writer.- Specified by:
getWriterPlugIn
in interfaceProductWriter
- Returns:
- the product writer plug-in, should never be
null
-
getSourceProduct
protected Product getSourceProduct()
Returns the source product to be written ornull
if thewriteProductNodes
has not be called so far.
-
getOutput
public Object getOutput()
Retrives the current output destination object. Thie return value might benull
if thesetOutput
method has not been called so far.- Specified by:
getOutput
in interfaceProductWriter
- Returns:
- the output
-
writeProductNodes
public void writeProductNodes(Product product, Object output) throws IOException
Writes the in-memory representation of a data product.Whether the band data - the actual pixel values - is written out immediately or later when pixels are flushed, is up to the implementation.
- Specified by:
writeProductNodes
in interfaceProductWriter
- Parameters:
product
- the in-memory representation of the data productoutput
- an object representing a valid output for this writer, might be aImageOutputStream
or otherObject
to use for future decoding.- Throws:
IllegalArgumentException
- ifproduct
isnull
.IllegalArgumentException
- ifoutput
isnull
or it's type is none of the supported output types.IOException
- if an I/O error occurs
-
writeProductNodesImpl
protected abstract void writeProductNodesImpl() throws IOException
Writes the in-memory representation of a data product. This method was called bywriteProductNodes(product, output)
of the AbstractProductWriter.- Throws:
IllegalArgumentException
- ifoutput
type is not one of the supported output sources.IOException
- if an I/O error occurs
-
checkOutput
protected void checkOutput() throws IllegalStateException
Utility method which ensures that an output is assigned to this writer.- Throws:
IllegalStateException
- if no output was set (output isnull
).
-
isInstanceOfValidOutputType
protected boolean isInstanceOfValidOutputType(Object output)
Checks if the given object is an instance of one of the valid output types for this product writer.- Returns:
true
if so- See Also:
ProductWriterPlugIn.getOutputTypes()
-
shouldWrite
public boolean shouldWrite(ProductNode node)
Returns wether the given product node is to be written.- Specified by:
shouldWrite
in interfaceProductWriter
- Parameters:
node
- the product node- Returns:
true
if so
-
setIncrementalMode
public void setIncrementalMode(boolean enabled)
Enables resp. disables incremental writing of this product writer. By default, a reader should enable progress listening.- Specified by:
setIncrementalMode
in interfaceProductWriter
- Parameters:
enabled
- enables or disables progress listening.
-
isIncrementalMode
public boolean isIncrementalMode()
Returns whether this product writer writes only modified product nodes.- Specified by:
isIncrementalMode
in interfaceProductWriter
- Returns:
true
if so
-
removeBand
public void removeBand(Band band)
Overwrite this method to physicaly delete aBand
from the writer's output file.- Specified by:
removeBand
in interfaceProductWriter
- Parameters:
band
- The band to delete.
-
setFormatName
public void setFormatName(String formatName)
Sets selectable product format for writers which handle multiple formats.- Specified by:
setFormatName
in interfaceProductWriter
- Parameters:
formatName
- The name of the file format.
-
-