com.bbn.openmap.omGraphics.rule
Class RuleHandler<T>

java.lang.Object
  extended by com.bbn.openmap.MapHandlerChild
      extended by com.bbn.openmap.OMComponent
          extended by com.bbn.openmap.omGraphics.rule.RuleHandler<T>
All Implemented Interfaces:
LightMapHandlerChild, PropertyConsumer, java.beans.beancontext.BeanContextChild, java.beans.beancontext.BeanContextMembershipListener, java.util.EventListener
Direct Known Subclasses:
DbfHandler

public abstract class RuleHandler<T>
extends OMComponent

The RuleHandler manages a set of Rules and will evaluate OMGraphics against them for a current projection.

For List rules, something like this:

 # Rule marker names specified in space-separated list
 neroads.rules=rule0 rule1
 # global scale settings can be used so work is only performed within scale range of minScale/maxScale
 neroads.maxScale=1000000f
 
 # rule0 definition:
 # CLASS_RTE is a DBF column name
 neroads.rule0.key=CLASS_RTE
 # operation, if key value is less than 2
 neroads.rule0.op=lt
 neroads.rule0.val=2
 # If rule is met, then actions can be performed:
 # Column names can be added together in a label by specifying them in a space-separated list
 neroads.rule0.label=PREFIX PRETYPE NAME TYPE SUFFIX
 # Labels can have scale limits imposed, so they don't appear if map scale is 
 # greater than maxScale or less than minScale
 neroads.rule0.label.maxScale=1000000
 # Visibility can be controlled with respect to scale as well
 neroads.rule0.render.maxScale=1000000
 # Rendering attributes can be specified.
 neroads.rule0.lineColor=FFFA73
 neroads.rule0.lineWidth=4
 neroads.rule0.mattingColor=55AAAAAA
 
 # rule1 definition:
 neroads.rule1.key=CLASS_RTE
 neroads.rule1.op=all
 neroads.rule1.label=PREFIX PRETYPE NAME TYPE SUFFIX
 neroads.rule1.label.maxScale=200000
 neroads.rule1.render.maxScale=500000
 neroads.rule1.lineColor=FFFFFF
 neroads.rule1.lineWidth=3
 neroads.rule1.mattingColor=55AAAAAA
 
 # The render attribute is assumed to be true.  You can hide OMGraphics by setting it to false.
 

Author:
dietrick

Field Summary
protected  java.lang.String lastLabel
          Used to help prevent consecutive repeat label values.
 
Fields inherited from class com.bbn.openmap.OMComponent
i18n, propertyPrefix
 
Fields inherited from class com.bbn.openmap.MapHandlerChild
beanContextChildSupport, isolated
 
Fields inherited from interface com.bbn.openmap.PropertyConsumer
EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty
 
Constructor Summary
RuleHandler()
           
 
Method Summary
 void addRule(Rule rule)
           
 void clearRules()
           
abstract  Rule createRule()
          Create a Rule object that knows how to interpret properties to create the proper indices into the record List.
 OMGraphic evaluate(OMGraphic omg, OMGraphicList labelList, Projection proj)
          This is the main call that a layer would use to modify/update an OMGraphic based on dbf file contents.
 java.util.Properties getProperties(java.util.Properties props)
          PropertyConsumer method, to fill in a Properties object, reflecting the current values of the OMComponent.
abstract  T getRecordDataForOMGraphic(OMGraphic omg)
          Return a record Map for a particular OMGraphic, like a properties table.
 java.util.List<Rule> getRules()
           
 boolean removeRule(Rule rule)
           
 void setProperties(java.lang.String prefix, java.util.Properties props)
          Sets the properties for the OMComponent.
 void setRules(java.util.List<Rule> rules)
           
 
Methods inherited from class com.bbn.openmap.OMComponent
getPropertyInfo, getPropertyPrefix, setProperties, setPropertyPrefix
 
Methods inherited from class com.bbn.openmap.MapHandlerChild
addPropertyChangeListener, addVetoableChangeListener, childrenAdded, childrenRemoved, findAndInit, findAndInit, findAndUndo, firePropertyChange, fireVetoableChange, getBeanContext, isIsolated, removePropertyChangeListener, removeVetoableChangeListener, setBeanContext, setIsolated
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lastLabel

protected java.lang.String lastLabel
Used to help prevent consecutive repeat label values.

Constructor Detail

RuleHandler

public RuleHandler()
Method Detail

createRule

public abstract Rule createRule()
Create a Rule object that knows how to interpret properties to create the proper indices into the record List.


getRecordDataForOMGraphic

public abstract T getRecordDataForOMGraphic(OMGraphic omg)
Return a record Map for a particular OMGraphic, like a properties table.

Parameters:
omg - OMGraphic being queried
Returns:
Map of objects as attributes for the OMGraphic.

setProperties

public void setProperties(java.lang.String prefix,
                          java.util.Properties props)
Description copied from class: OMComponent
Sets the properties for the OMComponent.

Specified by:
setProperties in interface PropertyConsumer
Overrides:
setProperties in class OMComponent
Parameters:
prefix - the token to prefix the property names
props - the Properties object

getProperties

public java.util.Properties getProperties(java.util.Properties props)
Description copied from class: OMComponent
PropertyConsumer method, to fill in a Properties object, reflecting the current values of the OMComponent. If the component has a propertyPrefix set, the property keys should have that prefix plus a separating '.' prepended to each property key it uses for configuration.

Specified by:
getProperties in interface PropertyConsumer
Overrides:
getProperties in class OMComponent
Parameters:
props - a Properties object to load the PropertyConsumer properties into. If props 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.

setRules

public void setRules(java.util.List<Rule> rules)

addRule

public void addRule(Rule rule)

removeRule

public boolean removeRule(Rule rule)

clearRules

public void clearRules()

getRules

public java.util.List<Rule> getRules()

evaluate

public OMGraphic evaluate(OMGraphic omg,
                          OMGraphicList labelList,
                          Projection proj)
This is the main call that a layer would use to modify/update an OMGraphic based on dbf file contents. Tries to retrieve the index from the attributes of the OMGraphic, and then checks the index and OMGraphic to see how/if it should be rendered, as determined by the rules.

Parameters:
omg - the OMGraphic in question
labelList - an OMGraphicList to add the label to, so it gets rendered on top.
proj - the current map projection, for scale appropriateness determinations.
Returns:
OMGraphic if it should be displayed, null if it shouldn't.


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