public class TLcdDAFIFATSRouteDecoder extends ALcdDAFIFSingleModelDecoder
ALcdDAFIFSingleModelDecoder
decodes
ATS routes from a DAFIF source file. Decoded models have as model descriptor
an instance of TLcdDAFIFATSRouteModelDescriptor
.
The objects in decoded models are based on the AIS domain objects available in com.luciad.ais.model
,
which all implement ILcdDataObject
. This interface provides a generic and
format-independent way of accessing the type and properties (features) of a domain object.
For this decoder, the type of the decoded objects is TLcdDAFIFDataTypes.ATSRoute
,
which can also be retrieved through ILcdDataObject.getDataType()
.
The available properties of the objects are defined in TLcdDAFIFATSRouteDataProperties
.
The values for these properties can be retrieved through ILcdDataObject.getValue(com.luciad.datamodel.TLcdDataProperty)
.
Next to ILcdDataObject
, the objects in decoded models also implement ILcdFeatured
,
the former interface to access the properties (features) of a domain object.
This is still fully supported, and explained in the following comments.
The setATSRouteFeaturesToBeDecoded
method and the
setATSRouteSegmentFeaturesToBeDecoded
method
allow the user to specify which DAFIF features are decoded into the featured model objects.
If no features to be decoded are specified, all features will be decoded.
The following fields (taken from the National Imagery and Mapping Agency (NIMA) Product Specifications for Digital Aeronautical Flight Information File (DAFIF), Seventh Edition, May 2001) are supported by the decoder. The list indicates into which feature the fields are decoded.
DAFIF decoders rely on a specific set of key features that uniquely define an object. This set of features must always be included in the set of features to be decoded. For ATS routes the key features are:
ATS routes are composed of waypoints. The TLcdDAFIFATSRouteDecoder
class does not decode
the waypoints necessary to construct the ATS routes. A waypoint model should be specified
using the setWaypointsModel
method.
To identify the waypoint objects uniquely within the waypoint model, a unique index
on the IDENTIFIER
feature and the
COUNTRY_CODE
feature should be added.
The createRequiredIndex
method can be used for this.
NOTE: The createRequiredIndex
method should be called before the
setWaypointsModel
method (and the latter should be called before
calling the decode
method of course).
DAFIF_PROP_EXTENSION, fRecordCount
Constructor and Description |
---|
TLcdDAFIFATSRouteDecoder(ALcdAISObjectFactory aDomainFactory)
Deprecated.
|
TLcdDAFIFATSRouteDecoder(ALcdAISObjectFactory aDomainFactory,
Properties aDAFIFProperties)
Deprecated.
|
TLcdDAFIFATSRouteDecoder(TLcdAISDataObjectFactory aFactory)
Creates a new
TLcdDAFIFATSRouteDecoder . |
TLcdDAFIFATSRouteDecoder(TLcdAISDataObjectFactory aFactory,
Properties aDAFIFProperties)
Creates a new
TLcdDAFIFATSRouteDecoder . |
Modifier and Type | Method and Description |
---|---|
protected ILcdModelDescriptor |
createModelDescriptor(String aSource)
Creates and returns the model descriptor to be set on the model returned in the
decode method. |
void |
createRequiredIndex(ILcdFeatureIndexedAnd2DBoundsIndexedModel aModel)
Adds a unique index on the specified model of waypoints.
|
ILcdModel |
decode(String aSource)
Calls the decode method of
ALcdDAFIFSingleModelDecoder . |
String |
getDecodeFileName()
Returns the name of the file to be decoded.
|
String |
getDisplayName()
Returns a short, displayable name for the format that is decoded by this
ILcdModelDecoder . |
protected void |
handleRecord(int aFormat,
char[] aRecord)
Deals with one record of input.
|
void |
setATSRouteFeaturesToBeDecoded(String[] aATSRouteFeaturesToBeDecoded)
Specifies a list of features to be decoded into the
ATS route model objects.
|
void |
setATSRouteSegmentFeaturesToBeDecoded(String[] aATSRouteSegmentFeaturesToBeDecoded)
Specifies a list of features to be decoded into the
ATS route segments.
|
void |
setRouteDefaultDisplayNameIndex(int aIndex)
Specifies the index of the feature to be the
ATS route display name.
|
void |
setRouteSegmentDefaultDisplayNameIndex(int aIndex)
Specifies the index of the feature to be the
ATS route segment display name.
|
void |
setWaypointsModel(ILcdFeatureIndexedAnd2DBoundsIndexedModel aWaypointsModel)
Specifies a model of waypoints.
|
cleanUp, setKeyFeatureNames
addErrorReport, canDecodeSource, getAltitudeType, getBearingTypeForChar, getBounds, getDAFIFProperties, getDataObjectFactory, getDecodingBounds, getDomainFactory, getErrorMessage, getInputStream, getInputStreamFactory, getLocalHorizontalDatum, getModelFilter, getRecordCount, initializeErrorMessage, isStoreOriginalReference, isTraceOn, loadCFGProperties, read, readExactValue, readFormat, readMinLength, readRecord, setBounds, setDAFIFModelFilter, setDAFIFProperties, setDataObjectFactory, setDecodingBounds, setDomainFactory, setInputStreamFactory, setStoreOriginalReference, setTraceOn, transformPointToReferenceDatumSFCT
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
canDecodeSource, decodeModelMetadata, decodeModelMetadata, decodeSource, discoverDataSources
@Deprecated public TLcdDAFIFATSRouteDecoder(ALcdAISObjectFactory aDomainFactory)
TLcdDAFIFATSRouteDecoder
. The user
should specify which domainFactory he or she wants to use to create the ATS routes.aDomainFactory
- the factory to be used to create the ATS routespublic TLcdDAFIFATSRouteDecoder(TLcdAISDataObjectFactory aFactory)
TLcdDAFIFATSRouteDecoder
. The user
should specify which factory he or she wants to use to create the ATS routes.aFactory
- the factory to be used to create the ATS routes@Deprecated public TLcdDAFIFATSRouteDecoder(ALcdAISObjectFactory aDomainFactory, Properties aDAFIFProperties)
TLcdDAFIFATSRouteDecoder
.aDomainFactory
- the factory to be used to create the ATS routesaDAFIFProperties
- a Properties
object that contains for each domain object
the appropriate file namepublic TLcdDAFIFATSRouteDecoder(TLcdAISDataObjectFactory aFactory, Properties aDAFIFProperties)
TLcdDAFIFATSRouteDecoder
.aFactory
- the factory to be used to create the ATS routesaDAFIFProperties
- a Properties
object that contains for each domain object
the appropriate file namepublic ILcdModel decode(String aSource) throws IOException
ALcdDAFIFSingleModelDecoder
.
Checks whether a waypoint model is set before starting the decode process.
If no waypoint model is specified, an IllegalStateException
object
will be thrown.
decode
in interface ILcdModelDecoder
decode
in class ALcdDAFIFSingleModelDecoder
aSource
- either the directory containing the DAFIF source file to decode (if you did not
specify a properties file in the constructor, the default file name will be used) or a .toc file
containing the DAFIF properties (the data file should be in the same directory as the .toc file)IOException
- if an error occurs during the reading processIllegalStateException
- if no waypoint model has been specifiedILcdModelDecoder.canDecodeSource(String)
protected final void handleRecord(int aFormat, char[] aRecord)
ALcdDAFIFSingleModelDecoder
handleRecord
in class ALcdDAFIFSingleModelDecoder
aFormat
- the format of the recordaRecord
- the recordprotected ILcdModelDescriptor createModelDescriptor(String aSource)
ALcdDAFIFSingleModelDecoder
decode
method.createModelDescriptor
in class ALcdDAFIFSingleModelDecoder
aSource
- the source that will be used to decodepublic String getDisplayName()
ILcdModelDecoder
ILcdModelDecoder
.getDisplayName
in interface ILcdModelDecoder
getDisplayName
in class ALcdDAFIFDecoder
ILcdModelDecoder
.public String getDecodeFileName()
ILcdDAFIFDecoder
Each domain object has its own file name. This method returns the name of the data file for the domain objects decoded by this DAFIF decoder.
public void setWaypointsModel(ILcdFeatureIndexedAnd2DBoundsIndexedModel aWaypointsModel)
Please make sure there is a unique index on this model!
aWaypointsModel
- the waypoint model to be used to create the ATS routescreateRequiredIndex(com.luciad.model.ILcdFeatureIndexedAnd2DBoundsIndexedModel)
public void createRequiredIndex(ILcdFeatureIndexedAnd2DBoundsIndexedModel aModel)
This method should be called before calling setWaypointsModel
method.
Please make sure that the following features were decoded into the model objects of the specified waypoint model:
aModel
- a model containing waypointssetWaypointsModel(com.luciad.model.ILcdFeatureIndexedAnd2DBoundsIndexedModel)
public void setRouteDefaultDisplayNameIndex(int aIndex)
aIndex
- the index of the feature to be used as display namepublic void setRouteSegmentDefaultDisplayNameIndex(int aIndex)
aIndex
- the index of the feature to be used as display namepublic void setATSRouteFeaturesToBeDecoded(String[] aATSRouteFeaturesToBeDecoded)
Please make sure that the IDENTIFIER
and the DIRECTION
feature are
in your list of features to be decoded!
aATSRouteFeaturesToBeDecoded
- a list of features that should be decoded into the ATS route objectspublic void setATSRouteSegmentFeaturesToBeDecoded(String[] aATSRouteSegmentFeaturesToBeDecoded)
aATSRouteSegmentFeaturesToBeDecoded
- a list of features that should be decoded into the ATS route segment objects