/* ** j###t ########## #### #### ** j###t ########## #### #### ** j###T "###L J###" ** ######P' ########## ######### ** ######k, ########## T######T ** ####~###L #### ** #### q###L ########## .##### ** #### \###L ########## #####" ** ** $Id$ ** ** Class History ** ** Date Name Description ** ---------|------------|----------------------------------------------- ** 19Aug98 subtle start of recorded history ** */ package key.collections; import key.*; import java.util.Enumeration; import java.io.IOException; import java.io.DataInput; import java.io.DataOutput; import java.util.NoSuchElementException; import java.util.Hashtable; public final class NetworkCollection extends SiteCollection { private Hashtable theHash; public NetworkCollection() { theHash = new Hashtable(); } public void link( Symbol a ) throws NonUniqueKeyException,BadKeyException { super.link( a ); Object o = ((Reference)a).get(); if( o instanceof Site ) { Site s = (Site) o; String trail = s.getTrailer(); if( trail != null ) theHash.put( trail, a ); } } public void unRegister( String s ) { theHash.remove( s ); } public void register( String s, Symbol a ) { theHash.put( s, a ); } public void unlink( Symbol a ) throws NoSuchElementException,BadKeyException { super.unlink( a ); Object o = ((Reference)a).get(); if( o instanceof Site ) { Site s = (Site) o; String trail = s.getTrailer(); if( trail != null ) theHash.remove( trail ); } } /** * Returns the atom matched, or, possibly, an instance of * a Trie object that contains all the matching atoms. * <p> * A null is returned if no matches were found at all. The * match string is searched until the end of the string or * a non-alphabetical character is found. * * @param match the start or whole string to match from * @return An atom object, referring to the sole match, or a Trie */ public Object get( Object key ) { Object result = null; try { result = super.get( key ); } catch( NumberFormatException e ) { // maybe we're dealing with an alpha result = theHash.get( key ); } return( result ); } }