Преглед на файлове

Added class for RainRate

Kenneth van Ewijk преди 11 години
родител
ревизия
8a3708e012
променени са 1 файла, в които са добавени 97 реда и са изтрити 0 реда
  1. 97 0
      RainRate.java

+ 97 - 0
RainRate.java

@@ -0,0 +1,97 @@
+import java.util.ArrayList;
+
+public class RainRate {
+    
+    //fields
+    private Measurement laatsteMeting;
+    private ArrayList<Measurement> laatste24Uur;
+    private Calculator calculator;
+    private double currentRainRate;
+    private double maxRainRate;
+    private double minRainRate;
+    private double avgRainRate;
+    
+    //constructor
+    public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
+        calculator = new Calculator();
+        updateRecent(measurement1);
+        update24Hour(measurement2);
+        
+    }
+    
+    //getters & setters
+    public double getCurrentRainRate() {
+        return currentRainRate;
+    }
+
+    public void setCurrentRainRate(double currentRainRate) {
+        if(currentRainRate >= 0){
+            this.currentRainRate = currentRainRate;
+        }
+    }
+
+    public double getMaxRainRate() {
+        return maxRainRate;
+    }
+
+    public void setMaxRainRate(double maxRainRate) {
+        if(maxRainRate >= 0){
+            this.maxRainRate = maxRainRate;
+        }
+    }
+
+    public double getMinRainRate() {
+        return minRainRate;
+    }
+
+    public void setMinRainRate(double minRainRate) {
+        if(minRainRate >= 0){
+            this.minRainRate = minRainRate;
+        }
+    }
+
+    public double getAvgRainRate() {
+        return avgRainRate;
+    }
+
+    public void setAvgRainRate(double avgRainRate) {
+        this.avgRainRate = avgRainRate;
+    }
+    
+    //Methods
+    public void calculateMaxMinAvgRainRate(){
+        int max = 0;
+        int min = 0;
+        float avg = 0;
+        for(Measurement minut : laatste24Uur){
+            if(minut.getRawRainRate() > max){
+                max = minut.getRawRainRate();
+            }
+            if(minut.getRawRainRate() <  min){
+                min = minut.getRawRainRate();
+            }
+            avg += minut.getRawRainRate();
+        }
+        avg /= laatste24Uur.size();
+        
+        setAvgRainRate(calculator.regenmeter((short)avg));
+        setMaxRainRate(calculator.regenmeter((short)max));
+        setMinRainRate(calculator.regenmeter((short)min));
+    }
+    
+    public void updateRecent(Measurement measurement1){
+        this.laatsteMeting = measurement1;
+        setCurrentRainRate(laatsteMeting.getRainRate());
+    }
+    public void update24Hour(ArrayList<Measurement> measurement2){
+        this.laatste24Uur = measurement2;
+        calculateMaxMinAvgRainRate();
+    }
+    
+    public void display(){
+        GUIboard.writeUpperDigits(getCurrentRainRate());
+        GUIboard.writeLeftDigits(getMaxRainRate());
+        GUIboard.writeRightDigits(getMinRainRate());
+    }
+    
+}