NetCharts Pro

netcharts.pro.util
Class NFProUtil

java.lang.Object
  extended by netcharts.pro.util.NFProUtil

public class NFProUtil
extends java.lang.Object

Contains a number of utility methods for chart components. These consist of methods to manipulate chart components, convert objects to CDL templates, retrieve and set user objects, perform basic string operations and more.


Field Summary
static java.lang.String DEFAULT_DATE_FORMAT
          The default data format used when converting Date objects to string.
static boolean dontValidate
          Whether or not to verify discrete data when a verification method is called.
static java.lang.String ON
          ON.
 
Constructor Summary
NFProUtil()
           
 
Method Summary
static java.lang.Object[] cdlTuple2ObjectArray(java.lang.String cdl)
          Converts an array of string-based input data into an object array.
static boolean checkString(java.lang.String in, java.lang.String check)
          Will check the value of the String against the specified value.
static boolean checkString(java.lang.String in, java.lang.String check, boolean ignoreCase)
          Will check the value of the String against the specified value.
static java.util.Date convertToDate(java.lang.String[] formats, java.lang.String value)
          Attempt to convert the given string into a Date using the given date formats.
static java.lang.String dataBean2CDL(NFDataBean dataBean)
          Produces the CDL representation of the NFDataBean instance.
static java.lang.String dataBean2CDL(NFDataBean dataBean, java.lang.String param)
          Produces the CDL representation of the NFDataBean instance.
static boolean dataBean2KeyValues(NFDataBean dataBean, java.lang.String param, java.util.Vector addTo)
          Appends to the specified Vector the set of NFKeyValue based parameter definitions that represent the NFDataBean instance.
static java.lang.String dateToCDLString(java.util.Date date, boolean quote)
          Convert the Date to a string suitable for use in CDL.
static java.lang.Object determineValue(java.lang.String value)
          This method will return an object of the first available type between Integer, Double and String.
static void enableServerContext()
          Sets the rendering engines context to "server-side".
static java.lang.String escapeQuotes(java.lang.String in)
          Replaces quotes with the proper html entities.
static java.lang.String escapeQuotes(java.lang.String in, boolean escapeSingleQuotes)
          Replaces quotes with the proper html entities.
static java.lang.StringBuffer filterReader(java.io.Reader r, java.util.Hashtable filterValues)
           
static java.lang.StringBuffer filterStream(java.io.InputStream is, java.util.Hashtable filterValues)
          This method replaces variables in the given input stream with the corresponding variable/value entry in the given hashtable, if one exists.
static java.lang.StringBuffer filterString(java.lang.String s, java.util.Hashtable filterValues)
           
static java.lang.String formatForHtml(java.lang.String in)
          HTML encodes the string
static java.lang.String formatForHtml(java.lang.String in, boolean nltab)
           
static java.lang.String[] getAttributeArray(java.lang.String value)
          Converts a CDL "tuple" into an array of strings.
static NFCdf getCDLTemplate(java.io.File cdlFile)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlFile
static NFCdf getCDLTemplate(java.io.File cdlFile, java.util.Vector errorVector)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlFile
static NFCdf getCDLTemplate(java.io.InputStream cdlStream)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlStream input stream
static NFCdf getCDLTemplate(java.io.InputStream cdlStream, java.util.Vector errorVector)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlStream input stream
static NFCdf getCDLTemplate(java.lang.String cdlString)
          Creates a "Chart Definition File" or NFCdf template object based on the given cdlString String object.
static NFCdf getCDLTemplate(java.lang.String cdlString, java.util.Vector errorVector)
          Creates a "Chart Definition File" or NFCdf template object based on the given cdlString String object.
static NFCdf getCDLTemplate(java.net.URL cdlURL)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlURL
static NFCdf getCDLTemplate(java.net.URL cdlURL, java.util.Vector errorVector)
          Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlURL
static java.lang.Object getDataObject(NFBaseClass base)
          Returns the object associated with the NFUserObjectKeys.DATA_KEY key, or null if there is no associated value.
