Make SettingsManager completely static

This commit is contained in:
Banks Troutman
2019-09-20 19:54:59 -04:00
parent d733995ac6
commit 096e214a8e
4 changed files with 47 additions and 61 deletions

View File

@@ -8,7 +8,7 @@ import com.chameleonvision.web.Server;
public class Main {
public static void main(String[] args) {
if (CameraManager.initializeCameras()) {
SettingsManager manager = SettingsManager.getInstance();
SettingsManager.intialize();
for (var camSet : CameraManager.getAllCamerasByName().entrySet()) {
new Thread(new CameraProcess(camSet.getValue())).start();
}

View File

@@ -14,69 +14,55 @@ import java.nio.file.Path;
import java.nio.file.Paths;
public class SettingsManager {
private static SettingsManager instance;
public static final Path SettingsPath = Paths.get(System.getProperty("user.dir"), "Settings");
public static com.chameleonvision.vision.GeneralSettings GeneralSettings;
// public static HashMap<String, String> CameraPorts = new HashMap<>();//TODO Implement ports
private SettingsManager() {
InitiateGeneralSettings();
private SettingsManager() {}
var allCameras = CameraManager.getAllCamerasByName();
if (!allCameras.containsKey(GeneralSettings.curr_camera) && allCameras.size() > 0) {
var cam = allCameras.entrySet().stream().findFirst().get().getValue();
GeneralSettings.curr_camera = cam.name;
GeneralSettings.curr_pipeline = cam.getCurrentPipelineIndex();
}
}
public static void intialize() {
initGeneralSettings();
public static synchronized SettingsManager getInstance() {
if (instance == null) {
synchronized (SettingsManager.class) {
if (instance == null) {
instance = new SettingsManager();
}
}
}
return instance;
}
var allCameras = CameraManager.getAllCamerasByName();
if (!allCameras.containsKey(GeneralSettings.curr_camera) && allCameras.size() > 0) {
var cam = allCameras.entrySet().stream().findFirst().get().getValue();
GeneralSettings.curr_camera = cam.name;
GeneralSettings.curr_pipeline = cam.getCurrentPipelineIndex();
}
}
public static com.chameleonvision.vision.GeneralSettings GeneralSettings;
// public static HashMap<String, String> CameraPorts = new HashMap<>();//TODO Implement ports
public static final Path SettingsPath = Paths.get(System.getProperty("user.dir"), "Settings");
private static void initGeneralSettings() {
FileHelper.CheckPath(SettingsPath);
try {
GeneralSettings = new Gson().fromJson(new FileReader(Paths.get(SettingsPath.toString(), "Settings.json").toString()), com.chameleonvision.vision.GeneralSettings.class);
} catch (FileNotFoundException e) {
GeneralSettings = new GeneralSettings();
}
}
public static void updateCameraSetting(String cameraName, int pipelineNumber) {
GeneralSettings.curr_camera = cameraName;
GeneralSettings.curr_pipeline = pipelineNumber;
}
private void InitiateGeneralSettings() {
FileHelper.CheckPath(SettingsPath);
try {
GeneralSettings = new Gson().fromJson(new FileReader(Paths.get(SettingsPath.toString(), "Settings.json").toString()), com.chameleonvision.vision.GeneralSettings.class);
} catch (FileNotFoundException e) {
GeneralSettings = new GeneralSettings();
}
}
public static void updatePipelineSetting(int pipelineNumber) {
GeneralSettings.curr_pipeline = pipelineNumber;
}
//Access Methods
public void updateCameraSetting(String cameraName, int pipelineNumber) {
GeneralSettings.curr_camera = cameraName;
GeneralSettings.curr_pipeline = pipelineNumber;
}
public static void saveSettings() {
CameraManager.saveCameras();
saveGeneralSettings();
}
public void updatePipelineSetting(int pipelineNumber){
GeneralSettings.curr_pipeline = pipelineNumber;
}
//Savers
public void SaveSettings() {
CameraManager.saveCameras();
SaveGeneralSettings();
}
private void SaveGeneralSettings() {
try {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter writer = new FileWriter(Paths.get(SettingsPath.toString(), "settings.json").toString());
gson.toJson(GeneralSettings, writer);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void saveGeneralSettings() {
try {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter writer = new FileWriter(Paths.get(SettingsPath.toString(), "settings.json").toString());
gson.toJson(GeneralSettings, writer);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@@ -79,7 +79,7 @@ public class CameraManager {
public static void setCurrentCamera(String cameraName) throws CameraException {
if (!AllCamerasByName.containsKey(cameraName)) throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA);
SettingsManager.GeneralSettings.curr_camera = cameraName;
SettingsManager.getInstance().updateCameraSetting(cameraName, getCurrentCamera().getCurrentPipelineIndex());
SettingsManager.updateCameraSetting(cameraName, getCurrentCamera().getCurrentPipelineIndex());
}
public static Camera getCurrentCamera() throws CameraException {
@@ -92,7 +92,7 @@ public class CameraManager {
public static void setCurrentPipeline(int pipelineNumber) throws CameraException {
if (!getCurrentCamera().getPipelines().containsKey(pipelineNumber)) throw new CameraException(CameraException.CameraExceptionType.BAD_PIPELINE);
getCurrentCamera().setCurrentPipelineIndex(pipelineNumber);
SettingsManager.getInstance().updatePipelineSetting(pipelineNumber);
SettingsManager.updatePipelineSetting(pipelineNumber);
}
public static Pipeline getCurrentPipeline() throws CameraException {

View File

@@ -30,7 +30,7 @@ public class Server {
ws.onClose(ctx -> {
users.remove(ctx);
System.out.println("Socket Disconnected");
SettingsManager.getInstance().SaveSettings();
SettingsManager.saveSettings();
});
ws.onMessage(ctx -> {
broadcastMessage(ctx.message(), ctx);