Converted everything to work with polymorphism

Added "Grootheid" to act as a parent to all children classes, it allows
the main "Weerstation" to update them all better and with cleaner code.
This commit is contained in:
Kenneth van Ewijk
2014-10-11 17:46:31 +02:00
parent 94cab3188e
commit a0c37c1a23
13 changed files with 340 additions and 776 deletions
+29 -91
View File
@@ -1,94 +1,32 @@
package weerstation;
import java.util.ArrayList;
public class AvgWindspeed {
//fields
private double currentWindSpeed;
private double maxWindSpeed;
private double minWindSpeed;
private double avgWindSpeed;
//constructor
public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
//getters & setters
public double getCurrentWindSpeed() {
return currentWindSpeed;
}
public void setCurrentWindSpeed(double currentWindSpeed) {
if(currentWindSpeed >= 0){
this.currentWindSpeed = currentWindSpeed;
}
}
public double getMaxWindSpeed() {
return maxWindSpeed;
}
public void setMaxWindSpeed(double maxWindSpeed) {
if(maxWindSpeed >= 0){
this.maxWindSpeed = maxWindSpeed;
}
}
public double getMinWindSpeed() {
return minWindSpeed;
}
public void setMinWindSpeed(double minWindSpeed) {
if(minWindSpeed >= 0){
this.minWindSpeed = minWindSpeed;
}
}
public double getAvgWindSpeed() {
return avgWindSpeed;
}
public void setAvgWindSpeed(double avgWindSpeed) {
this.avgWindSpeed = Math.round(avgWindSpeed*100)/100;
}
//Methods
private void calculateMaxMinAvgWindSpeed(ArrayList<Measurement> laatste24uur){
int max = 0;
int min = 1000;
float avg = 0;
for(Measurement minut :laatste24uur){
if(minut.getRawAvgWindSpeed() > max){
max = minut.getRawAvgWindSpeed();
}
if(minut.getRawAvgWindSpeed() < min){
min = minut.getRawAvgWindSpeed();
}
avg += minut.getRawWindSpeed();
}
avg /= laatste24uur.size();
setAvgWindSpeed(Calculator.windSnelheid((short)avg));
setMaxWindSpeed(Calculator.windSnelheid((short)max));
setMinWindSpeed(Calculator.windSnelheid((short)min));
}
public void updateRecent(Measurement measurement1){
setCurrentWindSpeed(measurement1.getAvgWindSpeed());
}
public void update24Hour(ArrayList<Measurement> measurement2){
calculateMaxMinAvgWindSpeed(measurement2);
}
public void display(){
GUIboard.writeUpperDigits(getCurrentWindSpeed());
GUIboard.writeLeftDigits(getMaxWindSpeed());
GUIboard.writeRightDigits(getMinWindSpeed());
GUIboard.writePageToMatrix("Windsnelheid in m/s", "Gemiddelde: " + avgWindSpeed, "");
}
public class AvgWindspeed extends Grootheid{
//constructor
public AvgWindspeed(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
setCurrent(measurement1.getAvgWindSpeed());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getAvgWindSpeed());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Windsnelheid in m/s", "Gemiddelde: " + getAvg(), "");
}
}
-81
View File
@@ -1,81 +0,0 @@
import java.io.*;
import java.net.*;
import java.util.ArrayList;
public class BinnenTemperatuur
{
private Measurement laatsteMeting;
Measurement meting;
ArrayList<Measurement> laatste24uur; //ArrayList om de Temperatuur in op te slaan
double temp;
double max;
double min;
double avg;
public BinnenTemperatuur(Measurement measurement1, ArrayList<Measurement> measurement2)
{
updateRecent(measurement1);
update24Hour(measurement2);
}
public double binnenTemperatuur()
{
meting.getInsideTemp();
return meting.getInsideTemp();
}
public double getMaximale()
{
short maximale = 0; // Maximale is iets boven de 100
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawInsideTemp() > maximale)
{
maximale = laatste24uur.get(i).getRawInsideTemp();
}
}
return(Calculator.temperatuur((maximale)));
}
public double getMinimale()
{
short minimale = 1000; // Minimale is iets onder de 100
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawInsideTemp() < minimale)
{
minimale = laatste24uur.get(i).getRawInsideTemp(); // Defineert average
}
}
return(Calculator.temperatuur((minimale))); // Geeft minimale
}
public double getAverage()
{
float average = 0; // Average is nieuw
for(int i=0; i < laatste24uur.size();i++)
{
average += laatste24uur.get(i).getRawInsideTemp(); // Defineert average
}
average /= laatste24uur.size(); // Berekening average
return (Math.round((Calculator.temperatuur(((short)average)))*1000))/1000 ; // Geeft average terug
}
public void updateRecent(Measurement measurement1)
{
this.laatsteMeting = measurement1;
temp = laatsteMeting.getInsideTemp();
}
public void update24Hour(ArrayList<Measurement> measurement2)
{
this.laatste24uur = measurement2;
min = getMinimale();
max = getMaximale();
avg = getAverage();
}
public void display()
{
GUIboard.writeUpperDigits(temp);
GUIboard.writeLeftDigits(max);
GUIboard.writeRightDigits(min);
GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + avg, "");
}
}
-86
View File
@@ -1,86 +0,0 @@
import java.io.*;
import java.net.*;
import java.util.ArrayList;
/**
* Write a description of class OpdrachtDinges here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class BuitenTemperatuur
{
private Measurement laatsteMeting;
Measurement meting;
ArrayList<Measurement> laatste24uur; //ArrayList om de Temperatuur in op te slaan
double temp;
double max;
double min;
double avg;
public BuitenTemperatuur(Measurement measurement1, ArrayList<Measurement> measurement2)
{
updateRecent(measurement1);
update24Hour(measurement2);
}
public double buitenTemperatuur()
{
meting.getOutsideTemp();
return meting.getOutsideTemp();
}
public double getMaximale()
{
short maximale = 0; // Maximale is iets boven de 100
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawOutsideTemp() > maximale)
{
maximale = laatste24uur.get(i).getRawOutsideTemp();
}
}
return(Calculator.temperatuur((maximale)));
}
public double getMinimale()
{
short minimale = 1000; // Minimale is iets onder de 100
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawOutsideTemp() < minimale)
{
minimale = laatste24uur.get(i).getRawOutsideTemp(); // Defineert average
}
}
return(Calculator.temperatuur((minimale))); // Geeft minimale
}
public double getAverage()
{
float average = 0; // Average is nieuw
for(int i=0; i < laatste24uur.size();i++)
{
average += laatste24uur.get(i).getRawOutsideTemp(); // Defineert average
}
average /= laatste24uur.size(); // Berekening average
return (Math.round((Calculator.temperatuur(((short)average)))*1000))/1000 ; // Geeft average terug
}
public void updateRecent(Measurement measurement1)
{
this.laatsteMeting = measurement1;
temp = laatsteMeting.getOutsideTemp();
}
public void update24Hour(ArrayList<Measurement> measurement2)
{
this.laatste24uur = measurement2;
min = getMinimale();
max = getMaximale();
avg = getAverage();
}
public void display()
{
GUIboard.writeUpperDigits(temp);
GUIboard.writeLeftDigits(max);
GUIboard.writeRightDigits(min);
GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + avg, "");
}
}
+30 -89
View File
@@ -1,91 +1,32 @@
import java.util.ArrayList;
import java.net.*;
/**
* Write a description of class CloudHeight here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class CloudHeight
{
Measurement meting;
ArrayList<Measurement>laatste24uur;
double cloud;
private Measurement laatsteMeting;
double maxHeight;
double minHeight;
double avgHeight;
public CloudHeight(Measurement measurement1, ArrayList<Measurement>measurement2)
{
updateRecent(measurement1);
update24Hour(measurement2);
}
public double Height()
{
meting.getCloudHeight();
return meting.getCloudHeight();
}
public double maximaleHeight()
{
double max = 0;
for(int i = 0; i < laatste24uur.size(); i++)
{
if(laatste24uur.get(i).getCloudHeight() > max)
{
max = laatste24uur.get(i).getCloudHeight();
}
}
return(max);
}
public double minimaleHeight()
{
double min = 100000;
for(int i = 0; i < laatste24uur.size(); i++)
{
if(laatste24uur.get(i).getCloudHeight() < min)
{
min = laatste24uur.get(i).getCloudHeight();
}
}
System.out.println(min);
return(min);
}
public double AverageHeight()
{
float average =0;
for(int i = 0; i < laatste24uur.size(); i++)
{
average += laatste24uur.get(i).getCloudHeight();
}
average /=laatste24uur.size();
return(average);
}
public void updateRecent(Measurement measurement1){
this.laatsteMeting = measurement1;
cloud = laatsteMeting.getCloudHeight();
}
public void update24Hour(ArrayList<Measurement> measurement2){
this.laatste24uur = measurement2;
minHeight = minimaleHeight();
maxHeight = maximaleHeight();
avgHeight = AverageHeight();
}
public void display(){
GUIboard.writeUpperDigits(cloud);
GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + avgHeight,"");
//GUIboard.writePageToMatrix( "min","min: " + minHeight, "");
//GUIboard.writePageToMatrix( "max","max: " + maxHeight, "");
System.out.println(maxHeight);
System.out.println(minHeight);
}
}
public class CloudHeight extends Grootheid{
//constructor
public CloudHeight(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
setCurrent(measurement1.getCloudHeight());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getCloudHeight());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Wolkhoogte", "Gemiddelde: " + getAvg(), "");
}
}
+86
View File
@@ -0,0 +1,86 @@
import java.util.ArrayList;
public class Grootheid
{
// instance variables - replace the example below with your own
public double avg;
public double max;
public double min;
public double current;
//constructor
public Grootheid(){
avg = 0;
max = 0;
min = 0;
current = 0;
}
//getters & setters
public double getCurrent() {
return current;
}
public void setCurrent(double current) {
this.current = current;
}
public double getMax() {
return max;
}
public void setMax(double max) {
this.max= max;
}
public double getMin() {
return min;
}
public void setMin(double min) {
this.min = min;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
//Methods
public void calculateMaxMinAvg(ArrayList<Double> laatste24uur){
double tempMax = 0;
double tempAvg = 0;
double tempMin = laatste24uur.get(0);
for(double ms : laatste24uur){
if(ms > tempMax){
tempMax = ms;
}
if(ms < tempMin){
tempMin = ms;
}
tempAvg += ms;
}
tempAvg /= laatste24uur.size();
setMax(tempMax);
setMin(tempMin);
setAvg(tempAvg);
}
public void updateRecent(Measurement measurement1){
}
public void update24Hour(ArrayList<Measurement> measurement2){
}
public void display(){
GUIboard.writeUpperDigits(getCurrent());
GUIboard.writeLeftDigits(getMax());
GUIboard.writeRightDigits(getMin());
}
}
+26 -80
View File
@@ -1,86 +1,32 @@
import java.net.*;
import java.util.ArrayList;
/**
* Write a description of class OpdrachtDinges here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class InsideHum
{
Measurement meting;
ArrayList<Measurement> laatste24uur;
double vochtigheid;
private Measurement laatsteMeting;
double max;
double min;
double avg;
public class InsideHum extends Grootheid{
public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2)
{
updateRecent(measurement1);
update24Hour(measurement2);
}
public double binnenLuchtvochtigheid()
{
meting.getInsideHum();
return meting.getInsideHum();
}
public double berekenMaximale()
{
short maximale = 0;
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawInsideHum() > maximale)
{
maximale = laatste24uur.get(i).getRawInsideHum();
}
}
return(maximale);
}
public double berekenMinimale()
{
short minimale = 100;
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawInsideHum() < minimale)
{
minimale = laatste24uur.get(i).getRawInsideHum();
}
}
return(minimale);
}
public double berekenAverage()
{
int average = 0;
for(int i=0; i < laatste24uur.size(); i ++)
{
average += laatste24uur.get(i).getRawInsideHum();
}
average /= laatste24uur.size();
return(average);
//constructor
public InsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
this.laatsteMeting = measurement1;
vochtigheid = laatsteMeting.getInsideHum();
}
public void update24Hour(ArrayList<Measurement> measurement2){
this.laatste24uur = measurement2;
min = berekenMinimale();
max = berekenMaximale();
avg = berekenAverage();
}
public void display(){
GUIboard.writeUpperDigits(vochtigheid);
GUIboard.writeLeftDigits(max);
GUIboard.writeRightDigits(min);
GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + avg, "");
}
setCurrent(measurement1.getInsideHum());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getInsideHum());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Luchtv. Binnen", "Gemiddelde: " + getAvg(), "");
}
}
+32
View File
@@ -0,0 +1,32 @@
import java.util.ArrayList;
public class InsideTemp extends Grootheid{
//constructor
public InsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
setCurrent(measurement1.getInsideTemp());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getInsideTemp());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Binnentemperatuur", "Gemiddelde: " + getAvg(), "");
}
}
+26 -81
View File
@@ -1,87 +1,32 @@
package weerstation;
import java.net.*;
import java.util.ArrayList;
/**
* Write a description of class OpdrachtDinges here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class OutsideHum
{
Measurement meting; //connectie maken met Measurement klasse
ArrayList<Measurement> laatste24uur; //ArrayList om de luchtvochtigheid op te slaan
double vochtigheid;
private Measurement laatsteMeting;
double max;
double min;
double avg;
public class OutsideHum extends Grootheid{
public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2)
{
updateRecent(measurement1);
update24Hour(measurement2);
}
public double buitenLuchtvochtigheid()
{
meting.getOutsideHum(); //waardes van buitenluchtvochtigheid ophalen uit de meting klasse
return meting.getOutsideHum();
}
public double berekenMaximale()
{
short maximale = 0;
for(int i=0; i < laatste24uur.size();i++) //zolang i kleiner is dan de grootte van de ArrayList laatste24uur voert het de if-statement uit
{
if(laatste24uur.get(i).getRawOutsideHum() > maximale) //plek (i) in de ArrayList laatste24uur vraag je de waarde RawOutsideHum van op. Als die groter is dan huidige maximale, vervang je maximale door dat getal.
{
maximale = laatste24uur.get(i).getRawOutsideHum();
}
}
return(maximale);
}
public double berekenMinimale()
{
short minimale = 100;
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawOutsideHum() < minimale)
{
minimale = laatste24uur.get(i).getRawOutsideHum();
}
}
return(minimale);
}
public double berekenAverage()
{
short average = 0;
for(int i=0; i < laatste24uur.size(); i ++)
{
average += laatste24uur.get(i).getRawOutsideHum();
}
average /= laatste24uur.size();
return(average);
//constructor
public OutsideHum(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
this.laatsteMeting = measurement1;
vochtigheid = laatsteMeting.getOutsideHum();
}
public void update24Hour(ArrayList<Measurement> measurement2){
this.laatste24uur = measurement2;
min = berekenMinimale();
max = berekenMaximale();
avg = berekenAverage();
}
public void display(){
GUIboard.writeUpperDigits(vochtigheid);
GUIboard.writeLeftDigits(max);
GUIboard.writeRightDigits(min);
GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + avg, "");
}
setCurrent(measurement1.getOutsideHum());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getOutsideHum());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Luchtv. Buiten", "Gemiddelde: " + getAvg(), "");
}
}
+32
View File
@@ -0,0 +1,32 @@
import java.util.ArrayList;
public class OutsideTemp extends Grootheid{
//constructor
public OutsideTemp(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void updateRecent(Measurement measurement1){
setCurrent(measurement1.getOutsideTemp());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getOutsideTemp());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Buitentemperatuur", "Gemiddelde: " + getAvg(), "");
}
}
+13 -77
View File
@@ -1,96 +1,32 @@
package weerstation;
import java.util.ArrayList;
public class RainRate {
//fields
private Measurement laatsteMeting;
private ArrayList<Measurement> laatste24Uur;
private double currentRainRate;
private double maxRainRate;
private double minRainRate;
private double avgRainRate;
public class RainRate extends Grootheid{
//constructor
public RainRate(Measurement measurement1, ArrayList<Measurement> measurement2){
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());
setCurrent(measurement1.getRainRate());
}
public void update24Hour(ArrayList<Measurement> measurement2){
this.laatste24Uur = measurement2;
calculateMaxMinAvgRainRate();
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getRainRate());
}
calculateMaxMinAvg(list);
}
public void display(){
GUIboard.writeUpperDigits(getCurrentRainRate());
GUIboard.writeLeftDigits(getMaxRainRate());
GUIboard.writeRightDigits(getMinRainRate());
GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + avgRainRate, "");
super.display();
GUIboard.writePageToMatrix("Regenval in mm/h", "Gemiddelde: " + getAvg(), "");
}
}
+24 -82
View File
@@ -1,90 +1,32 @@
import java.io.*;
import java.net.*;
import java.util.ArrayList;
/**
* Write a description of class OpdrachtDinges here.
*
* @author (Tim van Lieshout)
* @version (a version number or a date)
*/
public class UVLevel
{
Weerstation weerstation;
Measurement meting;
ArrayList<Measurement> laatste24uur;
private Measurement laatsteMeting;
double max;
double min;
double avg;
double level;
public class UVLevel extends Grootheid{
public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2)
{
//constructor
public UVLevel(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public double buitenLuchtvochtigheid()
{
meting.getUVLevel();
return meting.getUVLevel();
}
public double berekenMaximale()
{
double maximale = 0;
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawUVLevel() > maximale)
{
maximale = laatste24uur.get(i).getUVLevel();
}
}
return(maximale);
}
public double berekenMinimale()
{
double minimale = 100;
for(int i=0; i < laatste24uur.size();i++)
{
if(laatste24uur.get(i).getRawOutsideHum() < minimale)
{
minimale = laatste24uur.get(i).getUVLevel();
}
}
return(minimale);
}
public double berekenAverage()
{
int average = 0;
for(int i=0; i < laatste24uur.size(); i ++)
{
average += laatste24uur.get(i).getUVLevel();
}
average /= laatste24uur.size();
return(average);
}
public void updateRecent(Measurement measurement1){
this.laatsteMeting = measurement1;
level = laatsteMeting.getOutsideHum();
}
public void update24Hour(ArrayList<Measurement> measurement2){
this.laatste24uur = measurement2;
min = berekenMinimale();
max = berekenMaximale();
avg = berekenAverage();
}
public void display(){
GUIboard.writeUpperDigits(level);
GUIboard.writeLeftDigits(max);
GUIboard.writeRightDigits(min);
GUIboard.writePageToMatrix("UVLevel Buiten", "Gemiddelde: " + avg, "");
}
setCurrent(measurement1.getUVLevel());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getUVLevel());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("UV Level", "Gemiddelde: " + getAvg(), "");
}
}
+14 -25
View File
@@ -1,4 +1,4 @@
package weerstation;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
@@ -23,13 +23,16 @@ public class Weerstation {
//All the different screen classes
final List<Object> lstScreens = new ArrayList<Object>();
final List<Grootheid> lstScreens = new ArrayList<Grootheid>();
lstScreens.add(new AvgWindspeed(meting1, meting2));
lstScreens.add(new RainRate(meting1, meting2));
lstScreens.add(new BinnenTemperatuur(meting1, meting2));
lstScreens.add(new BuitenTemperatuur(meting1, meting2));
lstScreens.add(new InsideHum(meting1, meting2));
lstScreens.add(new OutsideTemp(meting1, meting2));
lstScreens.add(new InsideTemp(meting1, meting2));
lstScreens.add(new OutsideHum(meting1, meting2));
lstScreens.add(new InsideHum(meting1, meting2));
lstScreens.add(new CloudHeight(meting1, meting2));
lstScreens.add(new WindChill(meting1, meting2));
lstScreens.add(new UVLevel(meting1, meting2));
//Screen switcher
@@ -41,14 +44,8 @@ public class Weerstation {
if(currentScreen == lstScreens.size()){
currentScreen = 0;
}
Object obj = lstScreens.get(currentScreen);
try {
obj.getClass().getMethod("display").invoke(obj);
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException
| SecurityException e) {
e.printStackTrace();
}
Grootheid obj = lstScreens.get(currentScreen);
obj.display();
}
}, 0, 5*1000);
@@ -57,12 +54,8 @@ public class Weerstation {
public void run() {
meting1 = weerstation1.getMostRecentMeasurement();
for(Object obj : lstScreens){
try {
obj.getClass().getMethod("updateRecent", Measurement.class).invoke(obj, meting1 );
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
for(Grootheid obj : lstScreens){
obj.updateRecent(meting1);
}
}
}, 60*1000, 60*1000);
@@ -72,12 +65,8 @@ public class Weerstation {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
meting2 = weerstation1.getAllMeasurementsLast24h();
for(Object obj : lstScreens){
try {
obj.getClass().getMethod("update24Hour", ArrayList.class).invoke(obj, meting2 );
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
e.printStackTrace();
}
for(Grootheid obj : lstScreens){
obj.update24Hour(meting2);
}
}
}, 10*60*1000, 10*60*1000);
+28 -84
View File
@@ -1,88 +1,32 @@
package weerstation;
import java.util.ArrayList;
public class WindChill {
//fields
private double currentWindChill;
private double maxWindChill;
private double minWindChill;
private double avgWindChill;
//constructor
public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
//getters & setters
public double getCurrentWindChill() {
return currentWindChill;
}
public class WindChill extends Grootheid{
//constructor
public WindChill(Measurement measurement1, ArrayList<Measurement> measurement2){
updateRecent(measurement1);
update24Hour(measurement2);
}
public void setCurrentWindChill(double currentWindChill) {
this.currentWindChill = currentWindChill;
}
public double getMaxWindChill() {
return maxWindChill;
}
public void setMaxWindChill(double maxWindChill) {
this.maxWindChill = maxWindChill;
}
public double getMinWindChill() {
return minWindChill;
}
public void setMinWindChill(double minWindChill) {
this.minWindChill = minWindChill;
}
public double getAvgWindChill() {
return avgWindChill;
}
public void setAvgWindChill(double avgWindChill) {
this.avgWindChill = Math.round(avgWindChill*100)/100;
}
//Methods
private void calculateMaxMinAvgWindChill(ArrayList<Measurement> laatste24uur){
double max = 0;
double min = 1000;
float avg = 0;
for(Measurement minut :laatste24uur){
if(minut.getWindChill() > max){
max = minut.getWindChill();
}
if(minut.getWindChill() < min){
min = minut.getWindChill();
}
avg += minut.getWindChill();
}
avg /= laatste24uur.size();
setAvgWindChill(avg);
setMaxWindChill(max);
setMinWindChill(min);
}
public void updateRecent(Measurement measurement1){
setCurrentWindChill(measurement1.getWindChill());
}
public void update24Hour(ArrayList<Measurement> measurement2){
calculateMaxMinAvgWindChill(measurement2);
}
public void display(){
GUIboard.writeUpperDigits(getCurrentWindChill());
GUIboard.writeLeftDigits(getMaxWindChill());
GUIboard.writeRightDigits(getMinWindChill());
GUIboard.writePageToMatrix("Gevoelstemp in C", "Gemiddelde: " + avgWindChill, "");
}
public void updateRecent(Measurement measurement1){
setCurrent(measurement1.getWindChill());
}
public void update24Hour(ArrayList<Measurement> measurement2){
ArrayList<Double> list = new ArrayList<Double>();
for(Measurement ms : measurement2)
{
list.add(ms.getWindChill());
}
calculateMaxMinAvg(list);
}
public void display(){
super.display();
GUIboard.writePageToMatrix("Gevoelstemperatuur", "Gemiddelde: " + getAvg(), "");
}
}