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

Добавлена возможность экспорта соответствующих фильтрам задач пакета 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 name="ChangeListManager">
<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$/kek.xls" beforeDir="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/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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" 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/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/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/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.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" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

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

View File

@@ -29,15 +29,18 @@ public enum TaskState implements StatusEnum {
NoSuchTask,
FailedToQueue,
AbortingByUser; //только для одиночного запуска
//для фильтров тестирования двм системы.
public boolean isVisible() {
switch (this) {
case Queued:
case FailedToQueue:
case NoSuchTask:
case AbortingByUser:
return false;
default:
case Done:
case DoneWithErrors:
case AbortedByTimeout:
case WrongTestFormat:
case InternalError:
case Crushed:
return true;
default:
return false;
}
}
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
@Override
public void GetVersionInfo() {
version = 1044;
version = 1045;
String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime());

View File

@@ -10,6 +10,7 @@ import ProjectData.LanguageName;
import TestingSystem.Common.Group.UI.GroupFields;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.Test.TestType;
import TestingSystem.DVM.Tasks.TestRunTask;
import javax.swing.*;
import java.util.LinkedHashMap;
@@ -82,11 +83,20 @@ public class GroupsDBTable extends iDBTable<Group> {
filter.ShowDescriptionAndCount();
}
public boolean applyFilters(Group object) {
for (TableFilter filter : typeFilters)
if (!filter.Validate(object)) return false;
for (TableFilter filter : languageFilters)
if (!filter.Validate(object)) return false;
return true;
boolean type = false;
//возвращать сразу нельзя. иначе количество не посчитает.
for (TableFilter filter : typeFilters) {
if (filter.Validate(object)) {
type |= true;
}
}
boolean language = false;
for (TableFilter filter : languageFilters) {
if (filter.Validate(object)) {
language |= true;
}
}
return type&&language;
}
@Override
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.RendererStatusEnum;
public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
//todo обобщить бы наличие фильтров для всех таблиц.
public Vector<TableFilter<TestRunTask>> compilationFilters;
public Vector<TableFilter<TestRunTask>> runFilters;
public TestRunTasksDBTable() {
@@ -62,11 +63,20 @@ public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
}
}
public boolean applyFilters(TestRunTask object) {
for (TableFilter<TestRunTask> filter : compilationFilters)
if (!filter.Validate(object)) return false;
for (TableFilter<TestRunTask> filter : runFilters)
if (!filter.Validate(object)) return false;
return true;
boolean compilation = false;
//возвращать сразу нельзя. иначе количество не посчитает.
for (TableFilter filter : compilationFilters) {
if (filter.Validate(object)) {
compilation |= true;
}
}
boolean run = false;
for (TableFilter filter : runFilters) {
if (filter.Validate(object)) {
run |= true;
}
}
return compilation&&run;
}
@Override
public String getSingleDescription() {

View File

@@ -1,6 +1,7 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Files.VDirectoryChooser;
import Common.Utils.Utils;
import TestingSystem.DVM.Tasks.TestRunTask;
@@ -9,8 +10,10 @@ import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.Pass_2021;
import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.*;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Vector;
@@ -25,7 +28,9 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
CellStyle regular_style;
Workbook book = null;
Sheet sheet = null;
//---
//--
Vector<TestRunTask> tasks = null;
//--
@Override
public String getIconPath() {
return "/icons/Excel.png";
@@ -36,10 +41,11 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
}
@Override
protected boolean canStart(Object... args) throws Exception {
book= null;
book = null;
sheet = null;
header_style=null;
regular_style=null;
header_style = null;
regular_style = null;
tasks = null;
//--
if (Current.Check(Log, Current.TasksPackage)) {
target = Current.getTasksPackage();
@@ -47,6 +53,17 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
Log.Writeln_("Можно получить таблицу только завершенного пакета.");
return false;
} 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();
if (dir == null) {
Log.Writeln_("Папка не выбрана.");
@@ -64,7 +81,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
for (Object value : values) {
Cell cell = row.createCell(i);
cell.setCellValue(value.toString());
cell.setCellStyle(isHeader? header_style:regular_style);
cell.setCellStyle(isHeader ? header_style : regular_style);
//--
++i;
}
@@ -87,7 +104,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
header_style.setBorderRight(CellStyle.BORDER_THICK);
header_style.setBorderTop(CellStyle.BORDER_THICK);
//--
regular_style=book.createCellStyle();
regular_style = book.createCellStyle();
regular_style.setBorderBottom(CellStyle.BORDER_THIN);
regular_style.setBorderLeft(CellStyle.BORDER_THIN);
regular_style.setBorderRight(CellStyle.BORDER_THIN);
@@ -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;
for (TestRunTask task : tasks) {
Row row = addRow(i, false,
@@ -147,4 +158,14 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
stream = 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);
}
}
}
}