static java.lang.Object getDataObject(java.lang.String cdl)
          Converts the input string into a Double or Date.
static java.lang.Object getDataObject(java.lang.String cdl, java.lang.String[] dateFormats)
          Converts the input string into a Double or Date.
static java.lang.String getQuotedString(java.lang.String string)
          This method will return a string with surrounding double quotes.
static java.lang.Object getStyleObject(NFBaseClass base)
          Returns the object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.
static java.lang.Object getStyleObjectData(NFBaseClass base)
          Returns the style data of the style object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.
static java.lang.String[] getTupleArray(java.lang.String value)
          Converts a CDL "tuple vectors" into an array of tuple elements.
static java.lang.Object getUserObject(NFBaseClass base)
          Returns the user object associated with NFBaseClass instance.
static java.lang.Object getUserObject(NFBaseClass base, java.lang.String key)
          Returns the user object associated with NFBaseClass instance.
static FillBorder makeFillBorder(IFillBorder fb)
          Make a FillBorder from a IFillBorder.
static boolean notANull(java.lang.String cdl)
          Determines if the CDL element represents a "null" value.
static java.lang.String removeQuotes(java.lang.String string)
          This method will remove any preceding and trailing quotes from the String.
static java.lang.String replaceVar(java.lang.String origString, java.lang.String variable, java.lang.String newValue, boolean all)
          Replaces the variable string with the replacement value.
static void setDataObject(NFBaseClass base, java.lang.Object userObject)
          Set the object to be associated with the NFUserObjectKeys.DATA_KEY key on the NFBaseClass instance.
static void setStyleObject(NFBaseClass base, java.lang.Object userObject)
          Set the object to be associated with the NFUserObjectKeys.STYLE_KEY key on the NFBaseClass instance.
static void setStyleObjectData(NFBaseClass base, java.lang.Object data)
          Set the data onto the style object associated with the NFUserObjectKeys.STYLE_KEY key on the NFBaseClass instance.
static void setUserObject(NFBaseClass base, java.lang.Object userObject)
          Set the user object on the NFBaseClass instance.
static void setUserObject(NFBaseClass base, java.lang.Object userObject, java.lang.String key)
          Set the user object within the Map of user objects on the NFBaseClass instance.
