From 8d790ff754817458649ed86906d1eb6d72ebc361 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Thu, 23 Oct 2014 11:07:39 +0200 Subject: [PATCH] Added a lot of comments --- Calculator.java | 15 +++++++- GUIboard.java | 76 ++++++++++++++++++++++++++++++++++--- Grootheid.java | 8 +++- IO.java | 23 +++++------ Main.java | 11 +++++- Measurement.java | 33 ++++++++++++---- Periode.java | 80 +++++++++++++++++++++++++++++++++++++-- StatisticsCalculator.java | 61 +++++++++++++++++++++++++++++ Weerstation.java | 31 ++++++++++++--- WeerstationConnector.java | 8 +++- 10 files changed, 305 insertions(+), 41 deletions(-) diff --git a/Calculator.java b/Calculator.java index cf9b0c6..e182326 100644 --- a/Calculator.java +++ b/Calculator.java @@ -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; diff --git a/GUIboard.java b/GUIboard.java index c5dad11..daa43b7 100644 --- a/GUIboard.java +++ b/GUIboard.java @@ -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 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 normalizeData(ArrayList data2 , double margin){ ArrayList data = new ArrayList(); @@ -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); diff --git a/Grootheid.java b/Grootheid.java index f926d92..2e3951f 100644 --- a/Grootheid.java +++ b/Grootheid.java @@ -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 diff --git a/IO.java b/IO.java index 79c30ad..85e9f5e 100644 --- a/IO.java +++ b/IO.java @@ -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; diff --git a/Main.java b/Main.java index 0127476..0cc0b74 100644 --- a/Main.java +++ b/Main.java @@ -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(); } diff --git a/Measurement.java b/Measurement.java index b8d412d..cad18fa 100644 --- a/Measurement.java +++ b/Measurement.java @@ -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(); + } } \ No newline at end of file diff --git a/Periode.java b/Periode.java index ff97258..f26b42b 100644 --- a/Periode.java +++ b/Periode.java @@ -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; diff --git a/StatisticsCalculator.java b/StatisticsCalculator.java index 58b1816..f85f078 100644 --- a/StatisticsCalculator.java +++ b/StatisticsCalculator.java @@ -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 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 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 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 array2){ ArrayList array = new ArrayList(); @@ -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 array){ Map map = new HashMap(); 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 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 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 array) { diff --git a/Weerstation.java b/Weerstation.java index 11382c5..14cc51d 100644 --- a/Weerstation.java +++ b/Weerstation.java @@ -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 it = meting2.iterator(); while( it.hasNext() ) diff --git a/WeerstationConnector.java b/WeerstationConnector.java index 44a613c..1a71508 100644 --- a/WeerstationConnector.java +++ b/WeerstationConnector.java @@ -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 {