98 lines
2.6 KiB
Java
98 lines
2.6 KiB
Java
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());
|
|
}
|
|
|
|
}
|