next up previous contents index
Next: Serialisierung Up: Programmbeispiele Previous: Gebundene Eigenschaften:

Eingeschraenkte Eigenschaften: Thermometer.java, Constrainer.java, Terra.java

  Thermometer.java
 
import java.beans.*;

public class Thermometer implements PropertyChangeListener{
    // Einschraenkung der Werte
    protected double minTemp = 18.0;
    protected double maxTemp = 30.0;
    final static double MIN = 10;
    final static double MAX = 35;
    
    // die aktuelle Temperatur
    protected Temperatur aktTemp;
    protected VetoableChangeSupport constraintHandler;
    
    public Thermometer(){
        this(25.0);
    }
    
    public Thermometer(double temperatur){
        aktTemp = new Temperatur(temperatur);
        constraintHandler = new VetoableChangeSupport(this);
    }
    
    // implementierung des PropertyChangeListener interfaces
    public void propertyChange(PropertyChangeEvent evt){
        // hier muesste noch implementiert werden
    }
    // implementierung des VetoableChangesupport
    public void addVetoableChangeListener(VetoableChangeListener l){
        // weiterreichen an den Handler
        constraintHandler.addVetoableChangeListener(l);
    }
    public void removeVetoableChangeListener(VetoableChangeListener l){
        // weiterreichen an den Handler
        constraintHandler.removeVetoableChangeListener(l);
    }
    // Zugriffsmethoden für die min und max Werte
    public double getMinimumTemperatur(){
        return minTemp;
    }
    
    public double getMaximumTemperatur(){
        return maxTemp;
    }
    public void setMinimumTemperatur(double value)
                                     throws PropertyVetoException{
        // intern einmal testen, ob der neue Wert
        // ok ist und ggf. veto ausloesen
        if (value>MAX || value<MIN ){ 
            throw new PropertyVetoException("Wert liegt ausserhalb des
            zulaessigen Bereiches(10-35)",
            new PropertyChangeEvent(this,"MinimumTemperature",
            new Double(minTemp),
            new Double(value)));
        }
        // ansonsten weiterreichen an Haendler (extern)
        constraintHandler.fireVetoableChange("MinimumTemperatur",
                         new Double(minTemp), new Double(value));
        // wenn keine Exception fliegt geht die Aenderung in Ordnung
        minTemp = value;
    }
    public void setMaximumTemperatur(double value) throws
                                     PropertyVetoException{
        // intern testen, ob der neue Wert ok ist und ggf. veto ausloesen
        if (value>MAX || value<MIN ){
            throw new PropertyVetoException("Wert liegt ausserhalb des
            zulaessigen Bereiches(10-35)", 
            new PropertyChangeEvent(this,"MinimumTemperature",
            new Double(minTemp),
            new Double(value)));
        }
        // ansonsten weiterreichen an Haendler
        constraintHandler.fireVetoableChange("MaximumTemperatur",
        new Double(maxTemp), new Double(value));
        // wenn keine Exception fliegt geht die Aenderung in Ordnung
        maxTemp = value;
    }
}

Constrainer.java

 
import java.beans.*;

public class Constrainer implements VetoableChangeListener{
    // implementieren des interface: VetoableChangeListener
    public void vetoableChange(PropertyChangeEvent evt)
                           throws PropertyVetoException{
    // die Limitierung wird getestet, liegt der Wert 
    // auch wirklich im Bereich (11 bis 33)
        double value = ((Double)evt.getNewValue()).doubleValue();
        if (value>33 || value<11){
           throw new PropertyVetoException("VETO von Constrainer: Wert "
                                               +value+" abgelehnt",evt);
        }else{
        System.out.println("Wert: "+value+" von Constrainer angenommen");
        }
    }
}


next up previous contents index
Next: Serialisierung Up: Programmbeispiele Previous: Gebundene Eigenschaften:

mail@axel-faltin.de