package cap16.borsa;

import java.net.*;
import java.rmi.*;

public class Generatore extends Thread
{ private static double MAX_DELTA = 10.0;
  private Borsa borsa;
  private long periodo;
  private String titolo;
  public Generatore(Borsa b, String t)
  { this(b, t, 1000L);
  }
  public Generatore(Borsa b, String t, long p)
  { borsa = b;
    periodo = p;
    titolo = t;
    start();
  }
  public void run()
  { try
    { while (true)
      { Thread.sleep(periodo);
        double delta =
          ((2 * Math.random()) - 1.0) * MAX_DELTA;
        double vecchioVal = borsa.getValore(titolo);
        double nuovoVal =
          (((vecchioVal + delta) >= 0.0)
          ? (vecchioVal + delta) : 0.0);
        borsa.setValore(titolo, nuovoVal);
      }
    }
    catch (InterruptedException ie) {}
    catch (RemoteException re)
    { System.err.println("Errore di rete");
    }
    catch (BorsaException be)
    { System.err.println("Titolo non presente");
    }
  }
  public static void main(String[] args)
  { if (args.length != 2)
    { System.out.println(
        "Uso: java cap16.borsa.Generatore urlserv titolo");
      System.exit(1);
    }
    try
    { Borsa b = (Borsa) Naming.lookup(args[0]);
      Generatore g = new Generatore(b, args[1]);
    }
    catch (RemoteException re)
    { System.err.println("Errore di rete");
    }
    catch (MalformedURLException mue)
    { System.err.println("URL errato");
    }
    catch (NotBoundException nbe)
    { System.err.println("Servizio non registrato");
    }
  }
}
