Files
VisualSapfor/src/Common/MainModule_.java

115 lines
4.0 KiB
Java
Raw Normal View History

2024-10-14 12:24:59 +03:00
package Common;
2024-10-14 12:37:30 +03:00
import Common.Database.Objects.PassStats.PassStats;
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;
2024-10-14 12:34:36 +03:00
import Common.Visual.Windows.PassForm;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Visual.Menus.FastAccessMenuBar.FastAccessMenuBar;
2024-10-12 00:17:51 +03:00
import java.util.Comparator;
2024-10-12 00:17:51 +03:00
import java.util.LinkedHashMap;
import java.util.Vector;
2024-10-12 00:17:51 +03:00
//Основной объект визуализатора.
public abstract class MainModule_<D extends VisualiserDatabase> {
2024-10-14 12:54:52 +03:00
public static MainModule_ object = null; //текущий экземпляр. всегда один.
2024-10-14 01:31:33 +03:00
//--
2024-10-14 15:19:13 +03:00
public FastAccessMenuBar fastAccessMenuBar = null;
public PassForm passForm = null;
//--
D db;
Class<D> db_class;
2024-10-14 12:37:02 +03:00
LinkedHashMap<Current_, Object> objects; //Current
//--
LinkedHashMap<PassCode_, Pass> passes;
//--
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-14 01:31:33 +03:00
object = this;
System.out.println("main module created");
2024-10-12 00:17:51 +03:00
}
2024-10-14 12:37:02 +03:00
//БАЗА ДАННЫХ И ТЕКУЩИЕ ОБЪЕКТЫ
public D getDb() {
return db;
}
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();
}
2024-10-14 12:37:30 +03:00
public void DeactivateDB() throws Exception {
2024-10-12 00:17:51 +03:00
if (db != null) db.Disconnect();
}
public Object get(Current_ name) {
if (!objects.containsKey(name))
2024-10-14 12:37:30 +03:00
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();
}
public boolean matchCurrentID(Current_ name, int id) {
return (get(name) != null) && (((iDBObject) get(name)).id == id);
}
2024-10-14 12:37:02 +03:00
//ПРОХОДЫ
public abstract Class getPassCodesEnum();
public abstract String getAllPassesClassPrefix();
2024-10-14 12:37:30 +03:00
private void createPasses() {
passes = new LinkedHashMap<>();
for (Object code : getPassCodesEnum().getEnumConstants()) {
2024-10-14 12:37:02 +03:00
try {
Class<?> clazz = Class.forName(getAllPassesClassPrefix() + code.toString());
Pass pass = ((Pass) clazz.newInstance());
passes.put((PassCode_) code, pass);
} catch (Exception ex) {
2024-10-14 12:37:30 +03:00
ex.printStackTrace();
2024-10-14 12:37:02 +03:00
}
}
}
public void setPassesControlsVisible(boolean flag, PassCode_... codes_in) {
for (PassCode_ code_in : codes_in)
getPass(code_in).setControlsVisible(flag);
}
2024-10-14 12:37:30 +03:00
public Pass getPass(PassCode_ code) {
2024-10-14 12:37:02 +03:00
return passes.get(code);
}
2024-10-14 12:37:30 +03:00
public String getPassDescription(String passName) {
return ((PassCode_) Enum.valueOf(MainModule_.object.getPassCodesEnum(), passName)).getDescription();
2024-10-14 12:37:02 +03:00
}
2024-10-14 12:37:30 +03:00
public Vector<Pass> getFirstAccessPasses() {
Vector<PassStats> sortedStats = new Vector<>(getDb().passStats.Data.values());
sortedStats.sort(new Comparator<PassStats>() {
@Override
public int compare(PassStats o1, PassStats o2) {
return Integer.compare(o2.Usages, o1.Usages);
}
});
2024-10-14 12:37:30 +03:00
Vector<Pass> res = new Vector<>();
for (PassStats passStats : sortedStats) {
PassCode_ passCode = (PassCode_) Enum.valueOf(getPassCodesEnum(), passStats.code);
res.add(getPass(passCode));
}
return res;
}
2024-10-14 12:37:02 +03:00
//---
2024-10-12 00:17:51 +03:00
}