static java.lang.String[] splitNameAndSetIndex(java.lang.String itemParam)
          Splits a name and set number (e.g.
static java.lang.String trimParens(java.lang.String value)
          Removes leading and following parentheses.
static java.lang.String trimQuotes(java.lang.String value)
          Removes leading and following quotes.
static java.lang.String userObject2CDL(java.lang.Object userObject)
          Produces the CDL representation of the user object instance.
static java.lang.String userObject2CDL(java.lang.Object userObject, java.lang.String param)
          Produces the CDL representation of the user object instance.
static boolean userObject2KeyValues(java.lang.Object userObject, java.lang.String param, java.util.Vector addTo)
          Appends to the specified Vector the set of NFKeyValue based parameter definitions that represent the user object instance.
static void verifyConstant(java.util.Hashtable hash, int value, java.lang.String itemName)
          Verify constant value.
static void verifyDiscreteData(java.lang.Object data)
          Verify data object.
static void verifyDiscreteData(java.lang.Object data, java.lang.String[] dateFormats)
          Verify data object.
static void verifyNumericData(java.lang.Object data)
          Verify the specified data object is a Number or a null.
static void verifyVectorContent(NFVector vector, java.lang.Class clazz)
          Verify vector contents.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_DATE_FORMAT

public static java.lang.String DEFAULT_DATE_FORMAT
The default data format used when converting Date objects to string.


dontValidate

public static boolean dontValidate
Whether or not to verify discrete data when a verification method is called.


ON

public static java.lang.String ON
ON. Used in various parameters to enable a feature.

Constructor Detail

NFProUtil

public NFProUtil()
Method Detail

enableServerContext

public static void enableServerContext()
Sets the rendering engines context to "server-side". This context disables a thread used to support user interaction on the chart (such as zooming, scrolling). This thread is not needed for server side image creation and may lead to inefficient memory use in server side applications.


getTupleArray

public static java.lang.String[] getTupleArray(java.lang.String value)
Converts a CDL "tuple vectors" into an array of tuple elements.

Parameters:
value - A CDL tuple of the form (a, b, c),(d, e, f)
Returns:
a string array of elemnts in the form [a,b,c],[d,e,f]

getAttributeArray

public static java.lang.String[] getAttributeArray(java.lang.String value)
Converts a CDL "tuple" into an array of strings.

Parameters:
value - A CDL tuple of the form (a, b, c)
Returns:
a string array of elemnts in the form [a][b][c]

trimParens

public static java.lang.String trimParens(java.lang.String value)
Removes leading and following parentheses.

Parameters:
value - String value in the form "(a, b, c)"
Returns:
string value in the form "a, b, c"

trimQuotes

public static java.lang.String trimQuotes(java.lang.String value)
Removes leading and following quotes.

Parameters:
value - String value in the form "a, b, c"
Returns:
string value in the form a, b, c

getDataObject

public static java.lang.Object getDataObject(java.lang.String cdl)
Converts the input string into a Double or Date.

Parameters:
cdl - String representation of a double or Date object.
Returns:
Double or Date object. If it can't be converted, the original string is returned.

getDataObject

public static java.lang.Object getDataObject(java.lang.String cdl,
                                             java.lang.String[] dateFormats)
Converts the input string into a Double or Date.

Parameters:
cdl - String representation of a double or Date object.
dateFormats - Formats to use to attempt to parse a Date object.
Returns:
Double or Date object. If it can't be converted, the original string is returned.

cdlTuple2ObjectArray

public static java.lang.Object[] cdlTuple2ObjectArray(java.lang.String cdl)
Converts an array of string-based input data into an object array.

Parameters:
cdl - Comma delimited string of data.
Returns:
array of Double or Date objects. If it can't be converted, the original string data element is put into the array.

splitNameAndSetIndex

public static final java.lang.String[] splitNameAndSetIndex(java.lang.String itemParam)
Splits a name and set number (e.g. DataSet1) into its composite parts "DataSet" and "1"

Parameters:
itemParam - Set name
Returns:
array of name and index.

verifyConstant

public static void verifyConstant(java.util.Hashtable hash,
                                  int value,
                                  java.lang.String itemName)
Verify constant value. Throws an IllegalArgumentException if the constant is not found in the hashtable.

Parameters:
hash - Hashtable to check for the constant.
value - The constant that should be in the hashtable
itemName - the name of the item to be included in the exception.

verifyVectorContent

public static void verifyVectorContent(NFVector vector,
                                       java.lang.Class clazz)
Verify vector contents. Throws an IllegalArgumentException if the vector contains data other than what is expected.

Parameters:
vector - Vector of objects
clazz - The class (or superclass) of the objects.

verifyDiscreteData

public static void verifyDiscreteData(java.lang.Object data)
Verify data object. Data objects can either be a null, Number, or Date. Throws an IllegalArgumentException if valid data is not passed.

Parameters:
data - The data object

verifyDiscreteData

public static void verifyDiscreteData(java.lang.Object data,
                                      java.lang.String[] dateFormats)
Verify data object. Data objects can either be a null, Number, or Date. Throws an IllegalArgumentException if valid data is not passed.

Parameters:
data - The data object
dateFormats - Formats to use to attempt to parse a Date object.

verifyNumericData

public static void verifyNumericData(java.lang.Object data)
Verify the specified data object is a Number or a null. Throws an IllegalArgumentException if valid data is not passed.

Parameters:
data - The data object

getCDLTemplate

public static NFCdf getCDLTemplate(java.io.File cdlFile)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlFile

Parameters:
cdlFile - A file containing CDL parameters.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.io.File cdlFile,
                                   java.util.Vector errorVector)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlFile

Parameters:
cdlFile - A file containing CDL parameters.
errorVector - The Vector to contain possible errors.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.net.URL cdlURL)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlURL

Parameters:
cdlURL - A URL that returns CDL parameters when called.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.net.URL cdlURL,
                                   java.util.Vector errorVector)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlURL

Parameters:
cdlURL - A URL that returns CDL parameters when called.
errorVector - The Vector to contain possible errors.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.io.InputStream cdlStream)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlStream input stream

Parameters:
cdlStream - An input stream containing CDL parameters.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.io.InputStream cdlStream,
                                   java.util.Vector errorVector)
Creates a "Chart Definition File" or NFCdf template object based on the contents of the cdlStream input stream

Parameters:
cdlStream - An input stream containing CDL parameters.
errorVector - The Vector to contain possible errors.
Returns:
the NFCdf object.

getCDLTemplate

public static NFCdf getCDLTemplate(java.lang.String cdlString)
                            throws java.lang.Exception
Creates a "Chart Definition File" or NFCdf template object based on the given cdlString String object.

Parameters:
cdlString - A string containing CDL parameters.
Returns:
the NFCdf object.
Throws:
java.lang.Exception

getCDLTemplate

public static NFCdf getCDLTemplate(java.lang.String cdlString,
                                   java.util.Vector errorVector)
                            throws java.lang.Exception
Creates a "Chart Definition File" or NFCdf template object based on the given cdlString String object.

Parameters:
cdlString - A string containing CDL parameters.
errorVector - The Vector to contain possible errors.
Returns:
the NFCdf object.
Throws:
java.lang.Exception

filterStream

public static java.lang.StringBuffer filterStream(java.io.InputStream is,
                                                  java.util.Hashtable filterValues)
                                           throws java.io.IOException
This method replaces variables in the given input stream with the corresponding variable/value entry in the given hashtable, if one exists. A variable consists of a dollar sign, followed by any number of letters, digits, or underscores. This method returns a string buffer that contains the filtered input stream.

Throws:
java.io.IOException

filterString

public static java.lang.StringBuffer filterString(java.lang.String s,
                                                  java.util.Hashtable filterValues)
                                           throws java.io.IOException
Throws:
java.io.IOException

filterReader

public static java.lang.StringBuffer filterReader(java.io.Reader r,
                                                  java.util.Hashtable filterValues)
                                           throws java.io.IOException
Throws:
java.io.IOException

getUserObject

public static java.lang.Object getUserObject(NFBaseClass base)
Returns the user object associated with NFBaseClass instance.

Parameters:
base - The object containing the user object to retrieve
Returns:
The user object associated with the NFBaseClass instance, or null if there is no associated value.

getUserObject

public static java.lang.Object getUserObject(NFBaseClass base,
                                             java.lang.String key)
Returns the user object associated with NFBaseClass instance. If the key is not null, then the user object of the NFBaseClass is expected to implement java.util.Map. And the value associated with the key within the Map instance will be returned.

Parameters:
base - The object containing the user object to retrieve
key - The key used to associate the user object
Returns:
The user object associated with the key if specified else the NFBaseClass instance, or null if there is no associated value.

setUserObject

public static void setUserObject(NFBaseClass base,
                                 java.lang.Object userObject)
Set the user object on the NFBaseClass instance.

Parameters:
base - The NFBaseClass instance on which to set the user object
userObject - The user object to set

setUserObject

public static void setUserObject(NFBaseClass base,
                                 java.lang.Object userObject,
                                 java.lang.String key)
Set the user object within the Map of user objects on the NFBaseClass instance.

Parameters:
base - The NFBaseClass instance on which to set the user object
userObject - The user object to set
key - The key to associate the user object with

setDataObject

public static void setDataObject(NFBaseClass base,
                                 java.lang.Object userObject)
Set the object to be associated with the NFUserObjectKeys.DATA_KEY key on the NFBaseClass instance.

Parameters:
base - The NFBaseClass instance on which to associate the user object
userObject - The user object to associated with the NFUserObjectKeys.DATA_KEY key

getDataObject

