package games.strategy.triplea.ai.proAI.logging; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.logging.Level; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import games.strategy.debug.ClientLogger; import games.strategy.triplea.ai.proAI.ProAI; /** * Class to manage log settings. */ public class ProLogSettings implements Serializable { private static final long serialVersionUID = 2696071717784800413L; public boolean LimitLogHistory = true; public int LimitLogHistoryTo = 5; public boolean EnableAILogging = true; public Level AILoggingDepth = Level.FINEST; private static ProLogSettings s_lastSettings = null; private static String PROGRAM_SETTINGS = "Program Settings"; public static ProLogSettings loadSettings() { if (s_lastSettings == null) { ProLogSettings result = new ProLogSettings(); try { final byte[] pool = Preferences.userNodeForPackage(ProAI.class).getByteArray(PROGRAM_SETTINGS, null); if (pool != null) { result = (ProLogSettings) new ObjectInputStream(new ByteArrayInputStream(pool)).readObject(); } } catch (final Exception ex) { ClientLogger.logQuietly(ex); } if (result == null) { result = new ProLogSettings(); } s_lastSettings = result; return result; } else { return s_lastSettings; } } public static void saveSettings(final ProLogSettings settings) { s_lastSettings = settings; try (final ByteArrayOutputStream pool = new ByteArrayOutputStream(10000); ObjectOutputStream outputStream = new ObjectOutputStream(pool);) { outputStream.writeObject(settings); final Preferences prefs = Preferences.userNodeForPackage(ProAI.class); prefs.putByteArray(PROGRAM_SETTINGS, pool.toByteArray()); try { prefs.flush(); } catch (final BackingStoreException ex) { ClientLogger.logQuietly(ex); } } catch (final Exception ex) { ClientLogger.logQuietly(ex); } } }