private PriceSignal getPriceSignalData() { Statement statement = null; String query = null; ResultSet resultSet = null; PriceSignal pricesignal = new PriceSignal(commodity); // round time to last full hour Calendar cal = Calendar.getInstance(); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); long startTimeForSPS = cal.getTimeInMillis() / 1000L; long endTimeForSPS = startTimeForSPS + 36 * 3600; // get the sps for the next 36h! try { Connection connection = database.getConnection(); statement = connection.createStatement(); } catch (SQLException e) { globalLogger.logError("SQL connection error", e); database.closeConnection(); return null; } try { query = "SELECT * FROM sps WHERE timestamp >= " + startTimeForSPS + " AND timestamp < " + endTimeForSPS; statement.execute(query); resultSet = statement.getResultSet(); while (resultSet.next()) { Integer timeStamp = Integer.valueOf(resultSet.getInt("timestamp")); Double price = Double.parseDouble(Integer.toString(resultSet.getInt("price"))); pricesignal.setPrice(timeStamp, price); } pricesignal.setKnownPriceInterval(startTimeForSPS, endTimeForSPS); statement.close(); } catch (SQLException ex) { if (statement != null) { try { statement.close(); } catch (SQLException e) { // ignore } } globalLogger.logError("getting DofData failed!", ex); database.closeConnection(); } return pricesignal; }
public void setUpSQLConnection( String dbHost, String dbPort, String dbName, String dbUser, String dbPasswd) throws ClassNotFoundException { database = new MySqlConnectionHandler(dbHost, dbPort, dbName, dbUser, dbPasswd); globalLogger.logDebug("* establishing SQL connection for priceSignal driver..."); try { database.connect(); globalLogger.logDebug("* ...SQL connection for priceSignal driver OK"); } catch (SQLException e) { globalLogger.logError("* ...SQL connection for priceSignal driver FAILED", e); } }
/* (non-Javadoc) * @see java.lang.Thread#run() */ @Override public void run() { try { while (true) { PriceSignal price = getPriceSignalData(); PowerLimitSignal limit = getPowerLimitSignalData(); if (price != null) priceSignalProvider.processPriceSignal(price, limit); try { sleep(120000); // 120 sec. } catch (InterruptedException e) { globalLogger.logError(e); } } } catch (Exception e) { globalLogger.logError(e); } }
private PowerLimitSignal getPowerLimitSignalData() { Statement statement = null; String query = null; ResultSet resultSet = null; PowerLimitSignal powerlimit = new PowerLimitSignal(); // round time to last full hour Calendar cal = Calendar.getInstance(); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); long startTimeForEPS = cal.getTimeInMillis() / 1000L; long endTimeForEPS = startTimeForEPS + 36 * 3600; // get the eps for the next 24h! Connection connection; try { connection = database.getConnection(); statement = connection.createStatement(); } catch (SQLException e) { globalLogger.logError("SQL connection error", e); database.closeConnection(); return null; } try { // last load signal query = "SELECT * FROM lbs WHERE timestamp <= " + startTimeForEPS + " ORDER BY timestamp DESC LIMIT 1"; statement.execute(query); resultSet = statement.getResultSet(); while (resultSet.next()) { long timeStamp = resultSet.getInt("timestamp"); Double limit = Double.parseDouble(Integer.toString(resultSet.getInt("price"))); powerlimit.setPowerLimit(timeStamp, limit); } statement.close(); statement = connection.createStatement(); // future load signals query = "SELECT * FROM lbs WHERE timestamp > " + startTimeForEPS + " AND timestamp < " + endTimeForEPS; statement.execute(query); resultSet = statement.getResultSet(); while (resultSet.next()) { Integer timeStamp = Integer.valueOf(resultSet.getInt("timestamp")); Double limit = Double.parseDouble(Integer.toString(resultSet.getInt("price"))); powerlimit.setPowerLimit(timeStamp, limit); } powerlimit.setKnownPowerLimitInterval(startTimeForEPS, endTimeForEPS); statement.close(); } catch (SQLException ex) { if (statement != null) { try { statement.close(); } catch (SQLException e) { // ignore } } globalLogger.logError("getting PowerLimitData failed!", ex); database.closeConnection(); } return powerlimit; }