public static java.lang.Object getDataObject(NFBaseClass base)
Returns the object associated with the NFUserObjectKeys.DATA_KEY key, or null if there is no associated value.

Parameters:
base - The object containing the user object to retrieve
Returns:
The object associated with the NFUserObjectKeys.DATA_KEY key, or null if there is no associated value.

setStyleObject

public static void setStyleObject(NFBaseClass base,
                                  java.lang.Object userObject)
Set the object to be associated with the NFUserObjectKeys.STYLE_KEY key on the NFBaseClass instance.

Parameters:
base - The NFBaseClass instance on which to associate the user object
userObject - The user object to associated with the NFUserObjectKeys.STYLE_KEY key

getStyleObject

public static java.lang.Object getStyleObject(NFBaseClass base)
Returns the object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.

Parameters:
base - The object containing the user object to retrieve
Returns:
The object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.

setStyleObjectData

public static void setStyleObjectData(NFBaseClass base,
                                      java.lang.Object data)
Set the data onto the style object associated with the NFUserObjectKeys.STYLE_KEY key on the NFBaseClass instance.

Parameters:
base - The NFBaseClass instance containing the style object to set the data on
data - The data to set onto the style object

getStyleObjectData

public static java.lang.Object getStyleObjectData(NFBaseClass base)
Returns the style data of the style object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.

Parameters:
base - The object containing the user object to retrieve
Returns:
The style data of the style object associated with the NFUserObjectKeys.STYLE_KEY key, or null if there is no associated value.

userObject2CDL

public static java.lang.String userObject2CDL(java.lang.Object userObject)
Produces the CDL representation of the user object instance.

Parameters:
userObject - The user object to convert to CDL
Returns:
The CDL representation of the user object

userObject2CDL

public static java.lang.String userObject2CDL(java.lang.Object userObject,
                                              java.lang.String param)
Produces the CDL representation of the user object instance. The user object should be an implementation of NFDataBean.

Parameters:
dataBean - The user object to convert to CDL
param - The parameter used within the NFDataBean expression
Returns:
The CDL representation of the user object

userObject2KeyValues

public static boolean userObject2KeyValues(java.lang.Object userObject,
                                           java.lang.String param,
                                           java.util.Vector addTo)
Appends to the specified Vector the set of NFKeyValue based parameter definitions that represent the user object instance. The user object should be an implementation of NFDataBean. The vector will contain NFKeyValue objects, in which the key field points to a String parameter name and the value field points to a StringBuffer parameter definition.

Parameters:
dataBean - The user object instance to determine the parameter definitions
param - The parameter used within the NFDataBean expression
addTo - The Vector to append the parameter definitions to
Returns:
true if values were appended, false otherwise.

dataBean2CDL

public static java.lang.String dataBean2CDL(NFDataBean dataBean)
Produces the CDL representation of the NFDataBean instance.

Parameters:
dataBean - The NFDataBean to convert to CDL
Returns:
The CDL representation of the NFDataBean

dataBean2CDL

public static java.lang.String dataBean2CDL(NFDataBean dataBean,
                                            java.lang.String param)
Produces the CDL representation of the NFDataBean instance.

Parameters:
dataBean - The NFDataBean to convert to CDL
param - The parameter used within the NFDataBean expression
Returns:
The CDL representation of the NFDataBean

dataBean2KeyValues

public static boolean dataBean2KeyValues(NFDataBean dataBean,
                                         java.lang.String param,
                                         java.util.Vector addTo)
Appends to the specified Vector the set of NFKeyValue based parameter definitions that represent the NFDataBean instance. The vector will contain NFKeyValue objects, in which the key field points to a String parameter name and the value field points to a StringBuffer parameter definition.

Parameters:
dataBean - The NFDataBean instance to determine the parameter definitions
param - The parameter used within the NFDataBean expression
addTo - The Vector to append the parameter definitions to
Returns:
true if values were appended, false otherwise.

formatForHtml

public static java.lang.String formatForHtml(java.lang.String in)
HTML encodes the string

