package MainModule_; import Common.Current_; import Common.Database.Objects.iDBObject; import Common.Database.VisualiserDatabase; import Common.Passes.Pass; import Common.Passes.PassCode_; import Common.Utils.TextLog; import Common.Utils.Utils_; import java.util.LinkedHashMap; //Основной объект визуализатора. public abstract class MainModule_ { D db; Class db_class; LinkedHashMap passes; LinkedHashMap objects; public D getDb() { return db; } private void createPasses(){ passes= new LinkedHashMap<>(); for (Object code: getPassCodesEnum().getEnumConstants()){ try { Class clazz = Class.forName("Visual_DVM_2021.Passes.All." + code.toString()); Pass pass = ((Pass) clazz.newInstance()); passes.put((PassCode_) code, pass); //-- if (pass.hasStats()) Pass.FAPasses.add(pass); //-- } catch (Exception ex) { ex.printStackTrace(); } } System.out.println("Passes created!"); } public MainModule_(Class db_class_in) { objects = new LinkedHashMap<>(); createPasses(); try { db_class = db_class_in; } catch (Exception ex) { ex.printStackTrace(); } //--- } public abstract Class getPassCodesEnum(); public void ActivateDB() throws Exception { db = db_class.newInstance(); db.Connect(); db.CreateAllTables(); db.prepareTablesStatements(); db.Synchronize(); } public void DeactivateDB() throws Exception{ if (db != null) db.Disconnect(); } //-- public Object get(Current_ name) { if (!objects.containsKey(name)) objects.put(name,null); return objects.get(name); } public Object set(Current_ name, Object object) { if (objects.containsKey(name)) objects.replace(name, object); else objects.put(name, object); return object; } public boolean Check(TextLog Log, Current_... names) { for (Current_ name : names) if (get(name) == null) Log.Writeln_(name.getDescription() + " не выбран(а)"); return Log.isEmpty(); } //применять только для наследников iDBObject public boolean matchCurrentID(Current_ name, int id) { return (get(name) != null) && (((iDBObject) get(name)).id == id); } public Pass getPass(PassCode_ code){ return passes.get(code); } }