Mercurial Hosting > nabble
view src/nabble/model/SystemProperties.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line source
package nabble.model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; import java.util.TreeMap; /** * Holds a Map with strings. * Basically, this is used to persist keys and values used by the application. * The cache Map is just a copy of the system table in the database. * * @author Hugo Teixeira */ public class SystemProperties { private static final Logger logger = LoggerFactory.getLogger(SystemProperties.class); private static final Map<String, String> cache = new TreeMap<String, String>(); static { load(); } private static void load() { long start = System.currentTimeMillis(); try { Connection con = Db.dbGlobal().getConnection(); try { PreparedStatement stmt = con.prepareStatement("select * from system"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { String key = rs.getString("key_"); String value = rs.getString("value"); cache.put(key, value); } } finally { con.close(); } logger.info("System properties loaded in " + (System.currentTimeMillis() - start) + " ms"); } catch(SQLException e) { logger.error(SystemProperties.class.toString(), e); } } public static synchronized void set(String key, String value) { try { Connection con = Db.dbGlobal().getConnection(); try { if (cache.containsKey(key)) { PreparedStatement stmt = con.prepareStatement("update system set value=? where key_=?"); stmt.setString(1, value); stmt.setString(2, key); stmt.execute(); stmt.close(); } else { PreparedStatement stmt = con.prepareStatement("insert into system values (?,?)"); stmt.setString(1, key); stmt.setString(2, value); stmt.execute(); stmt.close(); } } finally { con.close(); } cache.put(key, value); logger.info("System Property added: " + key + " -- " + value); } catch(SQLException e) { throw new RuntimeException(e); } } public synchronized static String get(String key) { return cache.get(key); } public synchronized static int size() { return cache.size(); } public synchronized static void remove(String key) { try { String sql = "delete from system where key_='" + key + "';"; Connection con = Db.dbGlobal().getConnection(); try { PreparedStatement stmt = con.prepareStatement(sql); stmt.execute(); } finally { con.close(); } cache.remove(key); logger.info("System Properties -- Key Removed = " + key); } catch(SQLException e) { throw new RuntimeException(e); } } public synchronized static void clear() { try { String sql = "delete from system"; Connection con = Db.dbGlobal().getConnection(); try { PreparedStatement stmt = con.prepareStatement(sql); stmt.execute(); } finally { con.close(); } cache.clear(); logger.info("System Properties cleared"); } catch(SQLException e) { throw new RuntimeException(e); } } }