Parameters:
in - The string to encode for HTML.

formatForHtml

public static java.lang.String formatForHtml(java.lang.String in,
                                             boolean nltab)

replaceVar

public static java.lang.String replaceVar(java.lang.String origString,
                                          java.lang.String variable,
                                          java.lang.String newValue,
                                          boolean all)
Replaces the variable string with the replacement value.

Parameters:
origString - The original string containing variable to replace.
variable - The variable to replace.
variable - The value to replace the variable with.
all - Whether or not all variable instances should be replaced.

escapeQuotes

public static java.lang.String escapeQuotes(java.lang.String in,
                                            boolean escapeSingleQuotes)
Replaces quotes with the proper html entities.

Parameters:
in - The string to escape quotes in.
escapeSingleQuotes - If true, single quotes are escaped as well.
Returns:
The escaped string.

escapeQuotes

public static java.lang.String escapeQuotes(java.lang.String in)
Replaces quotes with the proper html entities. Single quotes are also escaped.

Parameters:
in - The string to escape quotes in.
Returns:
The escaped string.

notANull

public static boolean notANull(java.lang.String cdl)
Determines if the CDL element represents a "null" value. Internal use only.

Returns:
isnull

removeQuotes

public static java.lang.String removeQuotes(java.lang.String string)
This method will remove any preceding and trailing quotes from the String.

Parameters:
value -
Returns:

getQuotedString

public static java.lang.String getQuotedString(java.lang.String string)
This method will return a string with surrounding double quotes. If the string already has double quotes, none will be added.

Parameters:
string - The String to add double quotes around.
Returns:
The string with surrounding double quotes.

checkString

public static boolean checkString(java.lang.String in,
                                  java.lang.String check)
Will check the value of the String against the specified value. If the string is surrounded by double-quotes, they will be ignored. This is a case-insensitive check.

Parameters:
in - The string containing the value to check.
check - The string to check against.
Returns:
true if the string matches, false otherwise.

checkString

public static boolean checkString(java.lang.String in,
                                  java.lang.String check,
                                  boolean ignoreCase)
Will check the value of the String against the specified value. If the string is surrounded by double-quotes, they will be ignored.

Parameters:
in - The string containing the value to check.
check - The string to check against.
ignoreCase - Whether or not to ignore case.
Returns:
true if the string matches, false otherwise.

determineValue

public static java.lang.Object determineValue(java.lang.String value)
This method will return an object of the first available type between Integer, Double and String. If the value is contained within quotes, the quotes will be remove to check whether the value is an Integer or a Double. If the value is a String, then the quotes will remain.

Parameters:
value - The value to check.
Returns:
A new value of either an Integer, Double or String.

dateToCDLString

public static java.lang.String dateToCDLString(java.util.Date date,
                                               boolean quote)
Convert the Date to a string suitable for use in CDL.

Parameters:
quote - Whether the entire string should be quoted. If set to true, the formatted date has its double quotes escaped.
Returns:
The date formatted as a string suitable for CDL usage.

convertToDate

public static java.util.Date convertToDate(java.lang.String[] formats,
                                           java.lang.String value)
Attempt to convert the given string into a Date using the given date formats. Creation of a Date using the standard constructor for a Date object is also attempted.

Parameters:
formats - Formats to use to attempt to parse a Date object.
value - The value to attempt to convert to a Date
Returns:
A Date object or null if it could not be converted.

makeFillBorder

public static FillBorder makeFillBorder(IFillBorder fb)
Make a FillBorder from a IFillBorder. Please note that this function is duplicated in server because we can not put it in netcharts.common in order to keep it free of netchart references.


NetCharts Pro


Visual Mining, Inc.
2099 Gaither Rd.
Suite 220
Rockville, MD 20850
800.308.0731
301.947.8293 FAX

Copyright © Visual Mining, Inc. 1996 - 2011
All Rights Reserved.

NetCharts Pro TM is a registered trademark of Visual Mining, Inc. Other brands and their products are trademarks of their respective holders.

Last Modified: Jun 28, 2011