com.raritantechnologies.utils.tree
Class DBTreeManager

java.lang.Object
  extended bycom.raritantechnologies.utils.tree.DBTreeManager
All Implemented Interfaces:
IConfigurable, ICustomTag, ITreeNodeHyperlinkRenderer

public class DBTreeManager
extends java.lang.Object
implements ICustomTag, ITreeNodeHyperlinkRenderer

JSP CustomTag and static class that manages the creation / maintenance of a Tree object stored in a SQL compatible Relational database.

Uses 3 database tables:

Create Statements to generate the Tables for the DBTaxonomy TreeBuilder:

  Create Table TaxonomyRoot
  (
     TaxonomyName varchar(64),
     RootID varchar(16),
     TaxonomyID varchar(16)
  );

 Create Table TaxonomyNode
 (
     NodeID varchar(16),
     NodeName varchar(64),
     ParentID varchar(16),
     NodeCount int
 );

 Create Table TaxonomyAttributes
 (
     NodeID varchar(16),
     Section int,
     AttrName varchar(32),
     AttrValue varchar(64)
 );

 

Developed by Raritan Technologies Inc..

Author:
Ted Sullivan

Field Summary
static java.lang.String ADD_NODE_COMMAND
           
static java.lang.String ATTR_NAME_COL
           
static java.lang.String ATTR_TABLE
           
static java.lang.String ATTR_VALUE_COL
           
static java.lang.String COPY_NODE_COMMAND
           
static java.lang.String COUNT_COL
           
static java.lang.String CREATE_TAXONOMY_COMMAND
           
static java.lang.String CUT_NODE_COMMAND
           
static java.lang.String DELETE_NODE_COMMAND
           
static java.lang.String DELETE_TAXONOMY_COMMAND
           
static java.lang.String EDIT_NODE_COMMAND
           
static java.lang.String EDIT_TAXONOMY_COMMAND
           
static java.lang.String NODE_ID_COL
           
static java.lang.String NODE_NAME_COL
           
static java.lang.String NODE_TABLE
           
static java.lang.String PARENT_ID_COL
           
static java.lang.String PASTE_NODE_COMMAND
           
static java.lang.String ROOT_ID_COL
           
static java.lang.String SELECT_NODE_CMD
           
static java.lang.String SELECT_TAXONOMY_CMD
           
static java.lang.String TAXONOMY_ID_COL
           
static java.lang.String TAXONOMY_NAME_COL
           
static java.lang.String TAXONOMY_TABLE
           
 
Constructor Summary
DBTreeManager()
           
DBTreeManager(java.lang.String dbManagerName)
           
DBTreeManager(java.lang.String dbManagerName, DBTreeBuilder builder)
           
 
Method Summary
static void createDBTaxonomyTables(java.lang.String dbManagerName, boolean newTables)
          Creates the Database Tables needed for the DB Taxonomy.
 boolean dbNodeExists(java.lang.String taxonomyID, java.lang.String nodeID)
           
 java.lang.String getBody(RaritanPageContext rpc)
          Returns the tag body.
protected  java.lang.String getFirstTaxonomy()
           
 java.lang.String getHyperlink(java.lang.String sessionID, java.lang.String targetURL, TreeNode treeNode, OrderedMap searchAttributes)
          searchAttributes has http request param = treeNode attribute - renderer uses this map to build a query from the TreeNode data.
protected  int getNextNodeID()
           
protected  int getNextTaxonomyID()
           
static java.lang.String getNodeIDFromPath(java.lang.String databaseManager, java.lang.String taxonomyPath)
           
static java.lang.String getNodeIDFromPath(java.lang.String databaseManager, java.lang.String taxonomyPath, boolean convertUnderscores)
           
 java.lang.String getNodeName(java.lang.String nodeID)
           
 java.lang.String getNodeName(java.lang.String taxonomyID, java.lang.String nodeID)
          returns the name of the Taxonomy node with the given taxonomyID and nodeID or null if these IDs do not exist in the database.
static java.lang.String getNodePath(java.lang.String databaseManager, java.lang.String nodeID)
           
static java.lang.String getNodePath(java.lang.String databaseManager, java.lang.String nodeID, boolean convertUnderscores)
           
 java.lang.String getNodeTaxonomyID(java.lang.String nodeID)
           
 java.lang.String getParentID(java.lang.String nodeID)
           
 java.lang.String getRootID(java.lang.String taxonomyName)
           
 java.lang.String getTaxonomyID(java.lang.String taxonomyName)
           
 java.lang.String[] getTaxonomyIDs()
           
 java.lang.String getTaxonomyName(java.lang.String taxonomyID)
           
 TreeRoot getTree(java.lang.String taxonomyName, boolean create)
           
 void initialize(org.w3c.dom.Element elem)
          Initializes the object from an XML tag or element.
 void initialize(java.util.Map initParams)
           
 boolean isRootID(java.lang.String nodeID)
          Checks if a nodeID is a Tree root ID.
 void releaseTaxonomy(java.lang.String taxonomyName)
           
