AvgWindspeed.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package weerstation;
  2. import java.util.ArrayList;
  3. public class AvgWindspeed {
  4. //fields
  5. private Measurement laatsteMeting;
  6. private ArrayList<Measurement> laatste24Uur;
  7. private Calculator calculator;
  8. private double currentWindSpeed;
  9. private double maxWindSpeed;
  10. private double minWindSpeed;
  11. private double avgWindSpeed;
  12. //constructor
  13. public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
  14. calculator = new Calculator();
  15. updateRecent(measurement1);
  16. update24Hour(measurement2);
  17. }
  18. //getters & setters
  19. public double getCurrentWindSpeed() {
  20. return currentWindSpeed;
  21. }
  22. public void setCurrentWindSpeed(double currentWindSpeed) {
  23. if(currentWindSpeed >= 0){
  24. this.currentWindSpeed = currentWindSpeed;
  25. }
  26. }
  27. public double getMaxWindSpeed() {
  28. return maxWindSpeed;
  29. }
  30. public void setMaxWindSpeed(double maxWindSpeed) {
  31. if(maxWindSpeed >= 0){
  32. this.maxWindSpeed = maxWindSpeed;
  33. }
  34. }
  35. public double getMinWindSpeed() {
  36. return minWindSpeed;
  37. }
  38. public void setMinWindSpeed(double minWindSpeed) {
  39. if(minWindSpeed >= 0){
  40. this.minWindSpeed = minWindSpeed;
  41. }
  42. }
  43. public double getAvgWindSpeed() {
  44. return avgWindSpeed;
  45. }
  46. public void setAvgWindSpeed(double avgWindSpeed) {
  47. this.avgWindSpeed = avgWindSpeed;
  48. }
  49. //Methods
  50. private void calculateMaxMinAvgWindSpeed(){
  51. int max = 0;
  52. int min = 1000;
  53. float avg = 0;
  54. for(Measurement minut :laatste24Uur){
  55. if(minut.getRawAvgWindSpeed() > max){
  56. max = minut.getRawAvgWindSpeed();
  57. }
  58. if(minut.getRawAvgWindSpeed() < min){
  59. min = minut.getRawAvgWindSpeed();
  60. }
  61. avg += minut.getRawWindSpeed();
  62. }
  63. avg /= laatste24Uur.size();
  64. setAvgWindSpeed(calculator.windSnelheid((short)avg));
  65. setMaxWindSpeed(calculator.windSnelheid((short)max));
  66. setMinWindSpeed(calculator.windSnelheid((short)min));
  67. }
  68. public void updateRecent(Measurement measurement1){
  69. this.laatsteMeting = measurement1;
  70. setCurrentWindSpeed(laatsteMeting.getAvgWindSpeed());
  71. }
  72. public void update24Hour(ArrayList<Measurement> measurement2){
  73. this.laatste24Uur = measurement2;
  74. calculateMaxMinAvgWindSpeed();
  75. }
  76. public void display(){
  77. GUIboard.writeUpperDigits(getCurrentWindSpeed());
  78. GUIboard.writeLeftDigits(getMaxWindSpeed());
  79. GUIboard.writeRightDigits(getMinWindSpeed());
  80. }
  81. }