|
CreoleRegister |
|
1 /* 2 * CreoleRegister.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Hamish Cunningham, 31/Aug/2000 12 * 13 * $Id: CreoleRegister.java,v 1.25 2001/10/22 13:23:46 valyt Exp $ 14 */ 15 16 package gate; 17 18 import java.util.*; 19 import java.net.*; 20 import java.io.*; 21 22 import gate.util.*; 23 import gate.event.*; 24 25 /** The CREOLE register records the set of resources that are currently 26 * known to the system. Each member of the register is a 27 * <A HREF=creole/ResourceData.html>ResourceData</A> object, indexed by 28 * the class name of the resource. 29 * <P> 30 * The register is accessible from the static method 31 * <A HREF=Gate.html#getCreoleRegister()>gate.Gate.getCreoleRegister 32 * </A>; 33 * there is only one per application of the GATE framework. 34 * <P> 35 * Clients use the register by adding URLs (using the 36 * <A HREF=#addDirectory(java.net.URL)>addDirectory</A> method) 37 * pointing to CREOLE directories. A <B>CREOLE directory</B> is a URL at 38 * which resides a file called <CODE>creole.xml</CODE> describing 39 * the resources present, and one or more Jar files implementing 40 * those resources. E.g., the CREOLE resources at 41 * <A HREF=http://gate.ac.uk/>gate.ac.uk</A> are registered by Gate.init() 42 * by registering the directory URL 43 * <A HREF=http://gate.ac.uk/creole/>http://gate.ac.uk/creole/</A>, under 44 * which lives a file called creole.xml. 45 * <P> 46 * To register resources clients use the <CODE>registerDirectories</CODE> 47 * methods. When resources have been registered they can be accessed via 48 * their <CODE>ResourceData</CODE> objects. So a typical use of the register 49 * is to: add the set of URLs containing CREOLE directories; register 50 * all resources found at those URLs; browse the set of registered 51 * resources. 52 * <P> 53 * In all cases, where a resource or a directory is added which is 54 * already present in the register, the new silently overwrites the old. 55 * 56 * The CreoleRegister notifies all registered listeners of all 57 * {@link gate.event.CreoleEvent}s that occur in the system regardless of 58 * whether they were initially fired by the {@link Factory}, the 59 * {@link DataStoreRegister} or the {@link CreoleRegister} itself. 60 * 61 * @see gate.Gate 62 * @see gate.creole.ResourceData 63 */ 64 public interface CreoleRegister extends Map, Serializable, CreoleListener 65 { 66 /** Add a CREOLE directory URL. The directory is <B>not</B> registered. */ 67 public void addDirectory(URL directoryUrl); 68 69 /** Get the list of CREOLE directory URLs. */ 70 public Set getDirectories(); 71 72 /** Register all the CREOLE directories that we know of. 73 * The <CODE>creole.xml</CODE> files 74 * at the URLs are parsed, and <CODE>CreoleData</CODE> objects added 75 * to the register. 76 */ 77 public void registerDirectories() throws GateException; 78 79 /** Register a single CREOLE directory. The <CODE>creole.xml</CODE> 80 * file at the URL is parsed, and <CODE>CreoleData</CODE> objects added 81 * to the register. If the directory URL has not yet been added it 82 * is now added. 83 */ 84 public void registerDirectories(URL directoryUrl) throws GateException; 85 86 /** Register resources that are built in to the GATE distribution. 87 * These resources are described by the <TT>creole.xml</TT> file in 88 * <TT>resources/creole</TT>. 89 */ 90 public void registerBuiltins() throws GateException; 91 92 /** This is a utility method for creating CREOLE directory files 93 * (typically called <CODE>creole.xml</CODE>) from a list of Jar 94 * files that contain resources. The method concatenates the 95 * <CODE>resource.xml</CODE> files that the Jars contain. 96 * <P> 97 * If Java allowed class methods in interfaces this would be static. 98 */ 99 public File createCreoleDirectoryFile(File directoryFile, Set jarFileNames); 100 101 /** Get the list of types of LR in the register. */ 102 public Set getLrTypes(); 103 104 /** Get the list of types of PR in the register. */ 105 public Set getPrTypes(); 106 107 /** Get the list of types of VR in the register. */ 108 public Set getVrTypes(); 109 110 /** Get the list of types of VR in the register. */ 111 public Set getControllerTypes(); 112 113 /** Get a list of all instantiations of LR in the register. */ 114 public List getLrInstances(); 115 116 /** Get a list of all instantiations of PR in the register. */ 117 public List getPrInstances(); 118 119 /** Get a list of all instantiations of VR in the register. */ 120 public List getVrInstances(); 121 122 /** Get a list of instantiations of a type of LR in the register. */ 123 public List getLrInstances(String resourceTypeName); 124 125 /** Get a list of instantiations of a type of PR in the register. */ 126 public List getPrInstances(String resourceTypeName); 127 128 /** Get a list of instantiations of a type of VR in the register. */ 129 public List getVrInstances(String resourceTypeName); 130 131 /** Get a list of all non-private instantiations of LR in the register. */ 132 public List getPublicLrInstances(); 133 134 /** Get a list of all non-private instantiations of PR in the register. */ 135 public List getPublicPrInstances(); 136 137 /** Get a list of all non-private instantiations of VR in the register. */ 138 public List getPublicVrInstances(); 139 140 /** Get a list of all non-private types of LR in the register. */ 141 public List getPublicLrTypes(); 142 143 /** Get a list of all non-private types of PR in the register. */ 144 public List getPublicPrTypes(); 145 146 /** Get a list of all non-private types of VR in the register. */ 147 public List getPublicVrTypes(); 148 149 /** Get a list of all non-private types of Controller in the register. */ 150 public List getPublicControllerTypes(); 151 152 /** 153 * Gets all the instantiations of a given type and all its derivate types; 154 * It doesn't return instances that have the hidden attribute set to "true" 155 */ 156 public List getAllInstances(String type) throws GateException; 157 158 /** 159 * Returns a list of strings representing class names for large VRs valid 160 * for a given type of language/processing resource. 161 * The default VR will be the first in the returned list. 162 */ 163 public List getLargeVRsForResource(String resourceClassName); 164 165 /** 166 * Returns a list of strings representing class names for small VRs valid 167 * for a given type of language/processing resource 168 * The default VR will be the first in the returned list. 169 */ 170 public List getSmallVRsForResource(String resourceClassName); 171 172 /** 173 * Returns a list of strings representing class names for annotation VRs 174 * that are able to display/edit all types of annotations. 175 * The default VR will be the first in the returned list. 176 */ 177 public List getAnnotationVRs(); 178 179 /** 180 * Returns a list of strings representing class names for annotation VRs 181 * that are able to display/edit a given annotation type 182 * The default VR will be the first in the returned list. 183 */ 184 public List getAnnotationVRs(String annotationType); 185 186 187 /** 188 * Returns a list of strings representing annotations types for which 189 * there are custom viewers/editor registered. 190 */ 191 public List getVREnabledAnnotationTypes(); 192 193 /** 194 * Registers a {@link gate.event.CreoleListener}with this CreoleRegister. 195 * The register will fire events every time a resource is added to or removed 196 * from the system and when a datastore is created, opened or closed. 197 */ 198 public void addCreoleListener(CreoleListener l); 199 200 /** 201 * Removes a {@link gate.event.CreoleListener} previously registered with this 202 * CreoleRegister. {@see #addCreoleListener()} 203 */ 204 public void removeCreoleListener(CreoleListener l); 205 206 } // interface CreoleRegister 207
|
CreoleRegister |
|