рефактиринг фильтров завершен.
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

4
.idea/workspace.xml generated
View File

@@ -7,9 +7,11 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Database/DataSetFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/DataSetFilter.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Database/DataSetFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/DataSetFilter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/Group/GroupsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMRunTasksBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMRunTasksBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMRunTasksSet.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMRunTasksSet.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -1,5 +1,4 @@
package Common.Database; package Common.Database;
import Common.UI.Menus.VisualiserMenuItem;
import Common.UI.Menus_2023.StableMenuItem; import Common.UI.Menus_2023.StableMenuItem;
import Common.UI.Menus_2023.VisualiserMenu; import Common.UI.Menus_2023.VisualiserMenu;
@@ -14,14 +13,14 @@ public abstract class DataSetFilter<D extends DBObject> {
//JMenuItem bSelectAll; //JMenuItem bSelectAll;
//JMenuItem bUnSelectAll; //JMenuItem bUnSelectAll;
//-- //--
protected Vector<DBObjectFilter<D>> filters; protected Vector<DBObjectFilter<D>> field_filters;
public DataSetFilter(String name, DataSet dataSet_in) { public DataSetFilter(String name, DataSet dataSet_in) {
dataSet = dataSet_in; dataSet = dataSet_in;
menu = new VisualiserMenu(name, "/icons/Filter.png", true); menu = new VisualiserMenu(name, "/icons/Filter.png", true);
filters = new Vector<>(); field_filters = new Vector<>();
fill(); fill();
//- //-
for (DBObjectFilter<D> filter : filters) for (DBObjectFilter<D> filter : field_filters)
menu.add(filter.menuItem); menu.add(filter.menuItem);
menu.addSeparator(); menu.addSeparator();
menu.add(new StableMenuItem("Выбрать всё", "/icons/SelectAll.png") { menu.add(new StableMenuItem("Выбрать всё", "/icons/SelectAll.png") {
@@ -48,20 +47,20 @@ public abstract class DataSetFilter<D extends DBObject> {
}); });
} }
void selectAll(boolean flag) { void selectAll(boolean flag) {
for (DBObjectFilter filter : filters) for (DBObjectFilter filter : field_filters)
filter.setActive(flag); filter.setActive(flag);
} }
public abstract void fill(); public abstract void fill();
public void Drop() { public void Drop() {
for (DBObjectFilter<D> filter : filters) for (DBObjectFilter<D> filter : field_filters)
filter.Drop(); filter.Drop();
} }
public void Refresh() { public void Refresh() {
for (DBObjectFilter<D> filter : filters) for (DBObjectFilter<D> filter : field_filters)
filter.Refresh(); filter.Refresh();
} }
public boolean isActive() { public boolean isActive() {
for (DBObjectFilter<D> filter : filters) { for (DBObjectFilter<D> filter : field_filters) {
if (filter.isActive()) if (filter.isActive())
return true; return true;
} }
@@ -70,12 +69,12 @@ public abstract class DataSetFilter<D extends DBObject> {
public boolean Validate(D object) { public boolean Validate(D object) {
if (!isActive()) { if (!isActive()) {
//считаем без учета результатов //считаем без учета результатов
for (DBObjectFilter<D> filter : filters) for (DBObjectFilter<D> filter : field_filters)
filter.Validate(object); filter.Validate(object);
return true; return true;
} }
boolean res = false; boolean res = false;
for (DBObjectFilter<D> filter : filters) for (DBObjectFilter<D> filter : field_filters)
if (filter.Validate(object)) if (filter.Validate(object))
res |= true; res |= true;
return res; 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 //http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override @Override
public void GetVersionInfo() { public void GetVersionInfo() {
version = 1058; version = 1059;
String pattern = "MMM dd yyyy HH:mm:ss"; String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH); DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime()); date_text = df.format(getClassBuildTime());

View File

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

View File

@@ -1,116 +1,52 @@
package TestingSystem.DVM.DVMTasks; package TestingSystem.DVM.DVMTasks;
import Common.Current; import Common.Current;
import Common.Database.DataSet;
import Common.Database.DBObjectFilter; import Common.Database.DBObjectFilter;
import Common.Database.DataSet;
import Common.Database.DataSetFilter;
import Common.UI.DataSetControlForm; import Common.UI.DataSetControlForm;
import Common.UI.Menus_2023.VisualiserMenu;
import Common.UI.UI;
import GlobalData.Tasks.TaskState; import GlobalData.Tasks.TaskState;
import TestingSystem.DVM.DVMPackage.DVMPackage; 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.RendererProgress;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum; import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> { public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> {
//todo обобщить бы наличие фильтров для всех таблиц. //todo обобщить бы наличие фильтров для всех таблиц.
public Vector<DBObjectFilter<DVMRunTask>> compilationFilters;
public Vector<DBObjectFilter<DVMRunTask>> runFilters;
DVMPackage target; 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() { public DVMRunTasksSet() {
super(Integer.class, DVMRunTask.class); 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 @Override
public String getSingleDescription() { public String getSingleDescription() {