Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.DecimalFormat;
- import java.time.*;
- import java.time.temporal.*;
- import java.util.ArrayList;
- import java.util.Collections;
- /**
- * A class to contain a period of time
- *
- * @author Johan Talboom
- * @version 2.0
- */
- public class Period {
- private LocalDate beginPeriod;
- private LocalDate endPeriod;
- /**
- * default constructor, sets the period to today
- */
- public Period() {
- beginPeriod = LocalDate.now();
- endPeriod = LocalDate.now();
- }
- public Period(LocalDate beginPeriod, LocalDate endPeriod) {
- this.beginPeriod = beginPeriod;
- this.endPeriod = endPeriod;
- }
- public Period(LocalDate beginPeriod) {
- this.beginPeriod = beginPeriod;
- this.endPeriod = LocalDate.now();
- }
- public Period(int days) {
- this.beginPeriod = LocalDate.now().minus(java.time.Period.ofDays(days));
- this.endPeriod = LocalDate.now();
- }
- /**
- * Simple setter for start of period
- */
- public void setStart(int year, int month, int day) {
- beginPeriod = LocalDate.of(year, month, day);
- }
- /**
- * simple setter for end of period
- */
- public void setEnd(int year, int month, int day) {
- endPeriod = LocalDate.of(year, month, day);
- }
- /**
- * alternative setter for start of period
- *
- * @param beginPeriod
- */
- public void setStart(LocalDate beginPeriod) {
- this.beginPeriod = beginPeriod;
- }
- /**
- * alternative setter for end of period
- *
- * @param endPeriod
- */
- public void setEnd(LocalDate endPeriod) {
- this.endPeriod = endPeriod;
- }
- /**
- * calculates the number of days in the period
- */
- public long numberOfDays() {
- return ChronoUnit.DAYS.between(beginPeriod, endPeriod);
- }
- /**
- * gets all raw measurements of this period from the database
- * @return a list of raw measurements
- */
- public ArrayList<RawMeasurement> getRawMeasurements() {
- return DatabaseConnection.getMeasurementsBetween(LocalDateTime.of(beginPeriod, LocalTime.of(0, 1)), LocalDateTime.of(endPeriod, LocalTime.of(23, 59)));
- }
- /**
- * Builds an ArrayList of measurements. This method also filters out any 'bad' measurements
- * @return a filtered list of measurements
- */
- public ArrayList<Measurement> getMeasurements() {
- ArrayList<Measurement> measurements = new ArrayList<>();
- ArrayList<RawMeasurement> rawMeasurements = getRawMeasurements();
- for (RawMeasurement rawMeasurement : rawMeasurements) {
- Measurement measurement = new Measurement(rawMeasurement);
- if(measurement.isValid()) {
- measurements.add(measurement);
- }
- }
- return measurements;
- }
- /**
- * todo
- * @return
- */
- /*public double getAverageOutsideTemperature()
- {
- ArrayList<Measurement> measurements = getMeasurements();
- //calculate average outside temperature and return it
- return measurements.get(0).getTemperature();
- } */
- /**
- * Todo
- */
- public ArrayList<Period> hasHeatWave() {
- return null;
- }
- /**
- * Todo
- */
- public Period longestDraught() {
- return new Period();
- }
- /**
- * Todo more methods
- */
- public double standardDeviationInsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> insideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- insideTempList.add(measurement.insideTemp());
- }
- double suminsidetemp = 0.0;
- double average = 0.0;
- double suminsidetempdeviation = 0.0;
- for (double number : insideTempList){
- suminsidetemp += number;
- }
- average = suminsidetemp / insideTempList.size();
- for (double number : insideTempList){
- suminsidetempdeviation += (number - average) * (number - average);
- }
- return Math.sqrt(suminsidetempdeviation / (insideTempList.size() - 1) );
- }
- public double standardDeviationOutsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideTempList.add(measurement.outsideTemp());
- }
- double sumoutsidetemp = 0.0;
- double average = 0.0;
- double sumoutsidetempdeviation = 0.0;
- for (double number : outsideTempList){
- sumoutsidetemp += number;
- }
- average = sumoutsidetemp / outsideTempList.size();
- for (double number : outsideTempList){
- sumoutsidetempdeviation += (number - average) * (number - average);
- }
- return Math.sqrt(sumoutsidetempdeviation / (outsideTempList.size() - 1));
- }
- public double standardDeviationOutsideHum(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideHumList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideHumList.add(measurement.outsideHum());
- }
- double sumoutsidehum = 0.0;
- double average = 0.0;
- double sumoutsidehumdeviation = 0.0;
- for (double number : outsideHumList){
- sumoutsidehum += number;
- }
- average = sumoutsidehum / outsideHumList.size();
- for (double number : outsideHumList){
- sumoutsidehumdeviation += (number - average) * (number - average);
- }
- return Math.sqrt(sumoutsidehumdeviation / (outsideHumList.size() - 1));
- }
- public double standardDeviationAirpressure(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> airpressureList = new ArrayList<>();
- for (Measurement measurement : measurements) {
- airpressureList.add(measurement.barometer());
- }
- double sumairpressure = 0.0;
- double average = 0.0;
- double sumairpressuredeviation = 0.0;
- for(double number : airpressureList){
- sumairpressure += number;
- }
- average = sumairpressure / airpressureList.size();
- for (double number : airpressureList){
- sumairpressuredeviation += (number - average) * (number - average);
- }
- return Math.sqrt(sumairpressuredeviation / (airpressureList.size() - 1));
- }
- public ArrayList<String> standarddeviation (){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> insideTempList = new ArrayList<>();
- ArrayList<Double> outsideTempList = new ArrayList<>();
- ArrayList<Double> outsideHumList = new ArrayList<>();
- ArrayList<Double> airpressureList = new ArrayList<>();
- ArrayList<String> output = new ArrayList<>();
- DecimalFormat format = new DecimalFormat("0.00");
- for (Measurement measurement : measurements){
- insideTempList.add(measurement.insideTemp());
- outsideTempList.add(measurement.outsideTemp());
- outsideHumList.add(measurement.outsideHum());
- airpressureList.add(measurement.barometer());
- }
- //
- // Inside Temperature
- //
- double suminsidetemp = 0.0;
- double average1 = 0.0;
- double suminsidetempdeviation = 0.0;
- for (double number : insideTempList){
- suminsidetemp += number;
- }
- average1 = suminsidetemp / insideTempList.size();
- for (double number : insideTempList){
- suminsidetempdeviation += (number - average1) * (number - average1);
- }
- String deviationinsidetemp = "Standard deviation inside temperature: "+ format.format(Math.sqrt(suminsidetempdeviation / (insideTempList.size() - 1) )) + " °C";
- output.add(0, deviationinsidetemp);
- //
- // Outside Temperature
- //
- double sumoutsidetemp = 0.0;
- double average2 = 0.0;
- double sumoutsidetempdeviation = 0.0;
- for (double number : outsideTempList){
- sumoutsidetemp += number;
- }
- average2 = sumoutsidetemp / outsideTempList.size();
- for (double number : outsideTempList){
- sumoutsidetempdeviation += (number - average2) * (number - average2);
- }
- String deviationoutsidetemp = "Standard deviation outside temperature: "+ format.format(Math.sqrt(sumoutsidetempdeviation / (outsideTempList.size() - 1))) + " °C";
- output.add(1, deviationoutsidetemp);
- //
- // Outside Humidity
- //
- double sumoutsidehum = 0.0;
- double average3 = 0.0;
- double sumoutsidehumdeviation = 0.0;
- for (double number : outsideHumList){
- sumoutsidehum += number;
- }
- average3 = sumoutsidehum / outsideHumList.size();
- for (double number : outsideHumList){
- sumoutsidehumdeviation += (number - average3) * (number - average3);
- }
- String deviationoutsidehum = "Standard deviation outside humidity: "+ format.format(Math.sqrt(sumoutsidehumdeviation / (outsideHumList.size() - 1))) + " %";
- output.add(2, deviationoutsidehum);
- //
- // Air pressure
- //
- double sumairpressure = 0.0;
- double average4 = 0.0;
- double sumairpressuredeviation = 0.0;
- for(double number : airpressureList){
- sumairpressure += number;
- }
- average4 = sumairpressure / airpressureList.size();
- for (double number : airpressureList){
- sumairpressuredeviation += (number - average4) * (number - average4);
- }
- String deviationairpressure = "Standard deviation airpressure: " + format.format(Math.sqrt(sumairpressuredeviation / (airpressureList.size() - 1))) + " hPa";
- output.add(3, deviationairpressure);
- return output;
- }
- public Double mediaanBinnenTempratuur(){
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> new2 = new ArrayList<>();
- for(Measurement list : new1){
- double get = list.insideTemp();
- new2.add(get);
- }
- Collections.sort(new2);
- double mediaan;
- int list1 = new2.size();
- if(list1 % 2 ==0){
- double som = new2.get(list1/2) + new2.get(list1/2-1);
- mediaan = som/2;
- }else{
- mediaan = new2.get(list1/2);
- }
- return mediaan;
- }
- public Double mediaanBuitenTempratuur(){
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> new2 = new ArrayList<>();
- for(Measurement list : new1){
- double get = list.outsideTemp();
- new2.add(get);
- }
- Collections.sort(new2);
- double mediaan;
- int list1 = new2.size();
- if(list1 % 2 ==0){
- double som = new2.get(list1/2) + new2.get(list1/2-1);
- mediaan = som/2;
- }else{
- mediaan = new2.get(list1/2);
- }
- return mediaan;
- }
- public Double mediaanBarometer(){
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> new2 = new ArrayList<>();
- for(Measurement list : new1){
- double get = list.barometer();
- new2.add(get);
- }
- Collections.sort(new2);
- double mediaan;
- int list1 = new2.size();
- if(list1 % 2 ==0){
- double som = new2.get(list1/2) + new2.get(list1/2-1);
- mediaan = som/2;
- }else{
- mediaan = new2.get(list1/2);
- }
- return mediaan;
- }
- public Double mediaanOutsideHum(){
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> new2 = new ArrayList<>();
- for(Measurement list : new1){
- double get = list.outsideHum();
- new2.add(get);
- }
- Collections.sort(new2);
- double mediaan;
- int list1 = new2.size();
- if(list1 % 2 ==0){
- double som = new2.get(list1/2) + new2.get(list1/2-1);
- mediaan = som/2;
- }else{
- mediaan = new2.get(list1/2);
- }
- return mediaan;
- }
- public double averageOudsideTemp() {
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideTempList.add(measurement.outsideTemp());
- }
- double sum = 0;
- for (int i = 0; i < outsideTempList.size(); i++) {
- sum += outsideTempList.get(i);
- }
- double avg = sum / outsideTempList.size();
- return avg;
- }
- public double averageInsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> insideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- insideTempList.add(measurement.insideTemp());
- }
- double sum = 0;
- for (int i = 0; i < insideTempList.size(); i++) {
- sum += insideTempList.get(i);
- }
- double avg = sum / insideTempList.size();
- return avg;
- }
- public double averageairPressure(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> airpressureList = new ArrayList<>();
- for (Measurement measurement : measurements){
- airpressureList.add(measurement.barometer());
- }
- double sum = 0;
- for (int i = 0; i < airpressureList.size(); i++) {
- sum += airpressureList.get(i);
- }
- double avg = sum / airpressureList.size();
- return avg;
- }
- public double averagehumidityOutside(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideHumList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideHumList.add(measurement.outsideHum());
- }
- double sum = 0;
- for (int i = 0; i < outsideHumList.size(); i++) {
- sum += outsideHumList.get(i);
- }
- double avg = sum / outsideHumList.size();
- return avg;
- }
- public double minimumInsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> insideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- insideTempList.add(measurement.insideTemp());
- }
- double lowest = insideTempList.get(0);
- for (double getal : insideTempList){
- if (getal < lowest){
- lowest = getal;
- }
- }
- return lowest;
- }
- public double minimumOutsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideTempList.add(measurement.outsideTemp());
- }
- double lowest = outsideTempList.get(0);
- for (double getal : outsideTempList){
- if (getal < lowest){
- lowest = getal;
- }
- }
- return lowest;
- }
- public double minimumOutsideHum(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideHumList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideHumList.add(measurement.outsideHum());
- }
- double lowest = outsideHumList.get(0);
- for (double getal : outsideHumList){
- if (getal < lowest){
- lowest = getal;
- }
- }
- return lowest;
- }
- public double minimumAirPressure(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> airpressureList = new ArrayList<>();
- for (Measurement measurement : measurements){
- airpressureList.add(measurement.barometer());
- }
- double lowest = airpressureList.get(0);
- for (double getal : airpressureList){
- if (getal < lowest){
- lowest = getal;
- }
- }
- return lowest;
- }
- public double maximumInsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> insideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- insideTempList.add(measurement.insideTemp());
- }
- double highest = insideTempList.get(0);
- for (double getal : insideTempList){
- if (getal > highest){
- highest = getal;
- }
- }
- return highest;
- }
- public double maximumOutsideTemp(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideTempList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideTempList.add(measurement.outsideTemp());
- }
- double highest = outsideTempList.get(0);
- for (double getal : outsideTempList){
- if (getal > highest){
- highest = getal;
- }
- }
- return highest;
- }
- public double maximumOutsideHum(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> outsideHumList = new ArrayList<>();
- for (Measurement measurement : measurements){
- outsideHumList.add(measurement.outsideHum());
- }
- double highest = outsideHumList.get(0);
- for (double getal : outsideHumList){
- if (getal > highest){
- highest = getal;
- }
- }
- return highest;
- }
- public double maximumAirPressure(){
- ArrayList<Measurement> measurements = getMeasurements();
- ArrayList<Double> airpressureList = new ArrayList<>();
- for (Measurement measurement : measurements){
- airpressureList.add(measurement.barometer());
- }
- double highest = airpressureList.get(0);
- for (double getal : airpressureList){
- if (getal > highest){
- highest = getal;
- }
- }
- return highest;
- }
- //MODUS
- public void ModusOutsideTemp() {
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> modus = new ArrayList<>();
- ArrayList<Double> meerDanEenModus = new ArrayList<>();
- for (Measurement list : new1) {
- double get = list.outsideTemp();
- modus.add(get);
- }
- double modus1 = modus.get(0);
- double maxCount = modus.get(0);
- int amount = 0;
- for (int i = 0; i < modus.size(); i++) {
- int count = 0;
- double comparison = modus.get(i);
- for (Double m : modus) {
- if (m == comparison) {
- count++;
- }
- }
- if (count >= amount) {
- if (count == amount) {
- maxCount = comparison;
- if (!meerDanEenModus.contains(comparison)) {
- meerDanEenModus.add(comparison);
- }
- } else {
- modus1 = comparison;
- amount = count;
- meerDanEenModus.clear();
- meerDanEenModus.add(comparison);
- }
- }
- }
- if (maxCount == modus1) {
- System.out.println("Modus: " + modus1 + " aantal: " + amount);
- } else {
- int sum = 0;
- int amountMod = meerDanEenModus.size();
- double comparisonMod;
- for (Double singleModus : meerDanEenModus) {
- sum += singleModus;
- }
- comparisonMod = ((double) sum / amountMod);
- System.out.print("De modussen zijn: ");
- System.out.println(meerDanEenModus);
- System.out.print("Het gemiddelde van de modussen is: ");
- System.out.print(comparisonMod);
- }
- }
- public void ModusInsideTemp() {
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> modus = new ArrayList<>();
- ArrayList<Double> meerDanEenModus = new ArrayList<>();
- for (Measurement list : new1) {
- double get = list.insideTemp();
- modus.add(get);
- }
- double modus1 = modus.get(0);
- double maxCount = modus.get(0);
- int amount = 0;
- for (int i = 0; i < modus.size(); i++) {
- int count = 0;
- double comparison = modus.get(i);
- for (Double m : modus) {
- if (m == comparison) {
- count++;
- }
- }
- if (count >= amount) {
- if (count == amount) {
- maxCount = comparison;
- if (!meerDanEenModus.contains(comparison)) {
- meerDanEenModus.add(comparison);
- }
- } else {
- modus1 = comparison;
- amount = count;
- meerDanEenModus.clear();
- meerDanEenModus.add(comparison);
- }
- }
- }
- if (maxCount == modus1) {
- System.out.println("Modus: " + modus1 + " aantal: " + amount);
- } else {
- int sum = 0;
- int amountMod = meerDanEenModus.size();
- double comparisonMod;
- for (Double singleModus : meerDanEenModus) {
- sum += singleModus;
- }
- comparisonMod = ((double) sum / amountMod);
- System.out.print("De modussen zijn: ");
- System.out.println(meerDanEenModus);
- System.out.print("Het gemiddelde van de modussen is: ");
- System.out.print(comparisonMod);
- }
- }
- public void ModusInsideHum() {
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> modus = new ArrayList<>();
- ArrayList<Double> meerDanEenModus = new ArrayList<>();
- for (Measurement list : new1) {
- double get = list.insideHum();
- modus.add(get);
- }
- double modus1 = modus.get(0);
- double maxCount = modus.get(0);
- int amount = 0;
- for (int i = 0; i < modus.size(); i++) {
- int count = 0;
- double comparison = modus.get(i);
- for (Double m : modus) {
- if (m == comparison) {
- count++;
- }
- }
- if (count >= amount) {
- if (count == amount) {
- maxCount = comparison;
- if (!meerDanEenModus.contains(comparison)) {
- meerDanEenModus.add(comparison);
- }
- } else {
- modus1 = comparison;
- amount = count;
- meerDanEenModus.clear();
- meerDanEenModus.add(comparison);
- }
- }
- }
- if (maxCount == modus1) {
- System.out.println("Modus: " + modus1 + " aantal: " + amount);
- } else {
- int sum = 0;
- int amountMod = meerDanEenModus.size();
- double comparisonMod;
- for (Double singleModus : meerDanEenModus) {
- sum += singleModus;
- }
- comparisonMod = ((double) sum / amountMod);
- System.out.print("De modussen zijn: ");
- System.out.println(meerDanEenModus);
- System.out.print("Het gemiddelde van de modussen is: ");
- System.out.print(comparisonMod);
- }
- }
- public void ModusOutsideHum() {
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> modus = new ArrayList<>();
- ArrayList<Double> meerDanEenModus = new ArrayList<>();
- for (Measurement list : new1) {
- double get = list.outsideHum();
- modus.add(get);
- }
- double modus1 = modus.get(0);
- double maxCount = modus.get(0);
- int amount = 0;
- for (int i = 0; i < modus.size(); i++) {
- int count = 0;
- double comparison = modus.get(i);
- for (Double m : modus) {
- if (m == comparison) {
- count++;
- }
- }
- if (count >= amount) {
- if (count == amount) {
- maxCount = comparison;
- if (!meerDanEenModus.contains(comparison)) {
- meerDanEenModus.add(comparison);
- }
- } else {
- modus1 = comparison;
- amount = count;
- meerDanEenModus.clear();
- meerDanEenModus.add(comparison);
- }
- }
- }
- if (maxCount == modus1) {
- System.out.println("Modus: " + modus1 + " aantal: " + amount);
- } else {
- int sum = 0;
- int amountMod = meerDanEenModus.size();
- double comparisonMod;
- for (Double singleModus : meerDanEenModus) {
- sum += singleModus;
- }
- comparisonMod = ((double) sum / amountMod);
- System.out.print("De modussen zijn: ");
- System.out.println(meerDanEenModus);
- System.out.print("Het gemiddelde van de modussen is: ");
- System.out.print(comparisonMod);
- }
- }
- public void Barometer() {
- ArrayList<Measurement> new1 = getMeasurements();
- ArrayList<Double> modus = new ArrayList<>();
- ArrayList<Double> meerDanEenModus = new ArrayList<>();
- for (Measurement list : new1) {
- double get = list.barometer();
- modus.add(get);
- }
- double modus1 = modus.get(0);
- double maxCount = modus.get(0);
- int amount = 0;
- for (int i = 0; i < modus.size(); i++) {
- int count = 0;
- double comparison = modus.get(i);
- for (Double m : modus) {
- if (m == comparison) {
- count++;
- }
- }
- if (count >= amount) {
- if (count == amount) {
- maxCount = comparison;
- if (!meerDanEenModus.contains(comparison)) {
- meerDanEenModus.add(comparison);
- }
- } else {
- modus1 = comparison;
- amount = count;
- meerDanEenModus.clear();
- meerDanEenModus.add(comparison);
- }
- }
- }
- if (maxCount == modus1) {
- System.out.println("Modus: " + modus1 + " aantal: " + amount);
- } else {
- int sum = 0;
- int amountMod = meerDanEenModus.size();
- double comparisonMod;
- for (Double singleModus : meerDanEenModus) {
- sum += singleModus;
- }
- comparisonMod = ((double) sum / amountMod);
- System.out.print("De modussen zijn: ");
- System.out.println(meerDanEenModus);
- System.out.print("Het gemiddelde van de modussen is: ");
- System.out.print(comparisonMod);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement