|
ResourceData |
|
1 /* 2 * ResourceData.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, 1/Sept/2000 12 * 13 * $Id: ResourceData.java,v 1.16 2001/10/19 14:57:19 cursu Exp $ 14 */ 15 16 package gate.creole; 17 18 import java.util.*; 19 import java.net.*; 20 import java.io.*; 21 22 import gate.*; 23 import gate.util.*; 24 25 /** Models an individual CREOLE resource metadata, plus configuration data, 26 * plus the instantiations of the resource current within the system. 27 * Some metadata elements are used by GATE to load resources, or index 28 * the members of the CREOLE register; some are used during resource 29 * parameterisation and initialisation. 30 * Metadata elements which are used by the CREOLE registration and loading 31 * mechanisms are properties of ResourceData implementations and have their 32 * own get/set methods. Other metadata elements are made features of the 33 * ResourceData. So, for example, if you add an element "FunkyElementThaing" 34 * to the metadata of a resource, this will be made a feature of that 35 * resource's ResourceData. 36 * @see CreoleRegister 37 */ 38 public class ResourceData extends AbstractFeatureBearer implements Serializable 39 { 40 41 /** Debug flag */ 42 protected static final boolean DEBUG = false; 43 44 /** Construction */ 45 public ResourceData() { }// ResourceData 46 47 /** String representation */ 48 public String toString() { 49 int noInst = (instantiationStack == null) ? 0: instantiationStack.size(); 50 /* 51 int noSmallViews = (smallViews == null) ? 0: smallViews.size(); 52 int noViews = (views == null) ? 0: views.size(); 53 */ 54 StringBuffer s = new StringBuffer( 55 "ResourceDataImpl, name=" + name + "; className=" + className + 56 "; jarFileName=" + jarFileName + "; jarFileUrl=" + jarFileUrl + 57 "; xmlFileName=" + xmlFileName + "; xmlFileUrl=" + xmlFileUrl + 58 "; isAutoLoading=" + autoLoading + "; numberInstances=" + noInst + 59 "; isPrivate=" + priv +"; isTool="+ tool + 60 "; validityMessage=" + validityMessage + 61 "; interfaceName=" + interfaceName + 62 "; guiType=" + guiType + 63 "; mainViewer=" + isMainView + 64 "; resourceDisplayed=" + resourceDisplayed + 65 "; annotationTypeDisplayed=" + annotationTypeDisplayed + 66 "; parameterList=" + parameterList + 67 "; features=" + features 68 ); 69 return s.toString(); 70 } // toString 71 72 /** Equality: two resource data objects are the same if they have the 73 * same name 74 */ 75 public boolean equals(Object other) { 76 if(name.equals(((ResourceData) other).getName())) 77 return true; 78 return false; 79 } // equals 80 81 /** Hashing, based on the name field of the object */ 82 public int hashCode() { 83 return name.hashCode(); 84 } // hashCode 85 86 /** The name of the resource */ 87 protected String name; 88 89 /** Set method for the resource name */ 90 public void setName(String name) { this.name = name; } 91 92 /** Get method for the resource name */ 93 public String getName() { return name; } 94 95 /** Location of an icon for the resource */ 96 protected String icon; 97 98 /** Set method for the resource icon */ 99 public void setIcon(String icon) { this.icon = icon; } 100 101 /** Get method for the resource icon */ 102 public String getIcon() { return icon; } 103 104 /** The stack of instantiations */ 105 protected WeakBumpyStack instantiationStack = new WeakBumpyStack(); 106 107 /** This list contains all instances loaded from creole.xml with 108 * AUTOINSTANCE tag. The idea is that we don't want to loose them from the 109 * system, because of the WeakBumpyStack 110 */ 111 protected List persistantInstantiationList = new ArrayList(); 112 113 /** Get the list of instantiations of resources */ 114 public WeakBumpyStack getInstantiations() { 115 return instantiationStack; 116 } // getInstantiations 117 118 /** Add an instantiation of the resource to the register of these */ 119 public void addInstantiation(Resource resource) { 120 instantiationStack.push(resource); 121 } // addInstantiation 122 123 /** This method makes a certain resource persistant by adding it into a 124 * persistantInstantiationList. It is used especially with AUTOINSTANCE tag 125 * in creole xml. 126 */ 127 public void makeInstantiationPersistant(Resource resource) { 128 persistantInstantiationList.add(resource); 129 } // makeInstantiationPersistant 130 131 /** Remove an instantiation of the resource from the register of these */ 132 public void removeInstantiation(Resource resource) { 133 instantiationStack.remove(resource); 134 persistantInstantiationList.remove(resource); 135 } // removeInstantiation 136 137 /** Bump an instantiation to the top of the instantiation stack */ 138 public void bumpInstantiation(Resource resource) { 139 instantiationStack.bump(resource); 140 } // bumpInstantiation 141 142 /** The class name of the resource */ 143 protected String className; 144 145 /** Set method for the resource class name */ 146 public void setClassName(String className) { this.className = className; } 147 148 /** Get method for the resource class name */ 149 public String getClassName() { return className; } 150 151 /** The interface name of the resource */ 152 protected String interfaceName; 153 154 /** Set method for the resource interface name */ 155 public void setInterfaceName(String interfaceName) { 156 this.interfaceName = interfaceName; 157 } // setInterfaceName 158 159 /** Get method for the resource interface name */ 160 public String getInterfaceName() { return interfaceName; } 161 162 /** The class of the resource */ 163 protected Class resourceClass; 164 165 /** Set method for the resource class */ 166 public void setResourceClass(Class resourceClass) { 167 this.resourceClass = resourceClass; 168 } // setResourceClass 169 170 /** Get method for the resource class. Asks the GATE class loader 171 * to load it, if it is not already present. 172 */ 173 public Class getResourceClass() throws ClassNotFoundException { 174 if(resourceClass == null) { 175 GateClassLoader classLoader = Gate.getClassLoader(); 176 resourceClass = classLoader.loadClass(className); 177 } 178 179 return resourceClass; 180 } // getResourceClass 181 182 /** The jar file name of the resource */ 183 protected String jarFileName; 184 185 /** Set method for the resource jar file name */ 186 public void setJarFileName(String jarFileName) { 187 this.jarFileName = jarFileName; 188 } // setJarFileName 189 190 /** Get method for the resource jar file name */ 191 public String getJarFileName() { return jarFileName; } 192 193 /** The jar file URL of the resource */ 194 protected URL jarFileUrl; 195 196 /** Set method for the resource jar file URL */ 197 public void setJarFileUrl(URL jarFileUrl) { this.jarFileUrl = jarFileUrl; } 198 199 /** Get method for the resource jar file URL */ 200 public URL getJarFileUrl() { return jarFileUrl; } 201 202 /** The xml file name of the resource */ 203 protected String xmlFileName; 204 205 /** Set method for the resource xml file name */ 206 public void setXmlFileName(String xmlFileName) { 207 this.xmlFileName = xmlFileName; 208 } // setXmlFileName 209 210 /** Get method for the resource xml file name */ 211 public String getXmlFileName() { return xmlFileName; } 212 213 /** The xml file URL of the resource */ 214 protected URL xmlFileUrl; 215 216 /** Set method for the resource xml file URL */ 217 public void setXmlFileUrl(URL xmlFileUrl) { this.xmlFileUrl = xmlFileUrl; } 218 219 /**@deprecated Get method for the resource xml file URL */ 220 public URL getXmlFileUrl() { return xmlFileUrl; } 221 222 /** The comment string */ 223 protected String comment; 224 225 /** Get method for the resource comment */ 226 public String getComment() { return comment; } 227 228 /** Set method for the resource comment */ 229 public void setComment(String comment) { this.comment = comment; } 230 231 /** The set of parameter lists */ 232 protected ParameterList parameterList = new ParameterList(); 233 234 /** Set the parameter list */ 235 public void setParameterList(ParameterList parameterList) { 236 this.parameterList = parameterList; 237 } // addParameterList 238 239 /** Get the parameter list */ 240 public ParameterList getParameterList() { return parameterList; } 241 242 /** Autoloading flag */ 243 protected boolean autoLoading; 244 245 /** Set method for resource autoloading flag */ 246 public void setAutoLoading(boolean autoLoading) { 247 this.autoLoading = autoLoading; 248 } // setAutoLoading 249 250 /** Is the resource autoloading? */ 251 public boolean isAutoLoading() { return autoLoading; } 252 253 /** Private flag */ 254 protected boolean priv = false; 255 256 /** Set method for resource private flag */ 257 public void setPrivate(boolean priv) { 258 this.priv = priv; 259 } // setPrivate 260 261 /** Is the resource private? */ 262 public boolean isPrivate() { return priv; } 263 264 /** Tool flag */ 265 protected boolean tool = false; 266 267 /** Set method for resource tool flag */ 268 public void setTool(boolean tool) { 269 this.tool = tool; 270 } // setTool 271 272 /** Is the resource a tool? */ 273 public boolean isTool() { return tool; } 274 /** Is this a valid resource data configuration? If not, leave an 275 * error message that can be returned by <TT>getValidityMessage()</TT>. 276 */ 277 public boolean isValid() { 278 boolean valid = true; 279 //****************************** 280 // here should check that the resource has all mandatory elements, 281 // e.g. class name, and non-presence of runtime params on LRs and VRs etc. 282 //****************************** 283 return valid; 284 } // isValid() 285 286 /** Status message set by isValid() */ 287 protected String validityMessage = ""; 288 289 /** Get validity statues message. */ 290 public String getValidityMessage() { return validityMessage; } 291 292 ///////////////////////////////////////////////////// 293 // Fields added for GUI element 294 ///////////////////////////////////////////////////// 295 /** This type indicates that the resource is not a GUI */ 296 public static final int NULL_GUI = 0; 297 /**This type indicates that the resource goes into the large area of GATE GUI*/ 298 public static final int LARGE_GUI = 1; 299 /**This type indicates that the resource goes into the small area of GATE GUI*/ 300 public static final int SMALL_GUI = 2; 301 /** A filed which can have one of the 3 predefined values. See above.*/ 302 protected int guiType = NULL_GUI; 303 /** Whether or not this viewer will be the default one*/ 304 protected boolean isMainView = false; 305 /** The full class name of the resource displayed by this viewer.*/ 306 protected String resourceDisplayed = null; 307 /** The full type name of the annotation displayed by this viewer.*/ 308 protected String annotationTypeDisplayed = null; 309 /** A simple mutator for guiType field*/ 310 public void setGuiType(int aGuiType){guiType = aGuiType;} 311 /** A simple accessor for guiType field*/ 312 public int getGuiType(){return guiType;} 313 /** A simple mutator for isMainView field*/ 314 public void setIsMainView(boolean mainView){isMainView = mainView;} 315 /** A simple accessor for isMainView field*/ 316 public boolean isMainView(){return isMainView;} 317 /** A simple mutator for resourceDisplayed field*/ 318 public void setResourceDisplayed(String aResourceDisplayed){ 319 resourceDisplayed = aResourceDisplayed; 320 }// setResourceDisplayed 321 /** A simple accessor for resourceDisplayed field*/ 322 public String getResourceDisplayed(){return resourceDisplayed;} 323 /** A simple mutator for annotationTypeDisplayed field*/ 324 public void setAnnotationTypeDisplayed(String anAnnotationTypeDisplayed){ 325 annotationTypeDisplayed = anAnnotationTypeDisplayed; 326 }// setAnnotationTypeDisplayed 327 /** A simple accessor for annotationTypeDisplayed field*/ 328 public String getAnnotationTypeDisplayed(){return annotationTypeDisplayed;} 329 } // ResourceData 330
|
ResourceData |
|