static void saveAsTaxonomyTree(java.lang.String databaseManager, TreeRoot tree)
          Loads a TreeRoot object into the database as a database tree.
static void saveAsTaxonomyTree(java.lang.String databaseManager, TreeRoot tree, boolean useNodeIDs)
          Loads a TreeRoot object into the database as a database tree.
static void saveAsTaxonomyTree(java.lang.String databaseManager, TreeRoot tree, boolean useNodeIDs, boolean addCounts, java.util.Map attributeMap)
          Loads a TreeRoot object into the database as a database tree.
 void setCachedTreeName(java.lang.String cachedTreeName)
           
 void setConvertUnderscores(boolean convertUnderscores)
          If set to true: convert any '_' in node names to ' '
 boolean taxonomyIDExists(java.lang.String taxonomyID)
           
 boolean taxonomyNameExists(java.lang.String taxonomyName)
           
 TreeRoot updateTaxonomyTree(java.lang.String taxonomyName, RaritanPageContext rpc)
           
 void updateTree(RaritanPageContext rpc)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TAXONOMY_TABLE

public static final java.lang.String TAXONOMY_TABLE
See Also:
Constant Field Values

TAXONOMY_NAME_COL

public static final java.lang.String TAXONOMY_NAME_COL
See Also:
Constant Field Values

ROOT_ID_COL

public static final java.lang.String ROOT_ID_COL
See Also:
Constant Field Values

TAXONOMY_ID_COL

public static final java.lang.String TAXONOMY_ID_COL
See Also:
Constant Field Values

NODE_TABLE

public static final java.lang.String NODE_TABLE
See Also:
Constant Field Values

NODE_ID_COL

public static final java.lang.String NODE_ID_COL
See Also:
Constant Field Values

NODE_NAME_COL

public static final java.lang.String NODE_NAME_COL
See Also:
Constant Field Values

PARENT_ID_COL

public static final java.lang.String PARENT_ID_COL
See Also:
Constant Field Values

COUNT_COL

public static final java.lang.String COUNT_COL
See Also:
Constant Field Values

ATTR_TABLE

public static final java.lang.String ATTR_TABLE
See Also:
Constant Field Values

ATTR_NAME_COL

public static final java.lang.String ATTR_NAME_COL
See Also:
Constant Field Values

ATTR_VALUE_COL

public static final java.lang.String ATTR_VALUE_COL
See Also:
Constant Field Values

ADD_NODE_COMMAND

public static final java.lang.String ADD_NODE_COMMAND
See Also:
Constant Field Values

COPY_NODE_COMMAND

public static final java.lang.String COPY_NODE_COMMAND
See Also:
Constant Field Values

CUT_NODE_COMMAND

public static final java.lang.String CUT_NODE_COMMAND
See Also:
Constant Field Values

PASTE_NODE_COMMAND

public static final java.lang.String PASTE_NODE_COMMAND
See Also:
Constant Field Values

DELETE_NODE_COMMAND

public static final java.lang.String DELETE_NODE_COMMAND
See Also:
Constant Field Values

EDIT_NODE_COMMAND

public static final java.lang.String EDIT_NODE_COMMAND
See Also:
Constant Field Values

CREATE_TAXONOMY_COMMAND

public static final java.lang.String CREATE_TAXONOMY_COMMAND
See Also:
Constant Field Values

EDIT_TAXONOMY_COMMAND

public static final java.lang.String EDIT_TAXONOMY_COMMAND
See Also:
Constant Field Values

DELETE_TAXONOMY_COMMAND

public static final java.lang.String DELETE_TAXONOMY_COMMAND
See Also:
Constant Field Values

SELECT_NODE_CMD

public static final java.lang.String SELECT_NODE_CMD
See Also:
Constant Field Values

SELECT_TAXONOMY_CMD

public static final java.lang.String SELECT_TAXONOMY_CMD
See Also:
Constant Field Values
Constructor Detail

DBTreeManager

public DBTreeManager()

DBTreeManager

public DBTreeManager(java.lang.String dbManagerName)

DBTreeManager

public DBTreeManager(java.lang.String dbManagerName,
                     DBTreeBuilder builder)
Method Detail

setCachedTreeName

public void setCachedTreeName(java.lang.String cachedTreeName)

updateTaxonomyTree

public TreeRoot updateTaxonomyTree(java.lang.String taxonomyName,
                                   RaritanPageContext rpc)

updateTree

public void updateTree(RaritanPageContext rpc)

getBody

public java.lang.String getBody(RaritanPageContext rpc)
Description copied from interface: ICustomTag
Returns the tag body.

Specified by:
getBody in interface ICustomTag
Parameters:
rpc - Platform-neutral page context ( can be used in non J2EE environments such as ASP).
Returns:
The tag body text string.

