Files
VisualSapfor/src/MainModule_/MainModule_.java

85 lines
2.7 KiB
Java
Raw Normal View History

2024-10-12 00:17:51 +03:00
package MainModule_;
import Common.Current_;
import Common.Database.Objects.iDBObject;
2024-10-12 00:17:51 +03:00
import Common.Database.VisualiserDatabase;
import Common.Passes.Pass;
import Common.Passes.PassCode_;
import Common.Utils.TextLog;
import Common.Utils.Utils_;
2024-10-12 00:17:51 +03:00
import java.util.LinkedHashMap;
//Основной объект визуализатора.
public abstract class MainModule_<D extends VisualiserDatabase> {
D db;
Class<D> db_class;
LinkedHashMap<PassCode_, Pass> passes;
LinkedHashMap<Current_, Object> objects;
2024-10-12 00:17:51 +03:00
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!");
}
2024-10-12 00:17:51 +03:00
public MainModule_(Class<D> db_class_in) {
objects = new LinkedHashMap<>();
createPasses();
2024-10-12 00:17:51 +03:00
try {
db_class = db_class_in;
} catch (Exception ex) {
ex.printStackTrace();
}
//---
2024-10-12 00:17:51 +03:00
}
public abstract Class<? extends PassCode_> getPassCodesEnum();
2024-10-12 00:17:51 +03:00
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);
}
2024-10-12 00:17:51 +03:00
}