## com.bbn.openmap.layer.location.db
Class DBLocationHandler

    java.lang.Object
      com.bbn.openmap.layer.location.AbstractLocationHandler
          com.bbn.openmap.layer.location.db.DBLocationHandler

All Implemented Interfaces:
  java.awt.event.ActionListener, java.util.EventListener, LocationHandler, PropertyConsumer

public class DBLocationHandler
extends AbstractLocationHandler
implements LocationHandler, java.awt.event.ActionListener

The DBLocationLayer is a LocationHandler designed to let you put data on the map based on information from a Database. The properties file lets you set defaults on whether to draw the locations and the names by default. For crowded layers, having all the names displayed might cause a cluttering problem. In gesture mode, OpenMap will display the name of each location as the mouse is passed over it. Pressing the left mouse button over a location brings up a popup menu that lets you show/hide the name label, and also to display attributes of the location in a Browser window that OpenMap launches.

If you want to extend the functionality of this LocationHandler, there are a couple of methods to focus your changes: The setProperties() method lets you add properties to set from the properties file. The createData() method, by default, is a one-time method that creates the graphic objects based on the data. By modifying these methods, and creating a different combination graphic other than the default LocationDataRecordSet, you can create different layer effects pretty easily.

In the openmap.properties file (for instance):

      # In the section for the LocationLayer:
      locationLayer.locationHandlers=dblocationhandler

      dblocationhandler.class=com.bbn.openmap.layer.location.db.DBLocationHandler
      dblocationhandler.locationColor=FF0000
      dblocationhandler.nameColor=008C54
      dblocationhandler.showNames=false
      dblocationhandler.showLocations=true
      dblocationhandler.jdbcDriver=oracle.jdbc.driver.OracleDriver
      dblocationhandler.jdbcString=jdbc login string
      dblocationhandler.userName=username
      dblocationhandler.userPassword=password
      dblocationhandler.locationQueryString=select statement the data
       object needs.  See each Data object (like LocationData) to see what
       kind of select statement it needs.

In addition, this particular location handler is using the LocationData object to handle the results from the location.

Field Summary
`protected javax.swing.Box` `box` Box used for constructing the palette widgets
`protected java.lang.String` `jdbcDriver` This String would be used to load the driver.
`static java.lang.String` `jdbcDriverProperty` Property to specify jdbc driver to loaded.
`protected java.lang.String` `jdbcString` String that would be used for making a connection to Database
`static java.lang.String` `jdbcStringProperty` Property that should be specified for setting jdbc String
`protected java.lang.String` `locationQueryString` The string used to query the database for the location information.
`static java.lang.String` `locationQueryStringProperty` Property to specify the query string passed to the database.
`protected java.util.Properties` `props` A copy of properties used to construct this Layer
`protected QuadTree` `quadtree` The storage mechanism for the locations.
`protected java.lang.String` `userName` User name to be used for connecing to DB.
`static java.lang.String` `userNameProperty` Property to specify userName for connecting to Database
`protected java.lang.String` `userPassword` Password to be used with for connecting to DB.
`static java.lang.String` `userPasswordProperty` Property to specify password for connecting to Database

Fields inherited from class com.bbn.openmap.layer.location.AbstractLocationHandler
`i18n, locationDrawingAttributes, nameDrawingAttributes, propertyPrefix, zLayer`

Fields inherited from interface com.bbn.openmap.layer.location.LocationHandler
`defaultLocationColorString, defaultNameColorString, forceGlobalCommand, ForceGlobalProperty, LocationColorProperty, LocationPropertyPrefix, NameColorProperty, NamePropertyPrefix, readDataCommand, showdetails, showLocationsCommand, ShowLocationsProperty, showname, showNamesCommand, ShowNamesProperty`

Fields inherited from interface com.bbn.openmap.PropertyConsumer
`EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty`

Constructor Summary
`DBLocationHandler()` The default constructor for the Layer.

