@Override public List<Trigger> getUpdatedTriggers(final long lastUpdateTime) throws TriggerLoaderException { logger.info("Loading triggers changed since " + new DateTime(lastUpdateTime).toString()); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator .query(GET_UPDATED_TRIGGERS, handler, lastUpdateTime); logger.info("Loaded " + triggers.size() + " triggers."); return triggers; } catch (final SQLException ex) { throw new TriggerLoaderException("Loading triggers from db failed.", ex); } }
@Override public Trigger loadTrigger(final int triggerId) throws TriggerLoaderException { logger.info("Loading trigger " + triggerId + " from db."); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator.query(GET_TRIGGER, handler, triggerId); if (triggers.size() == 0) { logger.error("Loaded 0 triggers. Failed to load trigger " + triggerId); throw new TriggerLoaderException("Loaded 0 triggers. Failed to load trigger " + triggerId); } return triggers.get(0); } catch (final SQLException ex) { logger.error("Failed to load trigger " + triggerId); throw new TriggerLoaderException("Load a specific trigger failed.", ex); } }
@Override public List<Trigger> loadTriggers() throws TriggerLoaderException { logger.info("Loading all triggers from db."); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator.query(GET_ALL_TRIGGERS, handler); logger.info("Loaded " + triggers.size() + " triggers."); return triggers; } catch (final SQLException ex) { throw new TriggerLoaderException("Loading triggers from db failed.", ex); } }
@Override public void removeTrigger(final Trigger t) throws TriggerLoaderException { logger.info("Removing trigger " + t.toString() + " from db."); try { final int removes = this.dbOperator.update(REMOVE_TRIGGER, t.getTriggerId()); if (removes == 0) { throw new TriggerLoaderException("No trigger has been removed."); } } catch (final SQLException ex) { throw new TriggerLoaderException("Remove trigger " + t.getTriggerId() + " from db failed. ", ex); } }
private void updateTrigger(final Trigger t, final EncodingType encType) throws TriggerLoaderException { final String json = JSONUtils.toJSON(t.toJson()); byte[] data = null; try { final byte[] stringData = json.getBytes("UTF-8"); data = stringData; if (encType == EncodingType.GZIP) { data = GZIPUtils.gzipBytes(stringData); } logger.debug( "NumChars: " + json.length() + " UTF-8:" + stringData.length + " Gzip:" + data.length); } catch (final IOException e) { logger.error("Trigger encoding fails", e); throw new TriggerLoaderException("Error encoding the trigger " + t.toString(), e); } try { final int updates = this.dbOperator .update(UPDATE_TRIGGER, t.getSource(), t.getLastModifyTime(), encType.getNumVal(), data, t.getTriggerId()); if (updates == 0) { throw new TriggerLoaderException("No trigger has been updated."); } } catch (final SQLException ex) { logger.error("Updating Trigger " + t.getTriggerId() + " failed."); throw new TriggerLoaderException("DB Trigger update failed. ", ex); } }
/** * TODO: Don't understand why we need synchronized here. */ @Override public synchronized void addTrigger(final Trigger t) throws TriggerLoaderException { logger.info("Inserting trigger " + t.toString() + " into db."); final SQLTransaction<Long> insertAndGetLastID = transOperator -> { transOperator.update(ADD_TRIGGER, DateTime.now().getMillis()); // This commit must be called in order to unlock trigger table and have last insert ID. transOperator.getConnection().commit(); return transOperator.getLastInsertId(); }; try { final long id = this.dbOperator.transaction(insertAndGetLastID); t.setTriggerId((int) id); updateTrigger(t); logger.info("uploaded trigger " + t.getDescription()); } catch (final SQLException ex) { logger.error("Adding Trigger " + t.getTriggerId() + " failed."); throw new TriggerLoaderException("trigger id is not properly created.", ex); } }
@Override public Trigger loadTrigger(final int triggerId) throws TriggerLoaderException { logger.info("Loading trigger " + triggerId + " from db."); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator.query(GET_TRIGGER, handler, triggerId); if (triggers.size() == 0) { logger.error("Loaded 0 triggers. Failed to load trigger " + triggerId); throw new TriggerLoaderException("Loaded 0 triggers. Failed to load trigger " + triggerId); } return triggers.get(0); } catch (final SQLException ex) { logger.error("Failed to load trigger " + triggerId); throw new TriggerLoaderException("Load a specific trigger failed.", ex); } }
@Override public void removeTrigger(Trigger t) throws TriggerLoaderException { logger.info("Removing trigger " + t.toString() + " from db."); QueryRunner runner = createQueryRunner(); try { int removes = runner.update(REMOVE_TRIGGER, t.getTriggerId()); if (removes == 0) { throw new TriggerLoaderException("No trigger has been removed."); } } catch (SQLException e) { logger.error(REMOVE_TRIGGER + " failed."); throw new TriggerLoaderException("Remove trigger " + t.toString() + " from db failed. ", e); } }
@Override public List<Trigger> getUpdatedTriggers(final long lastUpdateTime) throws TriggerLoaderException { logger.info("Loading triggers changed since " + new DateTime(lastUpdateTime).toString()); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator .query(GET_UPDATED_TRIGGERS, handler, lastUpdateTime); logger.info("Loaded " + triggers.size() + " triggers."); return triggers; } catch (final SQLException ex) { throw new TriggerLoaderException("Loading triggers from db failed.", ex); } }
@Override public List<Trigger> loadTriggers() throws TriggerLoaderException { logger.info("Loading all triggers from db."); final ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); try { final List<Trigger> triggers = this.dbOperator.query(GET_ALL_TRIGGERS, handler); logger.info("Loaded " + triggers.size() + " triggers."); return triggers; } catch (final SQLException ex) { throw new TriggerLoaderException("Loading triggers from db failed.", ex); } }
private Connection getConnection() throws TriggerLoaderException { Connection connection = null; try { connection = super.getDBConnection(false); } catch (Exception e) { DbUtils.closeQuietly(connection); throw new TriggerLoaderException("Error getting DB connection.", e); } return connection; }
@Override public void removeTrigger(final Trigger t) throws TriggerLoaderException { logger.info("Removing trigger " + t.toString() + " from db."); try { final int removes = this.dbOperator.update(REMOVE_TRIGGER, t.getTriggerId()); if (removes == 0) { throw new TriggerLoaderException("No trigger has been removed."); } } catch (final SQLException ex) { throw new TriggerLoaderException("Remove trigger " + t.getTriggerId() + " from db failed. ", ex); } }
@Override public Trigger loadTrigger(int triggerId) throws TriggerLoaderException { logger.info("Loading trigger " + triggerId + " from db."); Connection connection = getConnection(); QueryRunner runner = new QueryRunner(); ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); List<Trigger> triggers; try { triggers = runner.query(connection, GET_TRIGGER, handler, triggerId); } catch (SQLException e) { logger.error(GET_TRIGGER + " failed."); throw new TriggerLoaderException("Loading trigger from db failed. ", e); } finally { DbUtils.closeQuietly(connection); } if(triggers.size() == 0) { logger.error("Loaded 0 triggers. Failed to load trigger " + triggerId); throw new TriggerLoaderException("Loaded 0 triggers. Failed to load trigger " + triggerId); } return triggers.get(0); }
@Override public void addTrigger(Trigger t) throws TriggerLoaderException { logger.info("Inserting trigger " + t.toString() + " into db."); t.setLastModifyTime(System.currentTimeMillis()); Connection connection = getConnection(); try { addTrigger(connection, t, defaultEncodingType); } catch (Exception e) { throw new TriggerLoaderException("Error uploading trigger", e); } finally { DbUtils.closeQuietly(connection); } }
private synchronized void addTrigger(Connection connection, Trigger t, EncodingType encType) throws TriggerLoaderException { QueryRunner runner = new QueryRunner(); long id; try { runner.update(connection, ADD_TRIGGER, DateTime.now().getMillis()); connection.commit(); id = runner.query(connection, LastInsertID.LAST_INSERT_ID, new LastInsertID()); if (id == -1l) { logger.error("trigger id is not properly created."); throw new TriggerLoaderException("trigger id is not properly created."); } t.setTriggerId((int)id); updateTrigger(t); logger.info("uploaded trigger " + t.getDescription()); } catch (SQLException e) { throw new TriggerLoaderException("Error creating trigger.", e); } }
@Override public List<Trigger> getUpdatedTriggers(long lastUpdateTime) throws TriggerLoaderException { logger.info("Loading triggers changed since " + new DateTime(lastUpdateTime).toString()); Connection connection = getConnection(); QueryRunner runner = new QueryRunner(); ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); List<Trigger> triggers; try { triggers = runner.query(connection, GET_UPDATED_TRIGGERS, handler, lastUpdateTime); } catch (SQLException e) { logger.error(GET_ALL_TRIGGERS + " failed."); throw new TriggerLoaderException("Loading triggers from db failed. ", e); } finally { DbUtils.closeQuietly(connection); } logger.info("Loaded " + triggers.size() + " triggers."); return triggers; }
@Override public List<Trigger> loadTriggers() throws TriggerLoaderException { logger.info("Loading all triggers from db."); Connection connection = getConnection(); QueryRunner runner = new QueryRunner(); ResultSetHandler<List<Trigger>> handler = new TriggerResultHandler(); List<Trigger> triggers; try { triggers = runner.query(connection, GET_ALL_TRIGGERS, handler); } catch (SQLException e) { logger.error(GET_ALL_TRIGGERS + " failed."); throw new TriggerLoaderException("Loading triggers from db failed. ", e); } finally { DbUtils.closeQuietly(connection); } logger.info("Loaded " + triggers.size() + " triggers."); return triggers; }
@Override public void updateTrigger(Trigger t) throws TriggerLoaderException { logger.info("Updating trigger " + t.getTriggerId() + " into db."); t.setLastModifyTime(System.currentTimeMillis()); Connection connection = getConnection(); try{ updateTrigger(connection, t, defaultEncodingType); } catch(Exception e) { e.printStackTrace(); throw new TriggerLoaderException("Failed to update trigger " + t.toString() + " into db!"); } finally { DbUtils.closeQuietly(connection); } }
throw new TriggerLoaderException("Error encoding the trigger " + t.toString()); connection.commit(); if (updates == 0) { throw new TriggerLoaderException("No trigger has been updated."); throw new TriggerLoaderException("Update trigger " + t.toString() + " into db failed. ", e);
private void updateTrigger(final Trigger t, final EncodingType encType) throws TriggerLoaderException { final String json = JSONUtils.toJSON(t.toJson()); byte[] data = null; try { final byte[] stringData = json.getBytes("UTF-8"); data = stringData; if (encType == EncodingType.GZIP) { data = GZIPUtils.gzipBytes(stringData); } logger.debug( "NumChars: " + json.length() + " UTF-8:" + stringData.length + " Gzip:" + data.length); } catch (final IOException e) { logger.error("Trigger encoding fails", e); throw new TriggerLoaderException("Error encoding the trigger " + t.toString(), e); } try { final int updates = this.dbOperator .update(UPDATE_TRIGGER, t.getSource(), t.getLastModifyTime(), encType.getNumVal(), data, t.getTriggerId()); if (updates == 0) { throw new TriggerLoaderException("No trigger has been updated."); } } catch (final SQLException ex) { logger.error("Updating Trigger " + t.getTriggerId() + " failed."); throw new TriggerLoaderException("DB Trigger update failed. ", ex); } }