diff --git a/LangsteTempStijgingPeriode.java b/LangsteTempStijgingPeriode.java new file mode 100644 index 0000000..7064828 --- /dev/null +++ b/LangsteTempStijgingPeriode.java @@ -0,0 +1,54 @@ +import java.util.ArrayList; + +public class LangsteTempStijgingPeriode extends Grootheid +{ + private ArrayList list; + private Periode StijgingPeriode; + + //constructor + public LangsteTempStijgingPeriode(Measurement measurement1, ArrayList measurement2) + { + list = new ArrayList(); + StijgingPeriode = new Periode("TempStijgingsperiode"); + updateRecent(measurement1); + updatePeriod(measurement2); + } + + + public void updateRecent(Measurement measurement1) + { + setCurrent(measurement1.getOutsideTemp()); + } + + public void updatePeriod(ArrayList measurement2) + { + createList(measurement2); + calculateMaxMin(list); + + int[] index = StatisticsCalculator.langsteTempStijgingPeriode(list); + StijgingPeriode= Calculator.timeStampToPeriode( measurement2.get(index[0]).getDateStamp(), measurement2.get(index[1]).getDateStamp()); + } + + public void display() + { + GUIboard.writePageToMatrix("Langste temp.stijging", StijgingPeriode.toString(), ""); + } + + public void displayGraph() + { + display(); + } + + private void createList(ArrayList measurement2) + { + if(!list.isEmpty()) + { + list.clear(); + } + + for(Measurement ms : measurement2) + { + list.add(ms.getOutsideTemp()); + } + } +} diff --git a/StatisticsCalculator.java b/StatisticsCalculator.java index 8c17c42..ac5b20f 100644 --- a/StatisticsCalculator.java +++ b/StatisticsCalculator.java @@ -310,15 +310,64 @@ public class StatisticsCalculator { public static int[] langsteTempStijgingPeriode(ArrayList array) { + ArrayList maxTempDag = new ArrayList(); + ArrayList periodeLengteList = new ArrayList(); + ArrayList periodeStartList = new ArrayList(); + int[] index = new int[2]; int index1 = 0; int index2 = 0; + int indexStart = 0; + int indexEind = 1; + int periodeLengte = 0; + int i = 0; + double maxTemp = 0; - //Code + //berekent maximale temp. per dag + for(double db : array) + { + i ++; + if(i % 1440 == 0) + { + maxTempDag.add(maxTemp); + maxTemp = 0; + } + + if(db > maxTemp) + { + maxTemp = db; + } + } - index[0] = index1; - index[1] = index2; - return index; - } - + for(int t = 1; t < maxTempDag.size(); t ++) //zoekt naar periodes van temp.stijgingen + { + if (maxTempDag.get(t) > maxTempDag.get(t - 1)) + { + indexEind ++; + } + + if (maxTempDag.get(t) <= maxTempDag.get(t - 1)) + { + periodeLengte = indexEind - indexStart; + periodeLengteList.add(periodeLengte); + periodeStartList.add(indexStart); + indexStart = indexEind; + } + } + + Integer tempMax = Collections.max(periodeLengteList); //onthoudt de grootste periode van een temp.stijging + + for (int u = 0; u < periodeLengteList.size(); u ++) //pakt de index van de grootste periode + { + if (tempMax == periodeLengteList.get(u)) + { + index1 = u; + index2 = tempMax - u; + } + } + + index[0] = index1 * 1440; + index[1] = index2 * 1440; + return index; + } } diff --git a/Weerstation.java b/Weerstation.java index 5efd066..b998b93 100644 --- a/Weerstation.java +++ b/Weerstation.java @@ -73,7 +73,7 @@ public class Weerstation { System.out.println("2 Years: " + periods.get(6)); //Kies hier welke periode je wil laden, hij veranderd in een keer alles: - int periodeNr = 0; + int periodeNr = 1; weerstation1 = new WeerstationConnector(); meting1 = weerstation1.getMostRecentMeasurement(); @@ -103,7 +103,8 @@ public class Weerstation { lstScreens.add(new Zonsterkte(meting1, meting2)); //Zonkracht lstScreens.add(new DewPoint(meting1, meting2)); //Dauwpunt lstScreens.add(new Sun(meting1)); //Sunrise en Sunset - lstScreens.add(new LangsteZomerPeriode(meting1, meting2)); //Langste Zomerse Periode + lstScreens.add(new LangsteZomerPeriode(meting1, meting2));//Langste Zomerse Periode + lstScreens.add(new LangsteTempStijgingPeriode(meting1, meting2)); //Langste temperatuurstijging lstScreens.add(new LangsteRegenPeriode(meting1, meting2)); //Langste Regen Periode lstScreens.add(new MaximaleRegenPeriode(meting1, meting2)); //Totale regenval in een periode lstScreens.add(new GraadDagen(meting1, meting2)); //Aantal graaddagen in een periode