package utils; import dbProcs.Getter; import dbProcs.Setter; import java.sql.SQLException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** * Class that holds the status of the avilablility of the Cheat Sheet functionality
*
* This file is part of the Security Shepherd Project. * *

The Security Shepherd project is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software Foundation, either * version 3 of the License, or (at your option) any later version.
* *

The Security Shepherd project is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details.
* *

You should have received a copy of the GNU General Public License along with the Security * Shepherd project. If not, see . * * @author Mark Denihan */ public class CheatSheetStatus { private static final Logger log = LogManager.getLogger(CheatSheetStatus.class); private static boolean adminEnabled = false; private static boolean playerEnabled = false; private static boolean isLoaded = false; public static void disableForAll() { if (!isLoaded) { loadCheatStatus(); } adminEnabled = false; playerEnabled = false; saveCheatStatus(); } public static void enableForAdminsOnly() { if (!isLoaded) { loadCheatStatus(); } playerEnabled = false; adminEnabled = true; saveCheatStatus(); } public static void enableForAll() { if (!isLoaded) { loadCheatStatus(); } adminEnabled = true; playerEnabled = true; saveCheatStatus(); } public static boolean getStatusForAll() { if (!isLoaded) { loadCheatStatus(); } return adminEnabled && playerEnabled; } public static boolean isEnabledForAdminsOnly() { if (!isLoaded) { loadCheatStatus(); } return !playerEnabled && adminEnabled; } public static boolean isEnabledForPlayers() { if (!isLoaded) { loadCheatStatus(); } return playerEnabled; } public static boolean isEnabledAtAll() { if (!isLoaded) { loadCheatStatus(); } return adminEnabled || playerEnabled; } /** * Returns boolean to tell view's whether Cheat Sheets are available for a specific user role or * not * * @param userRole * @return */ public static boolean showCheat(String userRole) { boolean show = false; if (isEnabledAtAll()) { if (isEnabledForPlayers()) { show = true; } else { if (isEnabledForAdminsOnly() && userRole.compareTo("admin") == 0) { show = true; } } } return show; } private static void saveCheatStatus() { try { Setter.setAdminCheatStatus("", adminEnabled); Setter.setPlayerCheatStatus("", playerEnabled); } catch (SQLException e) { log.fatal("Could not save cheat sheet status in database: " + e.toString()); throw new RuntimeException(e); } } private static void loadCheatStatus() { try { adminEnabled = Getter.getAdminCheatStatus(""); playerEnabled = Getter.getPlayerCheatStatus(""); } catch (SQLException e) { log.fatal("Could not save cheat sheet status in database: " + e.toString()); throw new RuntimeException(e); } isLoaded = true; } }