Method Summary
`void` `actionPerformed(java.awt.event.ActionEvent e)` The Action Listener method, that reacts to the palette widgets actions.
`protected QuadTree` `createData()` Look in the database and create the QuadTree holding all the Locations.
`void` `fillLocationPopUpMenu(LocationPopupMenu locMenu)` The location layer passes a LocationPopupMenu to the handler when on of its locations has been clicked on.
`java.util.Vector` `get(float nwLat, float nwLon, float seLat, float seLon, java.util.Vector graphicList)` Prepares the graphics for the layer.
`java.awt.Component` `getGUI()` Provides the palette widgets to control the options of showing maps, or attribute text.
`java.lang.String` `getJdbcDriver()`
`java.lang.String` `getJdbcString()`
`java.util.Properties` `getLocationProperties()`
`java.util.Properties` `getProperties(java.util.Properties props)` PropertyConsumer method, to fill in a Properties object, reflecting the current values of the layer.
`java.util.Properties` `getPropertyInfo(java.util.Properties list)` Method to fill in a Properties object with values reflecting the properties able to be set on this PropertyConsumer.
`java.lang.String` `getUserName()`
`java.lang.String` `getUserPassword()`
`void` `reloadData()` A trigger function to tell the handler that new data is available.
`void` `setProperties(java.lang.String prefix, java.util.Properties properties)` The properties and prefix are managed and decoded here, for the standard uses of the DBLocationHandler.

Methods inherited from class com.bbn.openmap.layer.location.AbstractLocationHandler
`getLayer, getLocationColor, getLocationDrawingAttributes, getNameColor, getNameDrawingAttributes, getPropertyPrefix, isForceGlobal, isShowLocations, isShowNames, removed, setForceGlobal, setLayer, setLocationColor, setLocationDrawingAttributes, setNameColor, setNameDrawingAttributes, setProperties, setPropertyPrefix, setShowLocations, setShowNames`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface com.bbn.openmap.layer.location.LocationHandler
`getLayer, isForceGlobal, isShowLocations, isShowNames, removed, setForceGlobal, setLayer, setShowLocations, setShowNames`

Methods inherited from interface com.bbn.openmap.PropertyConsumer
`getPropertyPrefix, setProperties, setPropertyPrefix`

Field Detail

### quadtree

    protected QuadTree quadtree

  The storage mechanism for the locations.

### jdbcString

    protected java.lang.String jdbcString

  String that would be used for making a connection to Database

### jdbcStringProperty

    public static final java.lang.String jdbcStringProperty

  Property that should be specified for setting jdbc String

  See Also:
    Constant Field Values

### jdbcDriver

    protected java.lang.String jdbcDriver

  This String would be used to load the driver. If this string is null, jdbc Connection Manager would try to load the approriate driver.

### jdbcDriverProperty

    public static final java.lang.String jdbcDriverProperty

  Property to specify jdbc driver to loaded.

  See Also:
    Constant Field Values

### userName

    protected java.lang.String userName

  User name to be used for connecing to DB.

### userPassword

    protected java.lang.String userPassword

  Password to be used with for connecting to DB.

### userNameProperty

    public static final java.lang.String userNameProperty

  Property to specify userName for connecting to Database

  See Also:
    Constant Field Values

### userPasswordProperty

    public static final java.lang.String userPasswordProperty

  Property to specify password for connecting to Database

  See Also:
    Constant Field Values

### locationQueryStringProperty

    public static final java.lang.String locationQueryStringProperty

  Property to specify the query string passed to the database.

  See Also:
    Constant Field Values

### locationQueryString

    protected java.lang.String locationQueryString

  The string used to query the database for the location information.

### props

    protected java.util.Properties props

  A copy of properties used to construct this Layer

### box

    protected javax.swing.Box box

  Box used for constructing the palette widgets

Constructor Detail

### DBLocationHandler

    public DBLocationHandler()

  The default constructor for the Layer. All of the attributes are set to their default values.

Method Detail

### setProperties

    public void setProperties(java.lang.String prefix,
                              java.util.Properties properties)

  The properties and prefix are managed and decoded here, for the standard uses of the DBLocationHandler.

  Specified by:
    `setProperties` in interface `PropertyConsumer`
  Overrides:
    `setProperties` in class `AbstractLocationHandler`
  Parameters:
    `prefix` - string prefix used in the properties file for this layer.
    `properties` - the properties set in the properties file.

