All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xresch.cfw.extensions.databases.mssql.MSSQLEnvironmentManagement Maven / Gradle / Ivy

package com.xresch.cfw.extensions.databases.mssql;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Logger;

import com.xresch.cfw._main.CFW;
import com.xresch.cfw.db.DBInterface;
import com.xresch.cfw.features.contextsettings.AbstractContextSettings;
import com.xresch.cfw.features.contextsettings.ContextSettingsChangeListener;
import com.xresch.cfw.logging.CFWLog;

public class MSSQLEnvironmentManagement {
	private static Logger logger = CFWLog.getLogger(MSSQLEnvironmentManagement.class.getName());
	
	private static boolean isInitialized = false;
	
	// Contains ContextSettings id and the associated database interface
	private static HashMap environmentsWithDB = new HashMap();
	

	private MSSQLEnvironmentManagement() {
		//hide public constructor
	}
	public static void initialize() {
		
		ContextSettingsChangeListener listener = 
				new ContextSettingsChangeListener(MSSQLEnvironment.SETTINGS_TYPE) {
			
			@Override
			public void onChange(AbstractContextSettings setting, boolean isNew) {
				MSSQLEnvironment env = (MSSQLEnvironment)setting;
				MSSQLEnvironmentManagement.createEnvironment(env);
			}

			@Override
			public void onDeleteOrDeactivate(AbstractContextSettings typeSettings) {
				environmentsWithDB.remove(typeSettings.getDefaultObject().id());
			}
		};
		
		CFW.DB.ContextSettings.addChangeListener(listener);
		
		createEnvironments();
		isInitialized = true;
	}
	
	private static void createEnvironments() {
		// Clear environments
		environmentsWithDB = new HashMap();
		
		ArrayList settingsArray = CFW.DB.ContextSettings.getContextSettingsForType(MSSQLEnvironment.SETTINGS_TYPE, true);

		for(AbstractContextSettings settings : settingsArray) {
			MSSQLEnvironment current = (MSSQLEnvironment)settings;
			createEnvironment(current);
			
		}
	}
	
	private static void createEnvironment(MSSQLEnvironment environment) {

		Integer id = environment.getDefaultObject().id();
		environmentsWithDB.remove(id);
		
		if(environment.isDBDefined()) {
			DBInterface db = DBInterface.createDBInterfaceMSSQL(
					id+"-"+environment.getDefaultObject().name(),
					environment.dbHost(), 
					environment.dbPort(), 
					environment.dbName(), 
					environment.dbUser(), 
					environment.dbPassword()
			);
			
			environment.setDBInstance(db);
			environmentsWithDB.put(environment.getDefaultObject().id(), environment);
		}
	}
	
	
	public static MSSQLEnvironment getEnvironment(int id) {
		if(!isInitialized) { initialize(); }
		return environmentsWithDB.get(id);
	}
	
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy