|
|
@@ -1,561 +1,89 @@
|
|
|
-package weerstation;
|
|
|
-import java.sql.Connection;
|
|
|
-import java.sql.DriverManager;
|
|
|
-import java.sql.ResultSet;
|
|
|
-import java.sql.SQLException;
|
|
|
-import java.sql.Statement;
|
|
|
-import java.sql.Timestamp;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.GregorianCalendar;
|
|
|
-
|
|
|
-public class Weerstation
|
|
|
-{
|
|
|
-
|
|
|
- private Connection myConn = null;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- public Weerstation()
|
|
|
- {
|
|
|
- this("84.24.41.72","5329","aws_data","aws","aws");
|
|
|
- }
|
|
|
-
|
|
|
- //Start connection with Databse
|
|
|
- public Weerstation(String host, String port, String dbName, String userName, String password)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- String url = "jdbc:mysql://" + host + ":" + port + "/"+ dbName + "?user="
|
|
|
- + userName
|
|
|
- + "&password="
|
|
|
- + password;
|
|
|
- Class.forName("com.mysql.jdbc.Driver").newInstance ();
|
|
|
- myConn = DriverManager.getConnection(url);
|
|
|
- System.out.println("Database connection established");
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch(Exception ex)
|
|
|
- {
|
|
|
- System.out.println("Error : " + ex.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get most recent values of one column
|
|
|
- public Timestamp getMostRecentTimeStamp()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getDateStamp();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentBarometer()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawBarometer();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentInsideTemp()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawInsideTemp();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentInsideHum()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawInsideHum();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentOutsideTemp()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawOutsideTemp();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentWindSpeed()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawWindSpeed();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentAvgWindSpeed()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawAvgWindSpeed();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentWindDir()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawWindDir();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentOutsideHum()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawOutsideHum();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentRainRate()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawRainRate();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentUVLevel()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawUVLevel();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentSolarRadiation()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawSolarRad();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentXmitBatt()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawXmitBatt();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentBattLevel()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawBattLevel();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentSunrise()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawSunrise();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public short getMostRecentSunset()
|
|
|
- {
|
|
|
- Measurement m = getMostRecentMeasurement();
|
|
|
- return m.getRawSunset();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get all values of one column
|
|
|
- public short[] getAllOutsideTemp()
|
|
|
- {
|
|
|
- ArrayList<Measurement> mArr = getAllMeasurements();
|
|
|
- short[] values = new short[mArr.size()];
|
|
|
- int count = 0;
|
|
|
- for(Measurement m: mArr )
|
|
|
- {
|
|
|
- values[count++] = m.getRawOutsideTemp();
|
|
|
- }
|
|
|
- return values;
|
|
|
- }
|
|
|
-
|
|
|
- public short[] getAllBarometer()
|
|
|
- {
|
|
|
- ArrayList<Measurement> mArr = getAllMeasurements();
|
|
|
- short[] values = new short[mArr.size()];
|
|
|
- int count = 0;
|
|
|
- for(Measurement m: mArr )
|
|
|
- {
|
|
|
- values[count++] = m.getRawBarometer();
|
|
|
- }
|
|
|
- return values;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get most recent value of all columns
|
|
|
- public Measurement getMostRecentMeasurement()
|
|
|
- {
|
|
|
-
|
|
|
- Measurement m = new Measurement();
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- // query:
|
|
|
- Statement s = myConn.createStatement();
|
|
|
- s.executeQuery("SELECT stationId, timestamp, " +
|
|
|
- "barometer, " +
|
|
|
- "insideTemp, " +
|
|
|
- "insideHum, " +
|
|
|
- "outsideTemp, " +
|
|
|
- "windSpeed, " +
|
|
|
- "avgWindSpeed, " +
|
|
|
- "windDir, " +
|
|
|
- "outsideHum, " +
|
|
|
- "rainRate, " +
|
|
|
- "UVLevel, " +
|
|
|
- "solarRad, " +
|
|
|
- "xmitBatt, " +
|
|
|
- "battLevel, " +
|
|
|
- "sunrise, " +
|
|
|
- "sunset " +
|
|
|
- "FROM measurement order by measurementId desc limit 1");
|
|
|
-
|
|
|
- ResultSet rs = s.getResultSet();
|
|
|
- int count = 0;
|
|
|
- while( rs.next() )
|
|
|
- {
|
|
|
- m.setStationId( rs.getString("stationId") );
|
|
|
- m.setDateStamp( rs.getTimestamp(2));
|
|
|
- m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
|
|
|
- m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
|
|
|
- m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
|
|
|
- m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
|
|
|
- m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
|
|
|
- m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
|
|
|
- m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
|
|
|
- m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
|
|
|
- m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
|
|
|
- m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
|
|
|
- m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
|
|
|
- m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
|
|
|
- m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
|
|
|
- m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
|
|
|
- m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
|
|
|
-
|
|
|
- count++;
|
|
|
- }
|
|
|
- rs.close();
|
|
|
- s.close();
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch( Exception ex)
|
|
|
- {
|
|
|
- System.out.println("getMeasurement: " + ex.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- return m;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get all values of all columns
|
|
|
- public ArrayList<Measurement> getAllMeasurements()
|
|
|
- {
|
|
|
-
|
|
|
- ArrayList<Measurement> mArr = new ArrayList<Measurement>();
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- // query:
|
|
|
- Statement s = myConn.createStatement();
|
|
|
- s.executeQuery("SELECT stationId, timestamp, " +
|
|
|
- "barometer, " +
|
|
|
- "insideTemp, " +
|
|
|
- "insideHum, " +
|
|
|
- "outsideTemp, " +
|
|
|
- "windSpeed, " +
|
|
|
- "avgWindSpeed, " +
|
|
|
- "windDir, " +
|
|
|
- "outsideHum, " +
|
|
|
- "rainRate, " +
|
|
|
- "UVLevel, " +
|
|
|
- "solarRad, " +
|
|
|
- "xmitBatt, " +
|
|
|
- "battLevel, " +
|
|
|
- "sunrise, " +
|
|
|
- "sunset " +
|
|
|
- "FROM measurement");
|
|
|
-
|
|
|
- ResultSet rs = s.getResultSet();
|
|
|
- int count = 0;
|
|
|
- while( rs.next() )
|
|
|
- {
|
|
|
- Measurement m = new Measurement();
|
|
|
-
|
|
|
- m.setStationId( rs.getString("stationId") );
|
|
|
- m.setDateStamp( rs.getTimestamp(2));
|
|
|
- m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
|
|
|
- m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
|
|
|
- m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
|
|
|
- m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
|
|
|
- m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
|
|
|
- m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
|
|
|
- m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
|
|
|
- m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
|
|
|
- m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
|
|
|
- m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
|
|
|
- m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
|
|
|
- m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
|
|
|
- m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
|
|
|
- m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
|
|
|
- m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
|
|
|
-
|
|
|
- mArr.add(m);
|
|
|
-
|
|
|
- count++;
|
|
|
- }
|
|
|
- rs.close();
|
|
|
- s.close();
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch( Exception ex)
|
|
|
- {
|
|
|
- System.out.println("getMeasurement: " + ex.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- return mArr;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get specified values of all columns
|
|
|
- public ArrayList<Measurement> getAllMeasurementsBetween(GregorianCalendar d1, GregorianCalendar d2)
|
|
|
- {
|
|
|
-
|
|
|
- String sd1 = d1.get(Calendar.YEAR) + "-" + (d1.get(Calendar.MONTH)+1) + "-" + d1.get(Calendar.DATE) + " 0:0:0";
|
|
|
- String sd2 = d2.get(Calendar.YEAR) + "-" + (d2.get(Calendar.MONTH)+1) + "-" + d2.get(Calendar.DATE) + " 23:59:59";
|
|
|
-
|
|
|
- ArrayList<Measurement> mArr = new ArrayList<Measurement>();
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- // query:
|
|
|
- Statement s = myConn.createStatement();
|
|
|
- s.executeQuery("SELECT stationId, timestamp, " +
|
|
|
- "barometer, " +
|
|
|
- "insideTemp, " +
|
|
|
- "insideHum, " +
|
|
|
- "outsideTemp, " +
|
|
|
- "windSpeed, " +
|
|
|
- "avgWindSpeed, " +
|
|
|
- "windDir, " +
|
|
|
- "outsideHum, " +
|
|
|
- "rainRate, " +
|
|
|
- "UVLevel, " +
|
|
|
- "solarRad, " +
|
|
|
- "xmitBatt, " +
|
|
|
- "battLevel, " +
|
|
|
- "sunrise, " +
|
|
|
- "sunset " +
|
|
|
- "FROM measurement where timestamp between " +
|
|
|
- "'" + sd1 + "' and '" + sd2 + "'");
|
|
|
-
|
|
|
- ResultSet rs = s.getResultSet();
|
|
|
- int count = 0;
|
|
|
- while( rs.next() )
|
|
|
- {
|
|
|
- Measurement m = new Measurement();
|
|
|
-
|
|
|
- m.setStationId( rs.getString("stationId") );
|
|
|
- m.setDateStamp( rs.getTimestamp(2));
|
|
|
- m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
|
|
|
- m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
|
|
|
- m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
|
|
|
- m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
|
|
|
- m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
|
|
|
- m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
|
|
|
- m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
|
|
|
- m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
|
|
|
- m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
|
|
|
- m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
|
|
|
- m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
|
|
|
- m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
|
|
|
- m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
|
|
|
- m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
|
|
|
- m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
|
|
|
-
|
|
|
- mArr.add(m);
|
|
|
-
|
|
|
- count++;
|
|
|
- }
|
|
|
- rs.close();
|
|
|
- s.close();
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch( Exception ex)
|
|
|
- {
|
|
|
- System.out.println("getMeasurement: " + ex.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- return mArr;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get last 86400 values of all columns
|
|
|
- public ArrayList<Measurement> getAllMeasurementsLast24h()
|
|
|
- {
|
|
|
- return getAllMeasurementsLastHours(24);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Get specified values of all columns
|
|
|
- public ArrayList<Measurement> getAllMeasurementsLastHours(int hour)
|
|
|
- {
|
|
|
-
|
|
|
- ArrayList<Measurement> mArr = new ArrayList<Measurement>();
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- // query:
|
|
|
- Statement s = myConn.createStatement();
|
|
|
- s.executeQuery("SELECT stationId, timestamp, " +
|
|
|
- "barometer, " +
|
|
|
- "insideTemp, " +
|
|
|
- "insideHum, " +
|
|
|
- "outsideTemp, " +
|
|
|
- "windSpeed, " +
|
|
|
- "avgWindSpeed, " +
|
|
|
- "windDir, " +
|
|
|
- "outsideHum, " +
|
|
|
- "rainRate, " +
|
|
|
- "UVLevel, " +
|
|
|
- "solarRad, " +
|
|
|
- "xmitBatt, " +
|
|
|
- "battLevel, " +
|
|
|
- "sunrise, " +
|
|
|
- "sunset " +
|
|
|
- "FROM measurement where timestamp between NOW() - INTERVAL " +
|
|
|
- hour + " HOUR and NOW()");
|
|
|
-
|
|
|
-
|
|
|
- ResultSet rs = s.getResultSet();
|
|
|
- int count = 0;
|
|
|
- while( rs.next() )
|
|
|
- {
|
|
|
- Measurement m = new Measurement();
|
|
|
-
|
|
|
- m.setStationId( rs.getString("stationId") );
|
|
|
- m.setDateStamp( rs.getTimestamp(2));
|
|
|
- m.setRawBarometer( Short.valueOf(rs.getString("barometer")) );
|
|
|
- m.setRawInsideTemp( Short.valueOf(rs.getString("insideTemp")) );
|
|
|
- m.setRawInsideHum( Short.valueOf(rs.getString("insideHum")) );
|
|
|
- m.setRawOutsideTemp( Short.valueOf(rs.getString("outsideTemp")) );
|
|
|
- m.setRawWindSpeed( Short.valueOf(rs.getString("windSpeed")) );
|
|
|
- m.setRawAvgWindSpeed( Short.valueOf(rs.getString("avgWindSpeed")) );
|
|
|
- m.setRawWindDir( Short.valueOf(rs.getString("windDir")) );
|
|
|
- m.setRawOutsideHum( Short.valueOf(rs.getString("outsideHum")) );
|
|
|
- m.setRawRainRate( Short.valueOf(rs.getString("rainRate")) );
|
|
|
- m.setRawUVLevel( Short.valueOf(rs.getString("UVLevel")) );
|
|
|
- m.setRawSolarRad( Short.valueOf(rs.getString("solarRad")) );
|
|
|
- m.setRawXmitBatt( Short.valueOf(rs.getString("xmitBatt")) );
|
|
|
- m.setRawBattLevel( Short.valueOf(rs.getString("battLevel")) );
|
|
|
- m.setRawSunrise( Short.valueOf(rs.getString("sunrise")) );
|
|
|
- m.setRawSunset( Short.valueOf(rs.getString("sunset")) );
|
|
|
-
|
|
|
- mArr.add(m);
|
|
|
-
|
|
|
- count++;
|
|
|
- }
|
|
|
- rs.close();
|
|
|
- s.close();
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch( Exception ex)
|
|
|
- {
|
|
|
- System.out.println("getMeasurement: " + ex.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- return mArr;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Exectute a custom query
|
|
|
- private ResultSet executeCustomQuery(String query)
|
|
|
- {
|
|
|
- ResultSet returnSet = null;
|
|
|
-
|
|
|
- try{
|
|
|
- Statement s = myConn.createStatement();
|
|
|
- s.executeQuery(query);
|
|
|
- ResultSet rs = s.getResultSet();
|
|
|
-
|
|
|
- returnSet = rs;
|
|
|
-
|
|
|
- rs.close();
|
|
|
- s.close();
|
|
|
- }
|
|
|
- catch( SQLException ex)
|
|
|
- {
|
|
|
- System.out.println("SQLException: " + ex.getMessage());
|
|
|
- System.out.println("SQLState: " + ex.getSQLState());
|
|
|
- System.out.println("VendorError: " + ex.getErrorCode());
|
|
|
- }
|
|
|
- catch( Exception ex)
|
|
|
- {
|
|
|
- System.out.println("getMeasurement: " + ex.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- return returnSet;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- //Close connection with Database
|
|
|
- protected void finalize() throws Throwable
|
|
|
- {
|
|
|
- // Close database connection
|
|
|
- if( myConn != null )
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- myConn.close();
|
|
|
- System.out.println("Database connection terminated");
|
|
|
- }
|
|
|
- catch( Exception e ) {}
|
|
|
- }
|
|
|
-
|
|
|
- super.finalize();
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
+package weerstation;
|
|
|
+
|
|
|
+
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Timer;
|
|
|
+import java.util.TimerTask;
|
|
|
+
|
|
|
+public class Weerstation {
|
|
|
+ WeerstationConnector weerstation1;
|
|
|
+ Measurement meting1;
|
|
|
+ ArrayList<Measurement> meting2;
|
|
|
+ int currentScreen;
|
|
|
+
|
|
|
+ public Weerstation(){
|
|
|
+ weerstation1 = new WeerstationConnector();
|
|
|
+ meting1 = weerstation1.getMostRecentMeasurement();
|
|
|
+ meting2 = weerstation1.getAllMeasurementsLast24h();
|
|
|
+ currentScreen = -1;
|
|
|
+
|
|
|
+ IO.init();
|
|
|
+ Timer timer = new Timer();
|
|
|
+
|
|
|
+ //All the different screen classes
|
|
|
+
|
|
|
+ final List<Object> lstScreens = new ArrayList<Object>();
|
|
|
+ lstScreens.add(new AvgWindspeed(meting1, meting2));
|
|
|
+ lstScreens.add(new RainRate(meting1, meting2));
|
|
|
+
|
|
|
+
|
|
|
+ //Screen switcher
|
|
|
+ timer.scheduleAtFixedRate(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+ currentScreen++;
|
|
|
+ if(currentScreen == lstScreens.size()){
|
|
|
+ currentScreen = 0;
|
|
|
+ }
|
|
|
+ Object obj = lstScreens.get(currentScreen);
|
|
|
+ try {
|
|
|
+ obj.getClass().getMethod("display").invoke(obj);
|
|
|
+ } catch (IllegalAccessException | IllegalArgumentException
|
|
|
+ | InvocationTargetException | NoSuchMethodException
|
|
|
+ | SecurityException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 0, 5*1000);
|
|
|
+
|
|
|
+ //Update recent measurement every 60 seconds
|
|
|
+ timer.scheduleAtFixedRate(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+
|
|
|
+ meting1 = weerstation1.getMostRecentMeasurement();
|
|
|
+ for(Object obj : lstScreens){
|
|
|
+ try {
|
|
|
+ obj.getClass().getMethod("updateRecent", Measurement.class).invoke(obj, meting1 );
|
|
|
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 60*1000, 60*1000);
|
|
|
+
|
|
|
+
|
|
|
+ //Update 24hours every 60 seconds
|
|
|
+ timer.scheduleAtFixedRate(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+ meting2 = weerstation1.getAllMeasurementsLast24h();
|
|
|
+ for(Object obj : lstScreens){
|
|
|
+ try {
|
|
|
+ obj.getClass().getMethod("update24Hour", ArrayList.class).invoke(obj, meting2 );
|
|
|
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, 10*60*1000, 10*60*1000);
|
|
|
+
|
|
|
+
|
|
|
+ //Button checker
|
|
|
+ timer.scheduleAtFixedRate(new TimerTask() {
|
|
|
+ public void run() {
|
|
|
+
|
|
|
+ }
|
|
|
+ }, 0, 60*1000);
|
|
|
+
|
|
|
+ }
|
|
|
+}
|