промежуточный. частичный рефакторинг с прицелом на библиотечную часть
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
package Common.Database;
|
||||
import Common.UI.Menus_2023.StableMenuItem;
|
||||
import Common.Utils.Utils;
|
||||
|
||||
import javax.swing.*;
|
||||
//одиночный фильтр, пункт фильтрационного меню.
|
||||
public abstract class DBObjectFilter<D extends DBObject> {
|
||||
public JMenuItem menuItem; //пункт меню фильтра. ( возможно потом сделать и кнопку)
|
||||
//--
|
||||
String description;
|
||||
boolean active = true; //включен ли фильтр
|
||||
int count = 0;
|
||||
//--
|
||||
static String getNotActiveIconPath() {
|
||||
return "/icons/NotPick.png";
|
||||
}
|
||||
static String getActiveIconPath() {
|
||||
return "/icons/Pick.png";
|
||||
}
|
||||
void Mark() {
|
||||
menuItem.setIcon(Utils.getIcon(active ? getActiveIconPath() : getNotActiveIconPath()));
|
||||
}
|
||||
//-------
|
||||
public boolean Validate(D object) {
|
||||
boolean valid = validate(object);
|
||||
if (valid)
|
||||
count++;
|
||||
return valid & active;
|
||||
}
|
||||
public DBObjectFilter(DataSet dataSet, String description_in, boolean active_in) {
|
||||
menuItem = new StableMenuItem((description = description_in) + " (0)");
|
||||
active = active_in;
|
||||
menuItem.addActionListener(e -> {
|
||||
active = !active;
|
||||
Mark();
|
||||
dataSet.ShowUI();
|
||||
});
|
||||
Mark();
|
||||
}
|
||||
public DBObjectFilter(DataSet dataSet, String description_in) {
|
||||
this(dataSet, description_in, true);
|
||||
}
|
||||
public void setActive(boolean flag) {
|
||||
active = flag;
|
||||
Mark();
|
||||
}
|
||||
//--
|
||||
protected abstract boolean validate(D object);
|
||||
//--
|
||||
public void Drop() {
|
||||
count = 0;
|
||||
}
|
||||
public void Refresh() {
|
||||
menuItem.setText(description + " " + Utils.RBrackets(count));
|
||||
}
|
||||
public boolean isActive() {
|
||||
return active;
|
||||
}
|
||||
//--
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
package Common.Database;
|
||||
import Common.UI.Menus_2023.StableMenuItem;
|
||||
import Common.UI.Menus_2023.VisualiserMenu;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Vector;
|
||||
public abstract class DataSetFilter<D extends DBObject> {
|
||||
public VisualiserMenu menu;
|
||||
//--
|
||||
protected DataSet<?, D> dataSet;
|
||||
//--
|
||||
//JMenuItem bSelectAll;
|
||||
//JMenuItem bUnSelectAll;
|
||||
//--
|
||||
protected Vector<DBObjectFilter<D>> field_filters;
|
||||
public DataSetFilter(String name, DataSet dataSet_in) {
|
||||
dataSet = dataSet_in;
|
||||
menu = new VisualiserMenu(name, "/icons/Filter.png", true);
|
||||
field_filters = new Vector<>();
|
||||
fill();
|
||||
//-
|
||||
for (DBObjectFilter<D> filter : field_filters)
|
||||
menu.add(filter.menuItem);
|
||||
menu.addSeparator();
|
||||
menu.add(new StableMenuItem("Выбрать всё", "/icons/SelectAll.png") {
|
||||
{
|
||||
addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
selectAll(true);
|
||||
dataSet.ShowUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
menu.add(new StableMenuItem("Отменить всё", "/icons/UnselectAll.png") {
|
||||
{
|
||||
addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
selectAll(false);
|
||||
dataSet.ShowUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
void selectAll(boolean flag) {
|
||||
for (DBObjectFilter filter : field_filters)
|
||||
filter.setActive(flag);
|
||||
}
|
||||
public abstract void fill();
|
||||
public void Drop() {
|
||||
for (DBObjectFilter<D> filter : field_filters)
|
||||
filter.Drop();
|
||||
}
|
||||
public void Refresh() {
|
||||
for (DBObjectFilter<D> filter : field_filters)
|
||||
filter.Refresh();
|
||||
}
|
||||
public boolean isActive() {
|
||||
for (DBObjectFilter<D> filter : field_filters) {
|
||||
if (filter.isActive())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public boolean Validate(D object) {
|
||||
if (!isActive()) {
|
||||
//считаем без учета результатов
|
||||
for (DBObjectFilter<D> filter : field_filters)
|
||||
filter.Validate(object);
|
||||
return true;
|
||||
}
|
||||
boolean res = false;
|
||||
for (DBObjectFilter<D> filter : field_filters)
|
||||
if (filter.Validate(object))
|
||||
res |= true;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package Common.Database;
|
||||
import Common.Constants;
|
||||
import Common.Global;
|
||||
import Common.Utils.Utils;
|
||||
import Common_old.Constants;
|
||||
import Common.Database.Tables.DBTable;
|
||||
import _VisualDVM.Global;
|
||||
import Common_old.Utils.Utils;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Tables.DataSet;
|
||||
import Common.Database.Objects.iDBObject;
|
||||
import Repository.RepositoryRefuseException;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package Common.Database;
|
||||
import Common.UI.Selectable;
|
||||
package Common.Database.Objects;
|
||||
import Common_old.UI.Selectable;
|
||||
import Common.Utils.Index;
|
||||
import Common.Utils.Utils;
|
||||
import Common_old.Utils.Utils;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -39,8 +39,6 @@ public abstract class DBObject implements Selectable, Serializable {
|
||||
public String getDialogName() {
|
||||
return getPK().toString();
|
||||
}
|
||||
//статус. например завершенность багрепорта или состояние задачи на запуск. как правило обладает цветным шрифтом.
|
||||
//как объект будут называть по внешним ключам.
|
||||
public String getFKName() {
|
||||
return getClass().getSimpleName().toLowerCase() + "_id";
|
||||
}
|
||||
@@ -61,5 +59,4 @@ public abstract class DBObject implements Selectable, Serializable {
|
||||
this.SynchronizeFields(src);
|
||||
}
|
||||
//---------
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
package Common.Database;
|
||||
import Common.Constants;
|
||||
package Common.Database.Objects;
|
||||
import Common_old.Constants;
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
//автоинкрементальный ключ
|
||||
@@ -1,5 +1,5 @@
|
||||
package Common.Database;
|
||||
import Common.Utils.Utils;
|
||||
package Common.Database.Objects;
|
||||
import Common_old.Utils.Utils;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
public abstract class nDBObject extends DBObject {
|
||||
@Description("PRIMARY KEY, UNIQUE")
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Objects;
|
||||
import java.util.Date;
|
||||
//объект репозитория. ключ имя, и есть данные отправителя.
|
||||
public class rDBObject extends nDBObject {
|
||||
@@ -1,5 +1,5 @@
|
||||
package Common.Database;
|
||||
public class riDBObject extends iDBObject{
|
||||
package Common.Database.Objects;
|
||||
public class riDBObject extends iDBObject {
|
||||
//-
|
||||
public String sender_name = "";
|
||||
public String sender_address = "";
|
||||
@@ -1,10 +1,10 @@
|
||||
package Common.Database.SQLITE;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Database.DBTable;
|
||||
import Common.Database.DBTableColumn;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Tables.DBTable;
|
||||
import Common.Database.Tables.DBTableColumn;
|
||||
import Common.Database.Database;
|
||||
import Common.UI.UI;
|
||||
import Common.Utils.Utils;
|
||||
import Common_old.UI.UI;
|
||||
import Common_old.Utils.Utils;
|
||||
import Visual_DVM_2021.Passes.PassException;
|
||||
import javafx.util.Pair;
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.sql.*;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
|
||||
import static Common.Utils.Utils.requireNonNullElse;
|
||||
import static Common_old.Utils.Utils.requireNonNullElse;
|
||||
public abstract class SQLiteDatabase extends Database {
|
||||
protected Connection conn = null;
|
||||
protected Statement statement = null;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
public enum ColumnType {
|
||||
UNDEFINED,
|
||||
INT,
|
||||
@@ -1,4 +1,7 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
import Common.Database.Database;
|
||||
import Common.Database.Objects.DBObject;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
public abstract class DBTable<K, D extends DBObject> extends DataSet<K, D> {
|
||||
//-
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
@@ -1,12 +1,15 @@
|
||||
package Common.Database;
|
||||
import Common.Current;
|
||||
import Common.UI.DataSetControlForm;
|
||||
import Common.UI.Menus_2023.DataMenuBar;
|
||||
import Common.UI.Tables.ColumnFilter;
|
||||
import Common.UI.UI;
|
||||
import Common.UI.Windows.Dialog.DBObjectDialog;
|
||||
import Common.UI.Windows.Dialog.DialogFields;
|
||||
package Common.Database.Tables;
|
||||
import Common_old.Current;
|
||||
import Common.Visual.DataSetFilter;
|
||||
import Common_old.UI.DataSetControlForm;
|
||||
import Common_old.UI.Menus_2023.DataMenuBar;
|
||||
import Common_old.UI.Tables.ColumnFilter;
|
||||
import Common_old.UI.UI;
|
||||
import Common_old.UI.Windows.Dialog.DBObjectDialog;
|
||||
import Common_old.UI.Windows.Dialog.DialogFields;
|
||||
import Common.Utils.TextLog;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Visual.CommonUI;
|
||||
import Visual_DVM_2021.UI.Interface.FilterWindow;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -44,10 +47,10 @@ public class DataSet<K, D extends DBObject> extends DataSetAnchestor {
|
||||
ui_ = createUI();
|
||||
ui_.setContent(content_in);
|
||||
//-->
|
||||
if (UI.menuBars.containsKey(getClass())) {
|
||||
DataMenuBar bar = UI.menuBars.get(getClass());
|
||||
if ( CommonUI.menuBars.containsKey(getClass())) {
|
||||
DataMenuBar bar = CommonUI.menuBars.get(getClass());
|
||||
content_in.add(bar, BorderLayout.NORTH);
|
||||
setFilterUI(count -> UI.menuBars.get(getClass()).countLabel.setText(String.valueOf(count)));
|
||||
setFilterUI(count -> CommonUI.menuBars.get(getClass()).countLabel.setText(String.valueOf(count)));
|
||||
if (ui_.hasCheckBox())
|
||||
bar.createSelectionButtons(this);
|
||||
}
|
||||
@@ -55,7 +58,7 @@ public class DataSet<K, D extends DBObject> extends DataSetAnchestor {
|
||||
//----
|
||||
createFilters();
|
||||
if (!filters.isEmpty()) {
|
||||
DataMenuBar menuBar = UI.menuBars.get(getClass());
|
||||
DataMenuBar menuBar = CommonUI.menuBars.get(getClass());
|
||||
for (DataSetFilter<D> filter : filters)
|
||||
menuBar.addMenus(filter.menu);
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
import Common.Database.Objects.DBObject;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
public abstract class DataSetAnchestor {
|
||||
//чтобы обмануть стирание типов во всех параметризованных полях. используется не во всех потомках.
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
public class FKBehaviour {
|
||||
public FKDataBehaviour data; //поведение данных внешнего ключа при удалении/модификации
|
||||
public FKCurrentObjectBehaviuor ui; //поведение интерфейсов таблиц внешнего ключа при показе текущего объекта.
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
public enum FKCurrentObjectBehaviuor {
|
||||
PASSIVE,
|
||||
ACTIVE
|
||||
@@ -1,4 +1,4 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
//поведение таблиц имеющих внешние ключи
|
||||
public enum FKDataBehaviour {
|
||||
NONE,
|
||||
@@ -1,4 +1,5 @@
|
||||
package Common.Database;
|
||||
package Common.Database.Tables;
|
||||
import Common.Database.Objects.iDBObject;
|
||||
public abstract class iDBTable<D extends iDBObject> extends DBTable<Integer, D> {
|
||||
public iDBTable(Class<D> d_in) {
|
||||
super(Integer.class, d_in);
|
||||
Reference in New Issue
Block a user