| Scratch |

    1   /*
    2    *  Scratch.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, 22/03/00
    12   *
    13   *  $Id: Scratch.java,v 1.48 2001/11/09 16:14:55 valyt Exp $
    14   */
    15
    16
    17  package gate.util;
    18
    19  import java.util.*;
    20  import java.net.*;
    21  import java.io.*;
    22  import java.util.zip.*;
    23
    24  import gate.*;
    25  import gate.creole.*;
    26  import gate.gui.*;
    27
    28  import org.xml.sax.*;
    29  import javax.xml.parsers.*;
    30  import org.w3c.www.mime.*;
    31
    32  /** A scratch pad for experimenting.
    33    */
    34  public class Scratch
    35  {
    36    /** Debug flag */
    37    private static final boolean DEBUG = false;
    38
    39    public static void main(String args[]) throws Exception {
    40
    41
    42  //    javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
    43  //    Map uidefaults  = (Map)javax.swing.UIManager.getDefaults();
    44  //    List keys = new ArrayList(uidefaults.keySet());
    45  //    Collections.sort(keys);
    46  //    Iterator keyIter = keys.iterator();
    47  //    while(keyIter.hasNext()){
    48  //      Object key = keyIter.next();
    49  //      System.out.println(key + " : " + uidefaults.get(key));
    50  //    }
    51
    52      // initialise the thing
    53  //    Gate.setNetConnected(false);
    54  //    Gate.setLocalWebServer(false);
    55  //    Gate.init();
    56
    57  //    Scratch oneOfMe = new Scratch();
    58  //    try{
    59  //      oneOfMe.runNerc();
    60  //    } catch (Exception e) {
    61  //      e.printStackTrace(Out.getPrintWriter());
    62  //    }
    63
    64
    65  //    CreoleRegister reg = Gate.getCreoleRegister();
    66  //System.out.println("Instances for " + reg.getLrInstances("gate.creole.AnnotationSchema"));
    67  //System.out.println("Instances for " + reg.getAllInstances ("gate.creole.AnnotationSchema"));
    68
    69  //System.out.println("VRs for " + reg.getAnnotationVRs("Tree"));
    70  //System.out.println("VRs for " + reg.getAnnotationVRs());
    71
    72  //System.out.println(reg.getLargeVRsForResource("gate.corpora.DocumentImpl"));
    73
    74    } // main
    75
    76    /** Example of using an exit-time hook. */
    77    public static void exitTimeHook() {
    78      Runtime.getRuntime().addShutdownHook(new Thread() {
    79        public void run() {
    80          System.out.println("shutting down");
    81          System.out.flush();
    82
    83          // create a File to store the state in
    84          File stateFile = new File("z:\\tmp", "GateGuiState.gzsr");
    85
    86          // dump the state into the new File
    87          try {
    88            ObjectOutputStream oos = new ObjectOutputStream(
    89              new GZIPOutputStream(new FileOutputStream(stateFile))
    90            );
    91            System.out.println("writing main frame");
    92            System.out.flush();
    93            oos.writeObject(Main.getMainFrame());
    94            oos.close();
    95          } catch(Exception e) {
    96            System.out.println("Couldn't write to state file: " + e);
    97          }
    98
    99          System.out.println("done");
    100         System.out.flush();
    101       }
    102     });
    103   } // exitTimeHook()
    104
    105   /**
    106    * ***** <B>Failed</B> *****
    107    * attempt to serialise whole gui state - various swing components
    108    * don't like to be serialised :-(. might be worth trying again when
    109    * jdk1.4 arrives.
    110    */
    111   public static void dumpGuiState() {
    112     System.out.println("dumping gui state...");
    113     System.out.flush();
    114
    115     // create a File to store the state in
    116     File stateFile = new File("z:\\tmp", "GateGuiState.gzsr");
    117
    118     // dump the state into the new File
    119     try {
    120       ObjectOutputStream oos = new ObjectOutputStream(
    121         new GZIPOutputStream(new FileOutputStream(stateFile))
    122       );
    123       MainFrame mf = Main.getMainFrame();
    124
    125       // wait for 1 sec
    126       long startTime = System.currentTimeMillis();
    127       long timeNow = System.currentTimeMillis();
    128       while(timeNow - startTime < 3000){
    129         try {
    130           Thread.sleep(150);
    131           timeNow = System.currentTimeMillis();
    132         } catch(InterruptedException ie) {}
    133       }
    134
    135       System.out.println("writing main frame");
    136       System.out.flush();
    137       oos.writeObject(mf);
    138       oos.close();
    139     } catch(Exception e) {
    140       System.out.println("Couldn't write to state file: " + e);
    141     }
    142
    143     System.out.println("...done gui dump");
    144     System.out.flush();
    145   } // dumpGuiState
    146
    147   /**
    148    * Run NERC and print out the various stages (doesn't actually
    149    * use Nerc but the individual bits), and serialise then deserialise
    150    * the NERC system.
    151    */
    152   public void runNerc() throws Exception {
    153     long startTime = System.currentTimeMillis();
    154
    155     Out.prln("gate init");
    156     Gate.setLocalWebServer(false);
    157     Gate.setNetConnected(false);
    158     Gate.init();
    159
    160     Out.prln((System.currentTimeMillis() - startTime) / 1000.0 + " seconds");
    161     Out.prln("creating resources");
    162
    163     // a controller
    164     Controller c1 = (Controller) Factory.createResource(
    165       "gate.creole.SerialController",
    166       Factory.newFeatureMap()
    167     );
    168     c1.setName("Scratch controller");
    169
    170     //get a document
    171     FeatureMap params = Factory.newFeatureMap();
    172     params.put("sourceUrl", Gate.getUrl("tests/doc0.html"));
    173 //    params.put("sourceUrl", new File("z:\\tmp\\zxc.txt").toURL());
    174     params.put("markupAware", "false");
    175     Document doc = (Document)Factory.createResource("gate.corpora.DocumentImpl",
    176                                                     params);
    177
    178     //create a default tokeniser
    179     params = Factory.newFeatureMap();
    180     params.put("rulesURL", "gate:/creole/tokeniser/DefaultTokeniser.rules");
    181     params.put("encoding", "UTF-8");
    182     params.put("document", doc);
    183     ProcessingResource tokeniser = (ProcessingResource) Factory.createResource(
    184       "gate.creole.tokeniser.DefaultTokeniser", params
    185     );
    186
    187     //create a default gazetteer
    188     params = Factory.newFeatureMap();
    189     params.put("document", doc);
    190     params.put("listsURL", "gate:/creole/gazeteer/default/lists.def");
    191     ProcessingResource gaz = (ProcessingResource) Factory.createResource(
    192       "gate.creole.gazetteer.DefaultGazetteer", params
    193     );
    194
    195     //create a default transducer
    196     params = Factory.newFeatureMap();
    197     params.put("document", doc);
    198     //params.put("grammarURL", new File("z:\\tmp\\main.jape").toURL());
    199     ProcessingResource trans = (ProcessingResource) Factory.createResource(
    200       "gate.creole.Transducer", params
    201     );
    202
    203     // get the controller to encapsulate the tok and gaz
    204     c1.getPRs().add(tokeniser);
    205     c1.getPRs().add(gaz);
    206     c1.getPRs().add(trans);
    207
    208     Out.prln((System.currentTimeMillis() - startTime) / 1000.0 + " seconds");
    209     Out.prln("dumping state");
    210
    211     // create a File to store the state in
    212     File stateFile = new File("z:\\tmp", "SerialisedGateState.gzsr");
    213
    214     // dump the state into the new File
    215     try {
    216       ObjectOutputStream oos = new ObjectOutputStream(
    217         new GZIPOutputStream(new FileOutputStream(stateFile))
    218       );
    219       oos.writeObject(new SessionState());
    220       oos.close();
    221     } catch(IOException e) {
    222       throw new GateException("Couldn't write to state file: " + e);
    223     }
    224
    225     Out.prln(System.getProperty("user.home"));
    226
    227     Out.prln((System.currentTimeMillis() - startTime) / 1000.0 + " seconds");
    228     Out.prln("reinstating");
    229
    230     try {
    231       FileInputStream fis = new FileInputStream(stateFile);
    232       GZIPInputStream zis = new GZIPInputStream(fis);
    233       ObjectInputStream ois = new ObjectInputStream(zis);
    234       SessionState state = (SessionState) ois.readObject();
    235       ois.close();
    236     } catch(IOException e) {
    237       throw
    238         new GateException("Couldn't read file "+stateFile+": "+e);
    239     } catch(ClassNotFoundException ee) {
    240       throw
    241         new GateException("Couldn't find class: "+ee);
    242     }
    243
    244     Out.prln((System.currentTimeMillis() - startTime) / 1000.0 + " seconds");
    245     Out.prln("done");
    246   } // runNerc()
    247
    248
    249   /** Inner class for holding CR and DSR for serialisation experiments */
    250   class SessionState implements Serializable {
    251     SessionState() {
    252       cr = Gate.getCreoleRegister();
    253       dsr = Gate.getDataStoreRegister();
    254     }
    255
    256     CreoleRegister cr;
    257
    258     DataStoreRegister dsr;
    259
    260     // other state from Gate? and elsewhere?
    261   } // SessionState
    262
    263   /** Generate a random integer for file naming. */
    264   protected static int random() {
    265     return randomiser.nextInt(9999);
    266   } // random
    267
    268   /** Random number generator */
    269   protected static Random randomiser = new Random();
    270
    271 } // class Scratch
    272
    273

| Scratch |