getTree

public TreeRoot getTree(java.lang.String taxonomyName,
                        boolean create)

releaseTaxonomy

public void releaseTaxonomy(java.lang.String taxonomyName)

getHyperlink

public java.lang.String getHyperlink(java.lang.String sessionID,
                                     java.lang.String targetURL,
                                     TreeNode treeNode,
                                     OrderedMap searchAttributes)
Description copied from interface: ITreeNodeHyperlinkRenderer
searchAttributes has http request param = treeNode attribute - renderer uses this map to build a query from the TreeNode data.

Specified by:
getHyperlink in interface ITreeNodeHyperlinkRenderer

getTaxonomyIDs

public java.lang.String[] getTaxonomyIDs()

getRootID

public java.lang.String getRootID(java.lang.String taxonomyName)

getNodeTaxonomyID

public java.lang.String getNodeTaxonomyID(java.lang.String nodeID)

getTaxonomyID

public java.lang.String getTaxonomyID(java.lang.String taxonomyName)

getTaxonomyName

public java.lang.String getTaxonomyName(java.lang.String taxonomyID)

getNodeName

public java.lang.String getNodeName(java.lang.String taxonomyID,
                                    java.lang.String nodeID)
returns the name of the Taxonomy node with the given taxonomyID and nodeID or null if these IDs do not exist in the database.


getNodeName

public java.lang.String getNodeName(java.lang.String nodeID)

getParentID

public java.lang.String getParentID(java.lang.String nodeID)

getNextNodeID

protected int getNextNodeID()

getNextTaxonomyID

protected int getNextTaxonomyID()

getFirstTaxonomy

protected java.lang.String getFirstTaxonomy()

dbNodeExists

public boolean dbNodeExists(java.lang.String taxonomyID,
                            java.lang.String nodeID)

isRootID

public boolean isRootID(java.lang.String nodeID)
Checks if a nodeID is a Tree root ID.


taxonomyNameExists

public boolean taxonomyNameExists(java.lang.String taxonomyName)

taxonomyIDExists

public boolean taxonomyIDExists(java.lang.String taxonomyID)

setConvertUnderscores

public void setConvertUnderscores(boolean convertUnderscores)
If set to true: convert any '_' in node names to ' '


saveAsTaxonomyTree

public static void saveAsTaxonomyTree(java.lang.String databaseManager,
                                      TreeRoot tree)
                               throws com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException
Loads a TreeRoot object into the database as a database tree. Replaces any node IDs set in the tree with incremental nodeIDs to ensure database consistency.

Throws:
com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException

saveAsTaxonomyTree

public static void saveAsTaxonomyTree(java.lang.String databaseManager,
                                      TreeRoot tree,
                                      boolean useNodeIDs)
                               throws com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException
Loads a TreeRoot object into the database as a database tree. Uses the nodeIds present in the tree.

Throws:
com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException

saveAsTaxonomyTree

public static void saveAsTaxonomyTree(java.lang.String databaseManager,
                                      TreeRoot tree,
                                      boolean useNodeIDs,
                                      boolean addCounts,
                                      java.util.Map attributeMap)
                               throws com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException
Loads a TreeRoot object into the database as a database tree. Saves TreeNode count data and any tree node attributes designated in the attributeMap parameter.

Throws:
com.raritantechnologies.utils.tree.DBTreeManager.DBTaxonomyException

getNodePath

public static java.lang.String getNodePath(java.lang.String databaseManager,
                                           java.lang.String nodeID)

getNodePath

public static java.lang.String getNodePath(java.lang.String databaseManager,
                                           java.lang.String nodeID,
                                           boolean convertUnderscores)

getNodeIDFromPath

public static java.lang.String getNodeIDFromPath(java.lang.String databaseManager,
                                                 java.lang.String taxonomyPath)

getNodeIDFromPath

public static java.lang.String getNodeIDFromPath(java.lang.String databaseManager,
                                                 java.lang.String taxonomyPath,
                                                 boolean convertUnderscores)

createDBTaxonomyTables

public static void createDBTaxonomyTables(java.lang.String dbManagerName,
                                          boolean newTables)
Creates the Database Tables needed for the DB Taxonomy. If 'newTables' is false, will drop the existing tables first and then submit the Create Table statements.


initialize

public void initialize(org.w3c.dom.Element elem)
Description copied from interface: IConfigurable
Initializes the object from an XML tag or element. This method is called by the Framework as part of the application initializtion. see ConfigurationManager, XMLConfigurationManager, XMLSearchFieldMapFactory, XMLSearchSourceFactory. Configurable objects that are owned or contained by other configurable objects will be initialized in by the parent object.

Specified by:
initialize in interface IConfigurable

initialize

public void initialize(java.util.Map initParams)
Specified by:
initialize in interface ICustomTag