Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
TreeGroup.java
Package: jforum-2.1.8-src.zip [view]
Upload User: gdxydsw
Upload Date: 2019-01-29
Package Size: 16721k
Code Size: 5k
Category:
Java Develop
Development Platform:
Java
- /*
- * Copyright (c) JForum Team
- * All rights reserved.
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
- * that the following conditions are met:
- * 1) Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the
- * following disclaimer.
- * 2) Redistributions in binary form must reproduce the
- * above copyright notice, this list of conditions and
- * the following disclaimer in the documentation and/or
- * other materials provided with the distribution.
- * 3) Neither the name of "Rafael Steil" nor
- * the names of its contributors may be used to endorse
- * or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
- * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
- *
- * This file creation date: Mar 3, 2003 / 11:28:25 AM
- * The JForum Project
- * http://www.jforum.net
- */
- package net.jforum.util;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import net.jforum.dao.DataAccessDriver;
- import net.jforum.dao.TreeGroupDAO;
- /**
- * Implements a tree hierarchy of groups.
- * This class process all group hierarchy, and each group may have unlimited sub groups.
- * Each group is called <code>node</code> ( <code>net.jforum.model.GroupNode</code> object ), and
- * each node may have sub-nodes. For example, given a table like the folowing:
- *
- * <pre>
- * <code>
- * +----+----------------+--------+
- * | id | name | parent |
- * +----+---------------+--------+
- * | 6 | Parent 1 | 0 |
- * | 7 | Sub 1.1 | 6 |
- * | 8 | Sub 1.2 | 6 |
- * | 9 | SubSub 1.2.1 | 8 |
- * | 10 | SubSub 1.2.2 | 8 |
- * | 11 | Parent 2 | 0 |
- * | 12 | Parent 3 | 0 |
- * | 13 | Sub 3.1 | 12 |
- * | 14 | SubSub 3.1.1 | 13 |
- * | 15 | Sub 3.2 | 12 |
- * | 16 | Parent 4 | 0 |
- * +----+---------------+--------+
- * </code>
- * </pre>
- *
- * results on the folowing hierarchy
- * <pre>
- * <code>
- * Parent 1
- * ------
- * |
- * Sub 1.1
- * ----------
- * |
- * Sub 1.2
- * ----------
- * |
- * SubSub 1.2.1
- * ------------
- * |
- * SubSub 1.2.2
- * Parent 2
- * -----
- * Parent 3
- * -----
- * |
- * Sub 3.1
- * ---------
- * |
- * SubSub 3.1.1
- * ------------
- * |
- * Sub 3.2
- * ---------
- * Parent 4
- * ------
- * </code>
- * </pre>
- *
- * As is possible to see, we have 4 parent groups, called <code>Parent 1</code>, <code>Parent 2</code>,
- * <code>Parent 3</code> and <code>Parent 4</code>. <code>Parent 1</code> has 2 sub groups: <code>Sub 1.1</code>
- * and <code>Sub 1.2</code>. <code>Sub 1.2</code> contains 2 subgroups, <code>SubSub 1.2.1</code> and
- * <code>SubSub 1.2.2</code>. As every group is a node, ( <code>GroupNode</code> object ), and as each node
- * may have sub-nodes, the processing would be as:
- * <p>
- * <li> When the method <code>size()</code> of the <code>Parent 1</code> object is called, the number 2 will
- * be retorned, because <code>Parent 1</code> has 2 sub groups;
- * <li> when the <code>size()</code> method is called on the object of <code>Sub 1.1</code>, will be returned 0, because
- * <code>Sub 1.1</code> does not have any sub groups;
- * <li> On the other hand, then we call the <code>size()</code> method of the object represented by <code>Sub 1.2</code> object,
- * we wil have a return value of 2, because <code>Sub 1.2</code> has 2 sub groups.
- * <br>
- * The same operation is done to all other groups and its sub groups.
- *
- * @author Rafael Steil
- * @version $Id: TreeGroup.java,v 1.10 2006/08/20 22:47:42 rafaelsteil Exp $
- */
- public class TreeGroup
- {
- /**
- * Default Constructor
- */
- public TreeGroup() { }
- /**
- * Process the group hierarchy.
- *
- * @return <code>List</code> containing the complete group hierarchy. Each element
- * from the list represents a single <code>GroupNode<code> object.
- * */
- public List getNodes()
- {
- List nodes = new ArrayList();
- TreeGroupDAO tgm = DataAccessDriver.getInstance().newTreeGroupDAO();
- List rootGroups = tgm.selectGroups(0);
- for (Iterator iter = rootGroups.iterator(); iter.hasNext();) {
- GroupNode n = (GroupNode)iter.next();
- this.checkExtraNodes(n);
- nodes.add(n);
- }
- return nodes;
- }
- /**
- * Searchs for subgroups of a determined group
- *
- * @param n GroupNode
- */
- private void checkExtraNodes(GroupNode n)
- {
- TreeGroupDAO tgm = DataAccessDriver.getInstance().newTreeGroupDAO();
- List childGroups = tgm.selectGroups(n.getId());
- for (Iterator iter = childGroups.iterator(); iter.hasNext();) {
- GroupNode f = (GroupNode)iter.next();
- this.checkExtraNodes(f);
- n.addNode(f);
- }
- }
- }