Added a lot of comments

This commit is contained in:
Kenneth van Ewijk
2014-10-23 11:07:39 +02:00
parent 792dfc6d57
commit 8d790ff754
10 changed files with 305 additions and 41 deletions
+13 -2
View File
@@ -1,8 +1,14 @@
package weerstation1;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
/**
* Kan alle waarden uit de database omrekenen naar de Nederlands gangbare eenheden
*
* @author Projectgroep B5
*/
public class Calculator {
// Luchtdruk in hPa
@@ -146,6 +152,8 @@ public class Calculator {
public static String sunSet(short mval){
return sun(mval);
}
//Sunrise en Sunset tijden
private static String sun(short sunRaw){
String tijd = "";
for(int i = 0; i <= 3; i++){
@@ -158,6 +166,7 @@ public class Calculator {
return tijd;
}
//Zonsterkte
public static double solarRad(short mval){
double zonSterkte = mval;
return zonSterkte;
@@ -175,7 +184,7 @@ public class Calculator {
}
//Heatindex in celcius
//Tom met Malek
//Tom en Malek
public static double heatIndex(double RH, double T)
{
double HI = -42.379 + 2.04901523*T + 10.14333127*RH - .22475541*T*RH - .00683783*T*T - .05481717*RH*RH + .00122874*T*T*RH + .00085282*T*RH*RH - .00000199*T*T*RH*RH;
@@ -192,6 +201,8 @@ public class Calculator {
return dauwpunt;
}
//Wolkhoogte in meters
//Malek
public static double cloudHeight(double temp, short luchtVochtigheid ){
double wolkhoogte = 125 * (temp-dewPoint(temp, luchtVochtigheid));
return wolkhoogte;
+71 -5
View File
@@ -1,15 +1,27 @@
package weerstation1;
import java.util.ArrayList;
/**
* Biedt een makkelijke interface om data weer te geven op het GUIBoard
*
* @author Kenneth van Ewijk
* @author Janco Kock
*/
public class GUIboard {
/**
* Initaliseert de verbinding met het GUIBoard
*/
public static void init()
{
IO.init();
}
/**
* Schrijft een getal naar de bovenste digits van het GUIBoard
*
* @param number Het getal dat je wilt weergeven
*/
public static void writeUpperDigits(double number){
clearTop();
@@ -29,6 +41,11 @@ public class GUIboard {
writeDigits(number, 0x10, 0x18);
}
/**
* Schrijft een getal naar de linker digits van het GUIBoard
*
* @param number Het getal dat je wilt weergeven
*/
public static void writeLeftDigits(double number){
clearLeft();
@@ -48,6 +65,11 @@ public class GUIboard {
writeDigits(number, 0x20, 0x24);
}
/**
* Schrijft een getal naar de rechter digits van het GUIBoard
*
* @param number Het getal dat je wilt weergeven
*/
public static void writeRightDigits(double number){
clearRight();
@@ -67,6 +89,13 @@ public class GUIboard {
writeDigits(number, 0x30, 0x34);
}
/**
* Private methode die het schrijven van een getal naar een digit uitvoert
*
* @param number Het getal dat je wilt weergeven
* @param firstSegment De digit waar begonnen moet worden
* @param lastSegment De digit waar geëindigd moet worden
*/
private static void writeDigits(double number, int firstSegment, int lastSegment){
number = Math.round(number * 100.0) / 100.0;
//Segments
@@ -113,7 +142,13 @@ public class GUIboard {
}
}
/**
* Schrijft een standaard pagina naar het matrix scherm van het GUIBoard
*
* @param regel1 De tekst die je op de eerste regel wilt weergeven. Normaliter de naam
* @param regel2 De tekst die je op de tweede regel wilt weergeven.
* @param regel3 De tekst die je op de derde regel wilt weergeven. Wordt standaard gevolgd door de navigatie.
*/
public static boolean writePageToMatrix(String regel1, String regel2, String regel3)
{
clearBottom();
@@ -168,6 +203,13 @@ public class GUIboard {
return true;
}
/**
* Schrijft een grafiek naar het matrix display van het GUIBoard
*
* @param msList ArrayList met alle meetwaarden die je wilt weergeven in grafiekvorm
* @param min De minimale waarden die bij msList hoort
* @param max De maximale waarden die bij msList hoort
*/
public static void writeGraphToMatrix(ArrayList<Double> msList, double min, double max)
{
clearBottom();
@@ -191,7 +233,12 @@ public class GUIboard {
}
}
//Private functions
/**
* Berekent of er assen moeten worden getekend. Zo ja, berekent ook waar en tekent ze vervolgens.
*
* @param min De minimale waarden die zal worden weergegeven
* @param max De maximale waarden die zal worden weergegeven
*/
public static void createAxis(double min, double max)
{
int x,y;
@@ -215,6 +262,14 @@ public class GUIboard {
}
}
/**
* Probeert de data te controleren en aan te passen om een vloeierende grafiek te kunnen tekenen
*
* @param data2 ArrayList met alle meetwaarden die je wilt weergeven in grafiekvorm
* @param margin Waarde die aangeeft wanneer een waarde teveel afwijkt van het berekende gemiddelde
*
* @return ArrayList met genormaliseerde data
*/
private static ArrayList<Double> normalizeData(ArrayList<Double> data2 , double margin){
ArrayList<Double> data = new ArrayList<Double>();
@@ -265,7 +320,9 @@ public class GUIboard {
return data;
}
/**
* Wis de bovenste digits
*/
public static void clearTop()
{
IO.writeShort(0x10, 0x100 | 0x0);
@@ -275,6 +332,9 @@ public class GUIboard {
IO.writeShort(0x18, 0x100 | 0x0);
}
/**
* Wis de linker digits
*/
public static void clearLeft()
{
IO.writeShort(0x24, 0x100 | 0x0);
@@ -282,6 +342,9 @@ public class GUIboard {
IO.writeShort(0x20, 0x100 | 0x0);
}
/**
* Wis de rechter digits
*/
public static void clearRight()
{
IO.writeShort(0x34, 0x100 | 0x0);
@@ -289,6 +352,9 @@ public class GUIboard {
IO.writeShort(0x30, 0x100 | 0x0);
}
/**
* Wis het matrix display
*/
public static void clearBottom()
{
IO.writeShort(0x40, 0xFE);
+7 -1
View File
@@ -1,6 +1,12 @@
package weerstation1;
import java.util.ArrayList;
/**
* Dient als Parent voor alle grootheden en zorgt voor een constante interface
*
* @author Kenneth van Ewijk
* @author Janco Kock
*/
public class Grootheid
{
// instance variables - replace the example below with your own
+9 -14
View File
@@ -1,20 +1,15 @@
package weerstation1;
//
// Port IO emulator class. All read/writes are send over TCP/IP to the host
// using a dedicated protocol on port 81.
// Use IO.init(host, port) to modify behaviour
// by Wim Verhoef
// Avans Hogeschool 's-Hertogenbosch
//
// @author Wim Verhoef
// @version 1.1, December 6 2004
//
import java.io.*;
import java.net.*;
public class IO {
/**
* Een interface om te kunnen praten met het GUIboard
*
* @author Wim Verhoef
* @version 1.1
*/
public class IO
{
public static String host = "localhost";
public static int port = 81;
@@ -84,7 +79,7 @@ public class IO {
}
}
//============================= below are the support routines =====================
//============================= below are the support routines =====================
private static Socket client = null;
private static DataOutputStream output = null;
+9 -2
View File
@@ -1,7 +1,14 @@
package weerstation1;
/**
* De main die gebruikt wordt om makkelijk een instantie te maken van een weerstation
*/
public class Main {
/**
* Maakt een nieuw weerstation aan
*
* @param args Wordt niet gebruikt
*/
public static void main(String[] args){
Weerstation weerstation = new Weerstation();
}
+25 -8
View File
@@ -1,8 +1,13 @@
package weerstation1;
import java.sql.Timestamp;
import java.math.BigDecimal;
/**
* Klasse die per instantie alle meetgegevens van één meetpunt opslaat.
*
* @author Kenneth van Ewijk
*/
public class Measurement
{
@@ -123,6 +128,11 @@ public class Measurement
//wolkHoogte
public double getCloudHeight () { return round(Calculator.cloudHeight(outsideTemp, outsideHum),1); };
/**
* Zet alle data in een Measurement om naar een string
*
* @return Alle waarden in een string
*/
public String toString()
{
String s = "stationId = " + stationId
@@ -145,12 +155,19 @@ public class Measurement
return s;
}
//afronder
public double round(double unrounded, int precision)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, BigDecimal.ROUND_HALF_UP);
return rounded.doubleValue();
}
/**
* Rond een waarde af op een aangegeven aantal getallen achter de komma
*
* @param unrounded Het getal dat afgerond moet worden
* @param precision Het aantal getallen dat achter de komma moet blijven staan
*
* @return Het afgeronde getal
*/
private double round(double unrounded, int precision)
{
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, BigDecimal.ROUND_HALF_UP);
return rounded.doubleValue();
}
}
+77 -3
View File
@@ -1,14 +1,29 @@
package weerstation1;
import java.util.GregorianCalendar;
import java.util.Calendar;
/**
* Klasse die een makkelijke manier biedt om twee calender datums op te slaan die samen een periode vormen.
*
* @author Daniël Compagner
* @author Tim van Lieshout
* @author Malek Sediqi
*
* @version 2.0
*/
public class Periode
{
private GregorianCalendar beginPeriode;
private GregorianCalendar eindePeriode;
private String name;
/**
* Lege constructor. Alleen een naam voor de periode wordt gegeven.
*
* @param name Naam van de periode
*/
public Periode(String name)
{
beginPeriode = new GregorianCalendar();
@@ -16,6 +31,18 @@ public class Periode
this.name = name;
}
/**
* Volledige constructor. Naast de naam wordt ook al de begin en einddatum van de periode gegeven.
* De datums worden meegegeven door los het jaar, de maand en de datum mee te geven.
*
* @param jaar Jaar van begindatum
* @param maand Maand van begindatum
* @param dag Dag van begindatum
* @param eindjaar Jaar van einddatum
* @param eindmaand Maand van einddatum
* @param einddag Dag van einddatum
* @param name Naam van de periode
*/
public Periode(int jaar, int maand, int dag, int eindjaar, int eindmaand, int einddag, String name)
{
beginPeriode = new GregorianCalendar();
@@ -25,47 +52,94 @@ public class Periode
this.name = name;
}
/**
* Volledige constructor. Naast de naam wordt ook al de begin en einddatum van de periode gegeven.
* De datums worden meegegeven door een calender element mee te geven.
*
* @param cal1 Calender met begindatum
* @param cal2 Calender met einddatum
* @param name Naam van de periode
*/
public Periode(Calendar cal1, Calendar cal2, String name){
beginPeriode = new GregorianCalendar();
beginPeriode = new GregorianCalendar();
eindePeriode = new GregorianCalendar();
setBeginPeriode(cal2.get(Calendar.YEAR), cal2.get(Calendar.MONTH), cal2.get(Calendar.DATE));
setEindePeriode(cal1.get(Calendar.YEAR), cal1.get(Calendar.MONTH), cal1.get(Calendar.DATE));
this.name = name;
}
/**
* Geeft een calender terug die de datum van het begin van de periode bevat
*
* @return Calender met datum beginperiode
*/
public GregorianCalendar getBeginPeriode()
{
return beginPeriode;
}
/**
* Geeft een calender terug die de datum van het einde van de periode bevat
*
* @return Calender met datum eindeperiode
*/
public GregorianCalendar getEindePeriode()
{
return eindePeriode;
}
/**
* Stel los de begindatum in
*
* @param jaar Jaar van datum
* @param maand Maand van datum
* @param dag Dag van datum
*/
public void setBeginPeriode(int jaar, int maand, int dag)
{
beginPeriode.set(jaar, maand, dag);
}
/**
* Stel los de einddatum in
*
* @param jaar Jaar van datum
* @param maand Maand van datum
* @param dag Dag van datum
*/
public void setEindePeriode(int jaar, int maand, int dag)
{
eindePeriode.set(jaar, maand, dag);
}
/**
* Stel los de naam in
*
* @param name Naam van de periode
*/
public void setName(String name)
{
this.name = name;
}
/**
* Geeft de naam van de periode terug
*
* @return String met naam van de periode
*/
public String getName()
{
return name;
}
/**
* Zet de data die in de periode is opgeslagen om naar een string.
*
* @return String met de datums die in de periode zijn opgeslagen
*/
public String toString()
{
String returnString = beginPeriode.get(Calendar.DATE) + "-" + (beginPeriode.get(Calendar.MONTH)+1) + "-" + beginPeriode.get(Calendar.YEAR);
String returnString = beginPeriode.get(Calendar.DATE) + "-" + (beginPeriode.get(Calendar.MONTH)+1) + "-" + beginPeriode.get(Calendar.YEAR);
returnString += "|";
returnString += eindePeriode.get(Calendar.DATE) + "-" + (eindePeriode.get(Calendar.MONTH)+1) + "-" + eindePeriode.get(Calendar.YEAR);
return returnString;
+61
View File
@@ -5,8 +5,20 @@ import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
/**
* Berekent allerlei statistische waarden voor de gegeven data
*
* @author Projectgroep B5
*/
public class StatisticsCalculator {
/**
* Berekent de maximale waarde
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden maximale waarde
*/
public static double max(ArrayList<Double> array)
{
double max = 0;
@@ -20,6 +32,13 @@ public class StatisticsCalculator {
return max;
}
/**
* Berekent de minimale waarde
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden minimale waarde
*/
public static double min(ArrayList<Double> array)
{
double min = array.get(0);
@@ -33,6 +52,13 @@ public class StatisticsCalculator {
return min;
}
/**
* Berekent de gemiddelde waarde
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden gemiddelde waarde
*/
public static double avg(ArrayList<Double> array)
{
double avg = 0;
@@ -44,6 +70,13 @@ public class StatisticsCalculator {
return avg;
}
/**
* Berekent de mediaan
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden mediaan
*/
public static double median(ArrayList<Double> array2){
ArrayList<Double> array = new ArrayList<Double>();
@@ -65,6 +98,13 @@ public class StatisticsCalculator {
return median;
}
/**
* Berekent de modus
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden modus
*/
public static double modus(ArrayList<Double> array){
Map<Double,Integer> map = new HashMap<Double,Integer>();
for(double number : array)
@@ -89,6 +129,13 @@ public class StatisticsCalculator {
return maxKey;
}
/**
* Berekent de afwijking
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden afwijking
*/
public static double afwijking(ArrayList<Double> array){
double mediaan = StatisticsCalculator.median(array);
double afwijking = 0;
@@ -226,6 +273,13 @@ public class StatisticsCalculator {
return index;
}
/**
* Berekent de totale regenval
*
* @param array Een ArrayList met alle waarden
*
* @return De gevonden totale regenval
*/
public static short maximaleRegenPeriode(ArrayList<Double> array)
{
short regen = 0;
@@ -254,6 +308,13 @@ public class StatisticsCalculator {
return totaleRegen;
}
/**
* Berekent de langste periode waarin het boven 25 graden celcius is geweest
*
* @param array Een ArrayList met alle waarden
*
* @return De posities van de begin en eindtijd in de array van de periode
*/
public static int[] langsteZomersePeriode(ArrayList<Double> array)
{
+26 -5
View File
@@ -1,6 +1,3 @@
import java.util.ArrayList;
import java.util.Calendar;
@@ -9,7 +6,11 @@ import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
* De main klasse die het hele programma aanstuurt
*
* @author Projectgroep B5
*/
public class Weerstation {
WeerstationConnector weerstation1;
@@ -27,6 +28,9 @@ public class Weerstation {
boolean startupState;
boolean load;
/**
* Constructor voor weerstation
*/
public Weerstation(){
now = Calendar.getInstance();
calPeriod = Calendar.getInstance();
@@ -239,6 +243,11 @@ public class Weerstation {
}
/**
* Start de animatie die speelt tijdens het opstarten en laden van het weerstation
*
* @param starter De timer die de animatie laat lopen
*/
public void startStartupAnimatie()
{
starter.scheduleAtFixedRate(new TimerTask() {
@@ -299,12 +308,18 @@ public class Weerstation {
}, 0, (128 + 1)*8);
}
/**
* Stopt de animatie die speelt tijdens het opstarten en laden van het weerstation
*/
public void stopStartupAnimatie()
{
starter.cancel();
}
public void startLoadAnimatie()
/**
* Start de animatie die speelt tijdens het laden op de achtergrond van het weerstation
*/
public void startLoadAnimatie()
{
animator.scheduleAtFixedRate(new TimerTask() {
public void run() {
@@ -325,11 +340,17 @@ public class Weerstation {
}, 0, (128 + 1)*8);
}
/**
* Stopt de animatie die speelt tijdens het laden op de achtergrond van het weerstation
*/
public void stopLoadAnimatie()
{
animator.cancel();
}
/**
* Controleert de binnenkomende data op corrupte data en verwijderd deze
*/
public void checkData(){
Iterator<Measurement> it = meting2.iterator();
while( it.hasNext() )
+7 -1
View File
@@ -1,4 +1,4 @@
package weerstation1;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -10,6 +10,12 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Connect met de database
*
* @author Diederich Kroeske
* @version 2
*/
public class WeerstationConnector
{