package utils;
import dbProcs.Getter;
import dbProcs.Setter;
import java.sql.SQLException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* This class Determines how the users are presented with the modules. By default this method sets
* the floor plan to CTF mode
*
* 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 ModulePlan {
private static final Logger log = LogManager.getLogger(ModulePlan.class);
private static boolean openFloor = false;
private static boolean incrementalFloor = true;
private static boolean tournamentFloor = false;
private static boolean isLoaded = false;
public static boolean isIncrementalFloor() {
if (!isLoaded) {
loadModuleLayout();
}
return incrementalFloor;
}
public static boolean isOpenFloor() {
if (!isLoaded) {
loadModuleLayout();
}
return openFloor;
}
public static boolean isTournamentFloor() {
if (!isLoaded) {
loadModuleLayout();
}
;
return tournamentFloor;
}
public static void setIncrementalFloor() {
if (!isLoaded) {
loadModuleLayout();
}
openFloor = false;
incrementalFloor = true;
tournamentFloor = false;
saveModuleLayout();
}
public static void setOpenFloor() {
if (!isLoaded) {
loadModuleLayout();
}
openFloor = true;
incrementalFloor = false;
tournamentFloor = false;
saveModuleLayout();
}
public static void setTournamentFloor() {
if (!isLoaded) {
loadModuleLayout();
}
openFloor = false;
incrementalFloor = false;
tournamentFloor = true;
saveModuleLayout();
}
public static String currentMode() {
String result = new String();
if (!isLoaded) {
loadModuleLayout();
}
if (openFloor) {
result = "Open Floor";
} else if (incrementalFloor) {
result = "CTF";
} else {
result = "Tournament";
}
return result;
}
private static void saveModuleLayout() {
try {
if (openFloor) {
Setter.setModuleLayout("", "open");
} else if (incrementalFloor) {
Setter.setModuleLayout("", "ctf");
} else if (tournamentFloor) {
Setter.setModuleLayout("", "tournament");
} else {
String message = "No module layouts enabled!";
log.fatal(message);
throw new RuntimeException(message);
}
} catch (SQLException e) {
log.fatal("Could not save module plan setting in database: " + e.toString());
throw new RuntimeException(e);
}
}
private static void loadModuleLayout() {
String theModuleLayout = "";
try {
theModuleLayout = Getter.getModuleLayout("");
} catch (SQLException e) {
log.fatal("Could not load module plan setting from database: " + e.toString());
throw new RuntimeException(e);
}
if (theModuleLayout.equals("open")) {
openFloor = true;
incrementalFloor = false;
tournamentFloor = true;
} else if (theModuleLayout.equals("ctf")) {
openFloor = false;
incrementalFloor = true;
tournamentFloor = false;
} else if (theModuleLayout.equals("tournament")) {
openFloor = false;
incrementalFloor = false;
tournamentFloor = true;
} else {
String message = "Invalid module layout loaded from database: " + theModuleLayout;
log.fatal(message);
throw new RuntimeException(message);
}
isLoaded = true;
}
}