home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / java / unuy2wen / cybcerone / utils / dataloaderthread.java < prev    next >
Encoding:
Java Source  |  1996-08-14  |  2.4 KB  |  96 lines

  1. // DataLoaderThread.java
  2. // 28.02.96
  3. //
  4. // the type of thread that acutally loads files
  5.  
  6. package cybcerone.utils;
  7.  
  8. import java.applet.Applet;
  9. import java.io.DataInputStream;
  10. import java.io.BufferedInputStream;
  11. import java.io.IOException;
  12. import java.net.URL;
  13. import java.net.MalformedURLException;
  14. import java.util.Vector;
  15.  
  16. /**
  17.  * A thread to read from a particular file.
  18.  */
  19. class DataLoaderThread extends Thread {
  20.   
  21.   private DataLoader loader;
  22.   private String filename;
  23.   private Literate reader;
  24.   private Appletlike requester;
  25.   private Applet app;
  26.  
  27.   private Vector retVector = new Vector ();
  28.  
  29.   DataLoaderThread (DataLoader loader, String name, String filename,
  30.             Literate reader, Appletlike requester, Applet app) {
  31.     super (name);
  32.     setPriority (Thread.NORM_PRIORITY -1);
  33.  
  34.     this.loader = loader;
  35.     this.filename = filename;
  36.     this.reader = reader;
  37.     this.requester = requester;
  38.     this.app = app;
  39.  
  40.   }
  41.  
  42.   DataLoaderThread (DataLoader loader, String name, String filename,
  43.             Appletlike requester, Applet app) {
  44.     super (name);
  45.     setPriority (Thread.NORM_PRIORITY + 1);
  46.  
  47.     this.loader = loader;
  48.     this.filename = filename;
  49.     this.requester = requester;
  50.     this.app = app;
  51.   }
  52.     
  53.  
  54.   public void run () {
  55.     DataInputStream inStream;
  56.     Object tempObject;
  57.     
  58.     try {
  59.       requester.initMessage ("Opening data file: " + filename);
  60.       inStream = new DataInputStream
  61.     (new BufferedInputStream (new URL(app.getDocumentBase (),
  62.                       filename).openStream ()));
  63.       if (reader != null)
  64.     tempObject = reader.read (inStream);
  65.       else
  66.     tempObject = inStream.readLine ();
  67.       while (tempObject != null) {
  68.     retVector.addElement (tempObject);
  69.     if (reader != null)
  70.       tempObject = reader.read (inStream);
  71.     else
  72.       tempObject = inStream.readLine ();
  73.     yield ();
  74.       }
  75.       requester.initMessage ("Finished reading: " + retVector.size() +
  76.                  " objects from " + filename);
  77.       inStream.close ();
  78.       requester.update (retVector);
  79.       loader.removeThread (this);
  80.     } catch (MalformedURLException e) {
  81.       System.err.println ("DataLoaderThread: ERROR -- bad URL, " + 
  82.               e.getMessage ());
  83.       requester.update ((Vector)null);
  84.       loader.removeThread (this);
  85.     } catch (IOException e) {
  86.       System.err.println ("DataLoaderThread: IO ERROR --, " + e.getMessage ());
  87.       requester.update ((Vector)null);
  88.       loader.removeThread (this);
  89.     }
  90.   }
  91.  
  92.   public String toString () {
  93.     return ("DataLoaderThread[" + filename + "]");
  94.   }
  95. }
  96.