package games.strategy.engine.lobby.server.userDB; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * Utilitiy class to create/read/delete bad words (there is no update). */ public class BadWordController { private static final Logger s_logger = Logger.getLogger(BadWordController.class.getName()); public void addBadWord(final String word) { s_logger.fine("Adding bad word word:" + word); final Connection con = Database.getConnection(); try { final PreparedStatement ps = con.prepareStatement("insert into bad_words (word) values (?)"); ps.setString(1, word); ps.execute(); ps.close(); con.commit(); } catch (final SQLException sqle) { if (sqle.getErrorCode() == 30000) { // this is ok // the word is bad as expected s_logger.info("Tried to create duplicate banned word:" + word + " error:" + sqle.getMessage()); return; } s_logger.log(Level.SEVERE, "Error inserting banned word:" + word, sqle); throw new IllegalStateException(sqle.getMessage()); } finally { DbUtil.closeConnection(con); } } public void removeBannedWord(final String word) { s_logger.fine("Removing banned word:" + word); final Connection con = Database.getConnection(); try { final PreparedStatement ps = con.prepareStatement("delete from bad_words where word = ?"); ps.setString(1, word); ps.execute(); ps.close(); con.commit(); } catch (final SQLException sqle) { s_logger.log(Level.SEVERE, "Error deleting banned word:" + word, sqle); throw new IllegalStateException(sqle.getMessage()); } finally { DbUtil.closeConnection(con); } } public List<String> list() { final String sql = "select word from bad_words"; final Connection con = Database.getConnection(); try { final PreparedStatement ps = con.prepareStatement(sql); final ResultSet rs = ps.executeQuery(); final List<String> rVal = new ArrayList<>(); while (rs.next()) { rVal.add(rs.getString(1)); } rs.close(); ps.close(); return rVal; } catch (final SQLException sqle) { s_logger.info("Error reading bad words error:" + sqle.getMessage()); throw new IllegalStateException(sqle.getMessage()); } finally { DbUtil.closeConnection(con); } } }