RainRate.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package weerstation;
  2. import java.util.ArrayList;
  3. public class RainRate {
  4. //fields
  5. private Measurement laatsteMeting;
  6. private ArrayList<Measurement> laatste24Uur;
  7. private double currentRainRate;
  8. private double maxRainRate;
  9. private double minRainRate;
  10. private double avgRainRate;
  11. //constructor
  12. public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
  13. updateRecent(measurement1);
  14. update24Hour(measurement2);
  15. }
  16. //getters & setters
  17. public double getCurrentRainRate() {
  18. return currentRainRate;
  19. }
  20. public void setCurrentRainRate(double currentRainRate) {
  21. if(currentRainRate >= 0){
  22. this.currentRainRate = currentRainRate;
  23. }
  24. }
  25. public double getMaxRainRate() {
  26. return maxRainRate;
  27. }
  28. public void setMaxRainRate(double maxRainRate) {
  29. if(maxRainRate >= 0){
  30. this.maxRainRate = maxRainRate;
  31. }
  32. }
  33. public double getMinRainRate() {
  34. return minRainRate;
  35. }
  36. public void setMinRainRate(double minRainRate) {
  37. if(minRainRate >= 0){
  38. this.minRainRate = minRainRate;
  39. }
  40. }
  41. public double getAvgRainRate() {
  42. return avgRainRate;
  43. }
  44. public void setAvgRainRate(double avgRainRate) {
  45. this.avgRainRate = avgRainRate;
  46. }
  47. //Methods
  48. public void calculateMaxMinAvgRainRate(){
  49. int max = 0;
  50. int min = 0;
  51. float avg = 0;
  52. for(Measurement minut : laatste24Uur){
  53. if(minut.getRawRainRate() > max){
  54. max = minut.getRawRainRate();
  55. }
  56. if(minut.getRawRainRate() < min){
  57. min = minut.getRawRainRate();
  58. }
  59. avg += minut.getRawRainRate();
  60. }
  61. avg /= laatste24Uur.size();
  62. setAvgRainRate(Calculator.regenmeter((short)avg));
  63. setMaxRainRate(Calculator.regenmeter((short)max));
  64. setMinRainRate(Calculator.regenmeter((short)min));
  65. }
  66. public void updateRecent(Measurement measurement1){
  67. this.laatsteMeting = measurement1;
  68. setCurrentRainRate(laatsteMeting.getRainRate());
  69. }
  70. public void update24Hour(ArrayList<Measurement> measurement2){
  71. this.laatste24Uur = measurement2;
  72. calculateMaxMinAvgRainRate();
  73. }
  74. public void display(){
  75. GUIboard.writeUpperDigits(getCurrentRainRate());
  76. GUIboard.writeLeftDigits(getMaxRainRate());
  77. GUIboard.writeRightDigits(getMinRainRate());
  78. GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + avgRainRate, "");
  79. }
  80. }