Фильтры у групп, и тестов изменены на фильтры по ИЛИ. Отдельные виды фильтров ( например язык тестов и тип тестов, все еще взаимодействут по И)

Добавлена возможность экспорта соответствующих фильтрам задач пакета DVM в Excel.

v++
This commit is contained in:
2023-12-07 02:05:08 +03:00
parent 540c041408
commit 2044ff4320
7 changed files with 92 additions and 42 deletions

13
.idea/workspace.xml generated
View File

@@ -7,15 +7,14 @@
</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 afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ExportTasksPackageToExcel.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/icons/Excel.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/kek.xls" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/MainMenuBar/MainMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/MainMenuBar/MainMenuBar.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Database/TableFilter.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/TableFilter.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TasksPackagesMenuBar/TasksPackagesMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TasksPackagesMenuBar/TasksPackagesMenuBar.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/GlobalData/Tasks/TaskState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Tasks/TaskState.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.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/DVM/Tasks/TestRunTasksDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTasksDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTasksDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTasksDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/TestPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/TestPass.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ExportTasksPackageToExcel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ExportTasksPackageToExcel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.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

@@ -7,16 +7,19 @@ public class TableFilter<D extends DBObject> {
DataSet table; DataSet table;
public JMenuItem menuItem; //пункт меню фильтра. ( возможно потом сделать и кнопку) public JMenuItem menuItem; //пункт меню фильтра. ( возможно потом сделать и кнопку)
String description; String description;
boolean active = false; //включен ли фильтр public boolean active = true; //включен ли фильтр
public int count = 0; public int count = 0;
protected boolean validate(D object) { protected boolean validate(D object) {
return true; return true;
} }
public boolean Validate(D object) { public boolean Validate(D object) {
boolean valid; if (active) {
if (valid=validate(object)) boolean valid = validate(object);
if (valid)
count++; count++;
return !active || valid; return valid;
}
return false;
} }
static String getNotActiveIconPath() { static String getNotActiveIconPath() {
return "/icons/NotPick.png"; return "/icons/NotPick.png";
@@ -24,9 +27,10 @@ public class TableFilter<D extends DBObject> {
static String getActiveIconPath() { static String getActiveIconPath() {
return "/icons/Pick.png"; return "/icons/Pick.png";
} }
public TableFilter(DataSet table_in, String description_in) { public TableFilter(DataSet table_in, String description_in, boolean active_in) {
table = table_in; table = table_in;
menuItem = new StableMenuItem((description = description_in)+" (0)"); menuItem = new StableMenuItem((description = description_in)+" (0)");
active=active_in;
menuItem.addActionListener(e -> { menuItem.addActionListener(e -> {
active = !active; active = !active;
Mark(); Mark();
@@ -34,6 +38,9 @@ public class TableFilter<D extends DBObject> {
}); });
Mark(); Mark();
} }
public TableFilter(DataSet table_in, String description_in){
this(table_in,description_in,true);
}
public void Mark() { public void Mark() {
menuItem.setIcon(Utils.getIcon(active ? getActiveIconPath() : getNotActiveIconPath())); menuItem.setIcon(Utils.getIcon(active ? getActiveIconPath() : getNotActiveIconPath()));
} }

View File

@@ -29,15 +29,18 @@ public enum TaskState implements StatusEnum {
NoSuchTask, NoSuchTask,
FailedToQueue, FailedToQueue,
AbortingByUser; //только для одиночного запуска AbortingByUser; //только для одиночного запуска
//для фильтров тестирования двм системы.
public boolean isVisible() { public boolean isVisible() {
switch (this) { switch (this) {
case Queued: case Done:
case FailedToQueue: case DoneWithErrors:
case NoSuchTask: case AbortedByTimeout:
case AbortingByUser: case WrongTestFormat:
return false; case InternalError:
default: case Crushed:
return true; return true;
default:
return false;
} }
} }
public String getDescription() { public String getDescription() {

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 = 1044; version = 1045;
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

@@ -10,6 +10,7 @@ import ProjectData.LanguageName;
import TestingSystem.Common.Group.UI.GroupFields; 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 TestingSystem.DVM.Tasks.TestRunTask;
import javax.swing.*; import javax.swing.*;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@@ -82,11 +83,20 @@ public class GroupsDBTable extends iDBTable<Group> {
filter.ShowDescriptionAndCount(); filter.ShowDescriptionAndCount();
} }
public boolean applyFilters(Group object) { public boolean applyFilters(Group object) {
for (TableFilter filter : typeFilters) boolean type = false;
if (!filter.Validate(object)) return false; //возвращать сразу нельзя. иначе количество не посчитает.
for (TableFilter filter : languageFilters) for (TableFilter filter : typeFilters) {
if (!filter.Validate(object)) return false; if (filter.Validate(object)) {
return true; type |= true;
}
}
boolean language = false;
for (TableFilter filter : languageFilters) {
if (filter.Validate(object)) {
language |= true;
}
}
return type&&language;
} }
@Override @Override
public void ShowUI() { public void ShowUI() {

View File

@@ -15,6 +15,7 @@ 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 TestRunTasksDBTable extends DBTable<Long, TestRunTask> { public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
//todo обобщить бы наличие фильтров для всех таблиц.
public Vector<TableFilter<TestRunTask>> compilationFilters; public Vector<TableFilter<TestRunTask>> compilationFilters;
public Vector<TableFilter<TestRunTask>> runFilters; public Vector<TableFilter<TestRunTask>> runFilters;
public TestRunTasksDBTable() { public TestRunTasksDBTable() {
@@ -62,11 +63,20 @@ public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
} }
} }
public boolean applyFilters(TestRunTask object) { public boolean applyFilters(TestRunTask object) {
for (TableFilter<TestRunTask> filter : compilationFilters) boolean compilation = false;
if (!filter.Validate(object)) return false; //возвращать сразу нельзя. иначе количество не посчитает.
for (TableFilter<TestRunTask> filter : runFilters) for (TableFilter filter : compilationFilters) {
if (!filter.Validate(object)) return false; if (filter.Validate(object)) {
return true; compilation |= true;
}
}
boolean run = false;
for (TableFilter filter : runFilters) {
if (filter.Validate(object)) {
run |= true;
}
}
return compilation&&run;
} }
@Override @Override
public String getSingleDescription() { public String getSingleDescription() {

View File

@@ -1,6 +1,7 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Common.Current; import Common.Current;
import Common.Global; import Common.Global;
import Common.UI.UI;
import Common.Utils.Files.VDirectoryChooser; import Common.Utils.Files.VDirectoryChooser;
import Common.Utils.Utils; import Common.Utils.Utils;
import TestingSystem.DVM.Tasks.TestRunTask; import TestingSystem.DVM.Tasks.TestRunTask;
@@ -9,8 +10,10 @@ import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.Pass_2021; import Visual_DVM_2021.Passes.Pass_2021;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import java.awt.*;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.Vector; import java.util.Vector;
@@ -25,7 +28,9 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
CellStyle regular_style; CellStyle regular_style;
Workbook book = null; Workbook book = null;
Sheet sheet = null; Sheet sheet = null;
//--- //--
Vector<TestRunTask> tasks = null;
//--
@Override @Override
public String getIconPath() { public String getIconPath() {
return "/icons/Excel.png"; return "/icons/Excel.png";
@@ -40,6 +45,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
sheet = null; sheet = null;
header_style = null; header_style = null;
regular_style = null; regular_style = null;
tasks = null;
//-- //--
if (Current.Check(Log, Current.TasksPackage)) { if (Current.Check(Log, Current.TasksPackage)) {
target = Current.getTasksPackage(); target = Current.getTasksPackage();
@@ -47,6 +53,17 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
Log.Writeln_("Можно получить таблицу только завершенного пакета."); Log.Writeln_("Можно получить таблицу только завершенного пакета.");
return false; return false;
} else { } else {
//---
tasks = new Vector<>();
for (TestRunTask task : Global.testingServer.account_db.testRunTasks.Data.values()) {
if ((task.taskspackage_id == target.id) && (task.isVisible()))
tasks.add(task);
}
if (tasks.isEmpty()) {
Log.Writeln_("Не найдено ни одной видимой задачи.");
return false;
}
//---
dir = directoryChooser.ShowDialog(); dir = directoryChooser.ShowDialog();
if (dir == null) { if (dir == null) {
Log.Writeln_("Папка не выбрана."); Log.Writeln_("Папка не выбрана.");
@@ -108,12 +125,6 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
"Чистое время (с)", "Чистое время (с)",
"Прогресс (%)"); "Прогресс (%)");
//-- //--
Vector<TestRunTask> tasks = new Vector<>();
for (TestRunTask task : Global.testingServer.account_db.testRunTasks.Data.values()) {
if ((task.taskspackage_id == target.id) && (task.isVisible()))
tasks.add(task);
}
//--
int i = 1; int i = 1;
for (TestRunTask task : tasks) { for (TestRunTask task : tasks) {
Row row = addRow(i, false, Row row = addRow(i, false,
@@ -147,4 +158,14 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
stream = null; stream = null;
file = null; file = null;
} }
@Override
protected void performDone() throws Exception {
super.performDone();
if (Desktop.isDesktopSupported()) {
if (UI.Question("Таблица сформирована в файле\n" + Utils.DQuotes(res.getAbsolutePath()) + ".\nОткрыть её"
)) {
Desktop.getDesktop().open(res);
}
}
}
} }