public void insert(Map<AggregationKey, AggregationValue> map, GraphGranularityType graphGranularityType) { long start = System.currentTimeMillis(); log.info("Storing {} reporting...", graphGranularityType.name()); String insertSQL = getTableByGraphType(graphGranularityType); try (Connection connection = ds.getConnection(); PreparedStatement ps = connection.prepareStatement(insertSQL)) { for (Map.Entry<AggregationKey, AggregationValue> entry : map.entrySet()) { prepareReportingInsert(ps, entry, graphGranularityType); ps.addBatch(); } ps.executeBatch(); connection.commit(); } catch (Exception e) { log.error("Error inserting reporting data in DB.", e); } log.info("Storing {} reporting finished. Time {}. Records saved {}", graphGranularityType.name(), System.currentTimeMillis() - start, map.size()); }
public void insertReporting(Map<AggregationKey, AggregationValue> map, GraphGranularityType graphGranularityType) { if (isDBEnabled() && map.size() > 0) { blockingIOProcessor.executeDB(() -> reportingDBDao.insert(map, graphGranularityType)); } }
public void insertReportingRaw(Map<AggregationKey, Object> rawData) { if (isDBEnabled() && rawData.size() > 0) { blockingIOProcessor.executeDB(() -> reportingDBDao.insertRawData(rawData)); } }
public void insertStat(String region, Stat stat) { if (isDBEnabled()) { reportingDBDao.insertStat(region, stat); } }
public void cleanOldReportingRecords(Instant now) { if (isDBEnabled() && cleanOldReporting) { blockingIOProcessor.executeDB(() -> reportingDBDao.cleanOldReportingRecords(now)); } }
public static void prepareReportingInsert(PreparedStatement ps, String email, int dashId, int deviceId, short pin, PinType pinType, long ts, double value) throws SQLException { ps.setString(1, email); ps.setInt(2, dashId); ps.setInt(3, deviceId); ps.setShort(4, pin); ps.setInt(5, pinType.ordinal()); ps.setTimestamp(6, new Timestamp(ts), DateTimeUtils.UTC_CALENDAR); ps.setDouble(7, value); }
public ReportingDBManager(String propsFilename, BlockingIOProcessor blockingIOProcessor, boolean isEnabled) { this.blockingIOProcessor = blockingIOProcessor; DBProperties dbProperties = new DBProperties(propsFilename); if (!isEnabled || dbProperties.size() == 0) { log.info("Separate DB storage disabled."); this.ds = null; this.cleanOldReporting = false; return; } HikariConfig config = initConfig(dbProperties); log.info("Reporting DB url : {}", config.getJdbcUrl()); log.info("Reporting DB user : {}", config.getUsername()); log.info("Connecting to reporting DB..."); HikariDataSource hikariDataSource; try { hikariDataSource = new HikariDataSource(config); } catch (Exception e) { log.error("Not able connect to reporting DB. Skipping. Reason : {}", e.getMessage()); this.ds = null; this.cleanOldReporting = false; return; } this.ds = hikariDataSource; this.reportingDBDao = new ReportingDBDao(hikariDataSource); this.cleanOldReporting = dbProperties.cleanReporting(); log.info("Connected to reporting database successfully."); }