package therm;
import java.rmi.*;
import java.rmi.server.*;
import java.util.Observable;
import java.util.Vector;
public class ThermometerImpl extends UnicastRemoteObject
implements Thermometer,
java.io.Serializable
{
String title;
int minTemp, maxTemp, temp;
public ThermometerImpl() // Default constructor
throws RemoteException
{
// Export the remote object by listening for incoming calls to the obj
// on a port.
//UnicastRemoteObject.exportObject( (Remote)this );
super();
title = "Farhenheit Thermometer";
minTemp = 0; maxTemp = 100; temp = 50;
}
public ThermometerImpl(int temp) // Constructor
throws RemoteException
{
this();
this.temp = temp;
}
public ThermometerImpl(int minTemp, int maxTemp, int temp) // Constructor
throws RemoteException
{
this(temp);
this.minTemp = minTemp;
this.maxTemp = maxTemp;
}
public ThermometerImpl(String title, int minTemp, int maxTemp, int temp)
throws RemoteException
{
this(minTemp,maxTemp,temp);
this.title = title;
}
public void setTitle(String t)
{
System.out.println( "ThermometerImpl: setTitle()" );
title = t;
changed(); // Notify observers of change
System.out.println( "ThermometerImpl: setTitle() exiting" );
}
public String getTitle()
{return title;}
public void setTemp(int t)
{
if (0 <= t && t <= 100)
temp = t; // Set temperature
else
{
System.out.println(
"New temp out of range. Setting to default of 50F" );
temp = 50; // Set to default if t out of range
}
changed(); // Notify observers of change
}
public int getTemp()
{return temp;}
public int getMinTemp()
{return minTemp;}
public int getMaxTemp()
{return maxTemp;}
public void changed()
{
notifyObservers();
}
// The following code is modeled on that provided by
// java.util.Observable
private Vector observers = new Vector();
void notifyObservers()
{
System.out.println("Enter ThermometerImpl: notifyObservers()");
int size = observers.size();
for ( int i = 0; i < size; i++ )
{
try{
((ThermObserver)(observers.elementAt(i))).update( this,null );
}
catch ( RemoteException e )
{}
}
}
public void addObserver( Object o ) throws java.rmi.RemoteException
{
System.out.println("Enter ThermometerImpl: addObserver(), o = " +
o );
if ( !observers.contains( o ) )
observers.addElement( o );
}