public void run() {
      registerDriver();
      dbConnection = establishConnection();

      // #1 security EU. Plz no stealerino.
      String apiKey = "26ef2b98aa2077410020408feb29cde8";

      owmap = new OpenWeatherMap(apiKey);
      System.out.println("created OpenWeatherMap instance");

      while (true) {
        if (client != null) {
          client.requestAllData();
          try {
            client.requestWindSpeed();
          } catch (Exception e1) {
            System.out.println("Failed to request wind speed.");
            e1.printStackTrace();
          }
        }
        // Not sure if needed
        //				else {
        //					System.out.println("SensorClient unreachable.");
        //					if (!reconnectorRunning) {
        //						SCReconnector reconnector = new SCReconnector();
        //						reconnector.start();
        //					}
        //				}
        System.out.println("---------------------------------------");
        Date date = new Date();
        System.out.println(date.toString());
        CurrentWeather currentWeather = null;
        try {
          weathermapAccessible = true;
          currentWeather = getCurrentWeatherWithTimeout(currentWeather);
          System.out.println("Received current Weather from OpenWeatherMap.");
        } catch (ExecutionException e) {
          System.out.println("OpenWeatherMap appears to be inaccessible.");
          weathermapAccessible = false;
          // e.printStackTrace();
        } catch (InterruptedException e) {
          weathermapAccessible = false;
          System.out.println("Request interrupted while waiting for response.");
          // e.printStackTrace();
        } catch (TimeoutException e) {
          weathermapAccessible = false;
          System.out.println(
              "Did not receive response from openweathermap within "
                  + WEATHER_REQUEST_TIMEOUT
                  + " seconds.");
          // e.printStackTrace();
        }
        sensorServerAvailable = true;

        System.out.println("Creating WeatherData object...");

        WeatherData data =
            initializeWeatherDataObject(
                currentWeather, sensorServerAvailable, weathermapAccessible);
        System.out.println("Created WeatherData object");
        String query =
            "INSERT INTO weatherdatalog (temperature, pressure, humidity, owmtemperature, owmpressure, owmhumidity, sensorwindspeed, owmwindspeed, owmwinddegree, light, owmweathername, owmweatherdesc)"
                + " VALUES ("
                + data.getTemp()
                + ", "
                + data.getPressure()
                + ", "
                + data.getHumidity()
                + ", "
                + data.getOwmTemp()
                + ", "
                + data.getOwmPressure()
                + ", "
                + data.getOwmHumidity()
                + ", "
                + data.getSensorWindSpeed()
                + ", "
                + data.getOwmWindSpeed()
                + ", "
                + data.getOwmWindDegree()
                + ", "
                + data.getLight()
                + ", '"
                + data.getOwmName()
                + "', '"
                + data.getOwmDesc()
                + "');";
        try {
          Statement statement = dbConnection.createStatement();
          System.out.println("Executing query...");
          statement.executeUpdate(query);
          System.out.println("Inserted data");
        } catch (SQLException e) {
          e.printStackTrace();
        }

        try {
          Thread.sleep(ACQUIREDATAINTERVAL);
        } catch (InterruptedException e) {
          System.out.println("Sleep was interrupted");
          e.printStackTrace();
        }
      }
    }