Mercurial > hg > digilib-old
view servlet/src/digilib/auth/HashTree.java @ 504:a370e72f2179 digilibPDF
added JSPs for PDF services
author | cmielack |
---|---|
date | Fri, 06 Mar 2009 11:06:21 +0100 |
parents | 0ff3ede32060 |
children | 398d39ee1014 9cedd170b581 |
line wrap: on
line source
/* HashTree -- Tree in a Hashtable Digital Image Library servlet components Copyright (C) 2001, 2002 Robert Casties (robcast@mail.berlios.de) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please read license.txt for the full details. A copy of the GPL may be found at http://www.gnu.org/copyleft/lgpl.html You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package digilib.auth; import java.util.*; public class HashTree { private Hashtable table; private String twigSep = "/"; private String leafSep = ","; public HashTree() { table = new Hashtable(); } public HashTree(Hashtable t, String twig_separator, String leaf_separator) { table = t; twigSep = twig_separator; leafSep = leaf_separator; optimizeTable(); } void optimizeTable() { } List match(String branch) { String b = ""; String m; LinkedList matches = new LinkedList(); // split branch StringTokenizer twig = new StringTokenizer(branch, twigSep); // walk branch and check with tree while (twig.hasMoreTokens()) { if (b.length() == 0) { b = twig.nextToken(); } else { b += twigSep + twig.nextToken(); } m = (String)table.get(b); //System.out.println("CHECK: "+b+" = "+m); if (m != null) { if (m.indexOf(leafSep) < 0) { // single leaf matches.add(m); } else { // split leaves StringTokenizer leaf = new StringTokenizer(m, leafSep); while (leaf.hasMoreTokens()) { matches.add(leaf.nextToken()); } } } } if (matches.size() > 0) { return matches; } else { return null; } } }