Фильтры у групп, и тестов изменены на фильтры по ИЛИ. Отдельные виды фильтров ( например язык тестов и тип тестов, все еще взаимодействут по И)
Добавлена возможность экспорта соответствующих фильтрам задач пакета DVM в Excel. v++
This commit is contained in:
13
.idea/workspace.xml
generated
13
.idea/workspace.xml
generated
@@ -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" />
|
||||||
|
|||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -36,10 +41,11 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
book= null;
|
book = null;
|
||||||
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_("Папка не выбрана.");
|
||||||
@@ -64,7 +81,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
|
|||||||
for (Object value : values) {
|
for (Object value : values) {
|
||||||
Cell cell = row.createCell(i);
|
Cell cell = row.createCell(i);
|
||||||
cell.setCellValue(value.toString());
|
cell.setCellValue(value.toString());
|
||||||
cell.setCellStyle(isHeader? header_style:regular_style);
|
cell.setCellStyle(isHeader ? header_style : regular_style);
|
||||||
//--
|
//--
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
@@ -87,7 +104,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<TasksPackage> {
|
|||||||
header_style.setBorderRight(CellStyle.BORDER_THICK);
|
header_style.setBorderRight(CellStyle.BORDER_THICK);
|
||||||
header_style.setBorderTop(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.setBorderBottom(CellStyle.BORDER_THIN);
|
||||||
regular_style.setBorderLeft(CellStyle.BORDER_THIN);
|
regular_style.setBorderLeft(CellStyle.BORDER_THIN);
|
||||||
regular_style.setBorderRight(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;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user