рефактиринг фильтров завершен.
This commit is contained in:
2023-12-26 20:37:20 +03:00
parent b21e25e932
commit 64073e8b15
7 changed files with 50 additions and 142 deletions

View File

@@ -1,5 +1,4 @@
package Common.Database;
import Common.UI.Menus.VisualiserMenuItem;
import Common.UI.Menus_2023.StableMenuItem;
import Common.UI.Menus_2023.VisualiserMenu;
@@ -14,14 +13,14 @@ public abstract class DataSetFilter<D extends DBObject> {
//JMenuItem bSelectAll;
//JMenuItem bUnSelectAll;
//--
protected Vector<DBObjectFilter<D>> filters;
protected Vector<DBObjectFilter<D>> field_filters;
public DataSetFilter(String name, DataSet dataSet_in) {
dataSet = dataSet_in;
menu = new VisualiserMenu(name, "/icons/Filter.png", true);
filters = new Vector<>();
field_filters = new Vector<>();
fill();
//-
for (DBObjectFilter<D> filter : filters)
for (DBObjectFilter<D> filter : field_filters)
menu.add(filter.menuItem);
menu.addSeparator();
menu.add(new StableMenuItem("Выбрать всё", "/icons/SelectAll.png") {
@@ -48,20 +47,20 @@ public abstract class DataSetFilter<D extends DBObject> {
});
}
void selectAll(boolean flag) {
for (DBObjectFilter filter : filters)
for (DBObjectFilter filter : field_filters)
filter.setActive(flag);
}
public abstract void fill();
public void Drop() {
for (DBObjectFilter<D> filter : filters)
for (DBObjectFilter<D> filter : field_filters)
filter.Drop();
}
public void Refresh() {
for (DBObjectFilter<D> filter : filters)
for (DBObjectFilter<D> filter : field_filters)
filter.Refresh();
}
public boolean isActive() {
for (DBObjectFilter<D> filter : filters) {
for (DBObjectFilter<D> filter : field_filters) {
if (filter.isActive())
return true;
}
@@ -70,12 +69,12 @@ public abstract class DataSetFilter<D extends DBObject> {
public boolean Validate(D object) {
if (!isActive()) {
//считаем без учета результатов
for (DBObjectFilter<D> filter : filters)
for (DBObjectFilter<D> filter : field_filters)
filter.Validate(object);
return true;
}
boolean res = false;
for (DBObjectFilter<D> filter : filters)
for (DBObjectFilter<D> filter : field_filters)
if (filter.Validate(object))
res |= true;
return res;

View File

@@ -62,7 +62,7 @@ public class Visualiser extends Component {
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override
public void GetVersionInfo() {
version = 1058;
version = 1059;
String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime());

View File

@@ -2,7 +2,6 @@ package TestingSystem.Common.Group;
import Common.Current;
import Common.Database.*;
import Common.UI.DataSetControlForm;
import Common.UI.Menus_2023.DataMenuBar;
import Common.UI.UI;
import Common.UI.Windows.Dialog.DBObjectDialog;
import ProjectData.LanguageName;
@@ -10,9 +9,7 @@ import TestingSystem.Common.Group.UI.GroupFields;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.Test.TestType;
import javax.swing.*;
import java.util.LinkedHashMap;
import java.util.Vector;
//-
public class GroupsDBTable extends iDBTable<Group> {
public static boolean filterMyOnly = false;
@@ -26,7 +23,7 @@ public class GroupsDBTable extends iDBTable<Group> {
@Override
public void fill() {
for (TestType type : TestType.values())
filters.add(new DBObjectFilter<Group>(dataSet, type.getDescription()) {
field_filters.add(new DBObjectFilter<Group>(dataSet, type.getDescription()) {
@Override
protected boolean validate(Group object) {
return object.type.equals(type);
@@ -38,7 +35,7 @@ public class GroupsDBTable extends iDBTable<Group> {
@Override
public void fill() {
for (LanguageName languageName : LanguageName.values()) {
filters.add(new DBObjectFilter<Group>(dataSet, languageName.getDescription()) {
field_filters.add(new DBObjectFilter<Group>(dataSet, languageName.getDescription()) {
@Override
protected boolean validate(Group object) {
return object.language.equals(languageName);

View File

@@ -35,18 +35,4 @@ public class GroupsMenuBar extends DataMenuBar {
}
});
}
/*
public void addFilters(JMenu typesFilterMenu, JMenu languagesFilterMenu) {
filters = addMenus(typesFilterMenu, languagesFilterMenu);
}
JMenuBar filters= null;
public void DropFilters() {
if (filters != null) {
remove(filters);
filters = null;
}
revalidate();
repaint();
}
*/
}

View File

@@ -5,18 +5,6 @@ import Visual_DVM_2021.Passes.PassCode_2021;
import javax.swing.*;
public class DVMRunTasksBar extends DataMenuBar {
JMenuBar filters= null;
public void DropFilters() {
if (filters != null) {
remove(filters);
filters = null;
}
revalidate();
repaint();
}
public void addFilters(JMenu cFilterMenu, JMenu rFilterMenu) {
filters= addMenus(cFilterMenu, rFilterMenu);
}
public DVMRunTasksBar() {
super("задачи", PassCode_2021.DownloadTaskTest);
}

View File

@@ -1,116 +1,52 @@
package TestingSystem.DVM.DVMTasks;
import Common.Current;
import Common.Database.DataSet;
import Common.Database.DBObjectFilter;
import Common.Database.DataSet;
import Common.Database.DataSetFilter;
import Common.UI.DataSetControlForm;
import Common.UI.Menus_2023.VisualiserMenu;
import Common.UI.UI;
import GlobalData.Tasks.TaskState;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import javax.swing.*;
import java.util.Vector;
import static Common.UI.Tables.TableRenderers.RendererProgress;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> {
//todo обобщить бы наличие фильтров для всех таблиц.
public Vector<DBObjectFilter<DVMRunTask>> compilationFilters;
public Vector<DBObjectFilter<DVMRunTask>> runFilters;
DVMPackage target;
@Override
protected void createFilters() {
filters.add(new DataSetFilter<DVMRunTask>("Компиляция", this) {
@Override
public void fill() {
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
field_filters.add(new DBObjectFilter<DVMRunTask>(dataSet, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.compilation_state.equals(state);
}
});
}
}
}
});
filters.add(new DataSetFilter<DVMRunTask>("Запуск", this) {
@Override
public void fill() {
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
field_filters.add(new DBObjectFilter<DVMRunTask>(dataSet, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.state.equals(state);
}
});
}
}
}
});
}
public DVMRunTasksSet() {
super(Integer.class, DVMRunTask.class);
//todo обобщить бы наличие фильтров для всех таблиц.
if (Current.hasUI()) {
compilationFilters = new Vector<>();
runFilters = new Vector<>();
//--
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
compilationFilters.add(new DBObjectFilter<DVMRunTask>(this, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.compilation_state.equals(state);
}
});
}
}
//--
for (TaskState state : TaskState.values()) {
if (state.isVisible()) {
runFilters.add(new DBObjectFilter<DVMRunTask>(this, state.getDescription()) {
@Override
protected boolean validate(DVMRunTask object) {
return object.state.equals(state);
}
});
}
}
}
}
public void ResetFiltersCount() {
for (DBObjectFilter<DVMRunTask> filter : compilationFilters)
filter.Drop();
for (DBObjectFilter<DVMRunTask> filter : runFilters)
filter.Drop();
}
public void ShowFiltersCount() {
for (DBObjectFilter<DVMRunTask> filter : compilationFilters) {
filter.Refresh();
}
for (DBObjectFilter<DVMRunTask> filter : runFilters) {
filter.Refresh();
}
}
public boolean applyFilters(DVMRunTask object) {
boolean compilation = false;
//возвращать сразу нельзя. иначе количество не посчитает.
for (DBObjectFilter filter : compilationFilters) {
if (filter.Validate(object)) {
compilation |= true;
}
}
boolean run = false;
for (DBObjectFilter filter : runFilters) {
if (filter.Validate(object)) {
run |= true;
}
}
return compilation && run;
}
@Override
public void mountUI(JPanel content_in) {
super.mountUI(content_in);
//-
DVMRunTasksBar menuBar = (DVMRunTasksBar) UI.menuBars.get(getClass());
menuBar.DropFilters();
//----
menuBar.addFilters(
new VisualiserMenu("Компиляция", "/icons/Filter.png", true) {
{
for (DBObjectFilter filter : compilationFilters)
add(filter.menuItem);
}
},
new VisualiserMenu("Запуск", "/icons/Filter.png", true) {
{
for (DBObjectFilter filter : runFilters)
add(filter.menuItem);
}
}
);
}
@Override
public void ShowUI() {
ResetFiltersCount();
super.ShowUI();
ShowFiltersCount();
}
@Override
public void ShowUI(Object key) {
ResetFiltersCount();
super.ShowUI(key);
ShowFiltersCount();
}
@Override
public String getSingleDescription() {