com.bbn.openmap.graphicLoader.netmap
Class NetMapReader

java.lang.Object
  extended by java.lang.Thread
      extended by com.bbn.openmap.graphicLoader.netmap.NetMapReader
All Implemented Interfaces:
NetMapConstants, java.lang.Runnable

public class NetMapReader
extends java.lang.Thread
implements NetMapConstants

The NetMapReader is the class that makes actual contact with the NetMap server and maintains the connection to it. It is controlled by the NetMapConnector, and is created by it as well. The NetMapReader understands that the NetMap server maintains a notion of views, and that to get information from the server, it has to request information about a particular view. Luckily, a list of views can be requested from the server as well.

The NetMap server will provide a text output stream of lines, with each line representing an event. The NetMapReader has an implicit understanding of the format of different line types, and creates a java Properties object for each line, categorizing each field, and putting it in the Properties object as (Field Header key, Field value). This Properties object is sent to the NetMapConnector, where it is distributed to the NetMapEventListeners. Each NetMapEventListener is free to peruse the Properties object in the event, and get information it needs from each one by asking for specific field values. Some fields may not be present in all Properties objects, but the fields should be consistent for the same event type. At some point, we'll include a description of the events and the fields that can be expected. In general, there are two things you can do. First, you can create a NetMapReader without a view, and then call getViewList() on it to get a list of possible views. The NetMapReader will disconnect itself after that request. Second, you can create a NetMapReader with a specific view (or set the view later), and then call start() on it to begin receiving events about that view. Call disconnect() when you want it to stop.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Fields inherited from interface com.bbn.openmap.graphicLoader.netmap.NetMapConstants
CLEAR, COMMAND_FIELD, DATABASE_TAG_FIELD, DEFAULT_PORT, DEFAULT_SERVER, ELEVATION_FIELD, ERROR_VALUE_DOUBLE, ERROR_VALUE_FLOAT, ERROR_VALUE_INT, HEIGHT_FIELD, ICON_FIELD, INDEX_FIELD, IP_FIELD, JMAP_VIEW_CMD, JOFFSET_FIELD, LABEL_FIELD, LAT_FIELD, LINE_DELETE, LINE_DELETE_STRING, LINK_NODE1_FIELD, LINK_NODE2_FIELD, LINK_OBJECT, LINK_OBJECT_STATUS, LON_FIELD, MENU_FIELD, NAME_FIELD, NODE_DELETE, NODE_DELETE_STRING, NODE_MOVE, NODE_MOVE_STRING, NODE_OBJECT, NODE_OBJECT_STATUS, POSX_FIELD, POSY_FIELD, REFRESH, SHAPE_FIELD, STATUS_FIELD, TIME_FIELD, UPDATE, WIDTH_FIELD
 
Constructor Summary
NetMapReader(java.lang.String host, java.lang.String port, NetMapConnector connector)
          Create a NetMapReader to listen to a host on a port, with a NetMapConnector to get back in touch with.
NetMapReader(java.lang.String host, java.lang.String port, NetMapConnector connector, java.lang.String view)
          Create a NetMapReader to listen to a NetMapServer running on a port, and parse the stream relating information about the given view.
 
Method Summary
protected  java.lang.String getVal(java.lang.String marker, java.lang.String line)
           
 ChoiceList getViewList(java.lang.String host, java.lang.String port)
          For an established NetMapReader, get the list of views that the NetMapReader knows about.
protected  java.lang.Object next()
          Break the next token into an Object.
protected  java.util.Properties procline(java.lang.String cmdline)
          Process a line from NetMap input stream.
 void run()
          Called when NetMapReader.start() is called.
 void setView(java.lang.String view)
          Set the view that will be requested when the reader is started, via reader.start().
 void shutdown()
          A queue command that lets the NetMapReader know to disconnect when it has the opportunity to.
protected  java.util.Vector tokenize(java.lang.String line)
          Given a line, break it up into a Vector representing the String parts, and the int[] containing the number parts.
protected  java.lang.Object unit()
          Break the next token into an Object, with some addition semantic functionality to interpret EOF and parenthesis.
protected  void unitInit(java.io.StringReader rdr)
          Initialize the StringTokenizer.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NetMapReader

public NetMapReader(java.lang.String host,
                    java.lang.String port,
                    NetMapConnector connector)
             throws java.io.IOException
Create a NetMapReader to listen to a host on a port, with a NetMapConnector to get back in touch with. This method just connects, finds out the views, and closes the connection to the server.

Throws:
java.io.IOException

NetMapReader

public NetMapReader(java.lang.String host,
                    java.lang.String port,
                    NetMapConnector connector,
                    java.lang.String view)
             throws java.io.IOException
Create a NetMapReader to listen to a NetMapServer running on a port, and parse the stream relating information about the given view. If the view is null, then the NetMapReader will get a view list and disconnect.

Throws:
java.io.IOException
Method Detail

setView

public void setView(java.lang.String view)
Set the view that will be requested when the reader is started, via reader.start().


getViewList

public ChoiceList getViewList(java.lang.String host,
                              java.lang.String port)
For an established NetMapReader, get the list of views that the NetMapReader knows about. The NetMapReader will disconnect after this query.


shutdown

public void shutdown()
A queue command that lets the NetMapReader know to disconnect when it has the opportunity to.


run

public void run()
Called when NetMapReader.start() is called. This makes the NetMapReader call the NetMap server to get information about the view that is set. This assumes that the view has been set. The NetMapConnector will be called back with Properties objects describing events received.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

procline

protected java.util.Properties procline(java.lang.String cmdline)
Process a line from NetMap input stream.


tokenize

protected java.util.Vector tokenize(java.lang.String line)
Given a line, break it up into a Vector representing the String parts, and the int[] containing the number parts. The Vector will contain String representations of the numbers. Should be called before procline() is called, and in fact is called from within procline().


unitInit

protected void unitInit(java.io.StringReader rdr)
Initialize the StringTokenizer.


unit

protected java.lang.Object unit()
Break the next token into an Object, with some addition semantic functionality to interpret EOF and parenthesis.


next

protected java.lang.Object next()
Break the next token into an Object.


getVal

protected java.lang.String getVal(java.lang.String marker,
                                  java.lang.String line)


Copyright (C) BBNT Solutions LLC; See http://openmap.bbn.com/ for details