### getProperties

    public java.util.Properties getProperties(java.util.Properties props)

  PropertyConsumer method, to fill in a Properties object, reflecting the current values of the layer. If the layer has a propertyPrefix set, the property keys should have that prefix plus a separating '.' prepended to each propery key it uses for configuration.

  Specified by:
    `getProperties` in interface `PropertyConsumer`
  Overrides:
    `getProperties` in class `AbstractLocationHandler`
  Parameters:
    `props` - a Properties object to load the PropertyConsumer properties into.
  Returns:
    Properties object containing PropertyConsumer property values. If getList was not null, this should equal getList. Otherwise, it should be the Properties object created by the PropertyConsumer.

### getPropertyInfo

    public java.util.Properties getPropertyInfo(java.util.Properties list)

  Method to fill in a Properties object with values reflecting the properties able to be set on this PropertyConsumer. The key for each property should be the raw property name (without a prefix) with a value that is a String that describes what the property key represents, along with any other information about the property that would be helpful (range, default value, etc.). This method takes care of the basic LocationHandler parameters, so any LocationHandlers that extend the AbstractLocationHandler should call this method, too, before adding any specific properties.

  Specified by:
    `getPropertyInfo` in interface `PropertyConsumer`
  Overrides:
    `getPropertyInfo` in class `AbstractLocationHandler`
  Parameters:
    `list` - a Properties object to load the PropertyConsumer properties into. If getList equals null, then a new Properties object should be created.
  Returns:
    Properties object containing PropertyConsumer property values. If getList was not null, this should equal getList. Otherwise, it should be the Properties object created by the PropertyConsumer.

### reloadData

    public void reloadData()

  Description copied from interface: `LocationHandler`
  A trigger function to tell the handler that new data is available.

  Specified by:
    `reloadData` in interface `LocationHandler`

### createData

    protected QuadTree createData()

  Look in the database and create the QuadTree holding all the Locations.

### getJdbcString

    public java.lang.String getJdbcString()

### getJdbcDriver

    public java.lang.String getJdbcDriver()

### getUserName

    public java.lang.String getUserName()

### getUserPassword

    public java.lang.String getUserPassword()

### getLocationProperties

    public java.util.Properties getLocationProperties()

### get

    public java.util.Vector get(float nwLat,
                                float nwLon,
                                float seLat,
                                float seLon,
                                java.util.Vector graphicList)

  Prepares the graphics for the layer. This is where the getRectangle() method call is made on the location.

  Occasionally it is necessary to abort a prepare call. When this happens, the map will set the cancel bit in the LayerThread, (the thread that is running the prepare). If this Layer needs to do any cleanups during the abort, it should do so, but return out of the prepare asap.

  Specified by:
    `get` in interface `LocationHandler`
  Parameters:
    `nwLat` - NorthWest latitude of area of interest.
    `nwLon` - NorthWest longitude of area of interest.
    `seLat` - SouthEast latitude of area of interest.
    `seLon` - SouthEast longitude of area of interest.
    `graphicList` - Vector to add Locations to. If null, the LocationHandler should create a new Vector to place graphics into.
  Returns:
    Either the Vector passed in, or the new onw that was created.

### fillLocationPopUpMenu

    public void fillLocationPopUpMenu(LocationPopupMenu locMenu)

  Description copied from interface: `LocationHandler`
  The location layer passes a LocationPopupMenu to the handler when on of its locations has been clicked on. This is an opportunity for the handler to add options to the menu that can bring up further information about the location, or to change the appearance of the location.

  Specified by:
    `fillLocationPopUpMenu` in interface `LocationHandler`
  Overrides:
    `fillLocationPopUpMenu` in class `AbstractLocationHandler`
  Parameters:
    `locMenu` - LocationPopupMenu to add buttons to.

### getGUI

    public java.awt.Component getGUI()

  Provides the palette widgets to control the options of showing maps, or attribute text.

  Specified by:
    `getGUI` in interface `LocationHandler`
  Overrides:
    `getGUI` in class `AbstractLocationHandler`
  Returns:
    Component object representing the palette widgets.

### actionPerformed

    public void actionPerformed(java.awt.event.ActionEvent e)

  The Action Listener method, that reacts to the palette widgets actions.

  Specified by:
    `actionPerformed` in interface `java.awt.event.ActionListener`

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