home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jhelp.z / Stock.java < prev    next >
Text File  |  1997-07-30  |  3KB  |  82 lines

  1. /*
  2.  * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
  5.  * modify and redistribute this software in source and binary code form,
  6.  * provided that i) this copyright notice and license appear on all copies of
  7.  * the software; and ii) Licensee does not utilize the software in a manner
  8.  * which is disparaging to Sun.
  9.  *
  10.  * This software is provided "AS IS," without a warranty of any kind. ALL
  11.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
  12.  * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  13.  * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
  14.  * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
  15.  * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
  16.  * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
  17.  * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
  18.  * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
  19.  * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
  20.  * POSSIBILITY OF SUCH DAMAGES.
  21.  *
  22.  * This software is not designed or intended for use in on-line control of
  23.  * aircraft, air traffic, aircraft navigation or aircraft communications; or in
  24.  * the design, construction, operation or maintenance of any nuclear
  25.  * facility. Licensee represents and warrants that it will not use or
  26.  * redistribute the Software for such purposes.
  27.  */
  28.  
  29. package examples.stock;
  30.  
  31. import java.util.Random;
  32.  
  33. /**
  34.  * A Stock object is used to encapsulate stock update information
  35.  * that is sent in an update notification. Note that the class
  36.  * implements the java.io.Serializable interface in order to be
  37.  * passed as an argument or return value in RMI.
  38.  */
  39. public class Stock implements java.io.Serializable {
  40.     String symbol;
  41.     float current;
  42.  
  43.     private static Random random = new Random();
  44.     private final static float MAX_VALUE = 67;
  45.  
  46.     /**
  47.      * Constructs a stock with the given name with a initial random
  48.      * stock price.
  49.      */
  50.     public Stock(String name) 
  51.     {
  52.     symbol = name;
  53.     if (symbol.equals("Sun")) {
  54.         current = 30.0f;
  55.     } else {
  56.         // generate random stock price between 20 and 60
  57.         current = (float)(Math.abs(random.nextInt()) % 40 + 20);
  58.     }
  59.     }
  60.  
  61.     /**
  62.      * Update the stock price (generates a random change).
  63.      */
  64.     public float update() 
  65.     {
  66.     float change = ((float)(random.nextGaussian() * 1.0));
  67.     if (symbol.equals("Sun") && current < MAX_VALUE - 5)
  68.         change = Math.abs(change);        // what did you expect?
  69.  
  70.     float newCurrent = current + change;
  71.  
  72.     // don't allow stock price to step outside range
  73.     if (newCurrent < 0 || newCurrent > MAX_VALUE)
  74.         change = 0;
  75.  
  76.     current += change;
  77.     
  78.     return change;
  79.     }
  80. }
  81.  
  82.