public void saveChannelSettings(ChannelInfo channel) { Connection con = null; try { con = pool.getConnection(timeout); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); PreparedStatement s = con.prepareStatement( "UPDATE `channels` SET reactive_chatter_level = ?, chatter_name_multiplier = ?, random_chatter_level = ?, tweet_bucket_max = ?, " + "tweet_bucket_charge_rate = ?, auto_muzzle_wars = ?, velociraptor_sightings = ?, active_velociraptors = ?, dead_velociraptors = ?, killed_velociraptors = ?, last_sighting_date = ? WHERE channel = ?;"); s.setInt(1, channel.reactiveChatterLevel); s.setInt(2, channel.chatterNameMultiplier); s.setInt(3, channel.randomChatterLevel); s.setFloat(4, channel.tweetBucketMax); s.setFloat(5, channel.tweetBucketChargeRate); s.setBoolean(6, channel.auto_muzzle_wars); s.setInt(7, channel.velociraptorSightings); s.setInt(8, channel.activeVelociraptors); s.setInt(9, channel.deadVelociraptors); s.setInt(10, channel.killedVelociraptors); if (channel.lastSighting != null) { s.setString(11, sdf.format(channel.lastSighting)); } else { s.setString(11, "1999-01-01"); } s.setString(12, channel.channel); s.executeUpdate(); s = con.prepareStatement("DELETE FROM `channel_chatter_settings` WHERE `channel` = ?;"); s.setString(1, channel.channel); s.executeUpdate(); s = con.prepareStatement("DELETE FROM `channel_command_settings` WHERE `channel` = ?;"); s.setString(1, channel.channel); s.executeUpdate(); s = con.prepareStatement("DELETE FROM `channel_twitter_feeds` WHERE `channel` = ?;"); s.setString(1, channel.channel); s.executeUpdate(); s = con.prepareStatement( "INSERT INTO `channel_chatter_settings` SET `channel` = ?, `setting` = ?, `value` = ?;"); s.setString(1, channel.channel); for (Map.Entry<String, Boolean> setting : channel.chatter_enabled.entrySet()) { s.setString(2, setting.getKey()); s.setBoolean(3, setting.getValue()); s.executeUpdate(); } s = con.prepareStatement( "INSERT INTO `channel_command_settings` SET `channel` = ?, `setting` = ?, `value` = ?;"); s.setString(1, channel.channel); for (Map.Entry<String, Boolean> setting : channel.commands_enabled.entrySet()) { s.setString(2, setting.getKey()); s.setBoolean(3, setting.getValue()); s.executeUpdate(); } s = con.prepareStatement( "INSERT INTO `channel_twitter_feeds` SET `channel` = ?, `account` = ?;"); s.setString(1, channel.channel); for (String account : channel.twitter_accounts) { s.setString(2, account); s.executeUpdate(); } s.close(); } catch (SQLException ex) { Logger.getLogger(DBAccess.class.getName()).log(Level.SEVERE, null, ex); } finally { try { if (con != null) { con.close(); } } catch (SQLException ex) { Logger.getLogger(DBAccess.class.getName()).log(Level.SEVERE, null, ex); } } }