2023-12-16 16:52:17 +03:00
|
|
|
|
package TestingSystem.DVM.DVMTasks;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.Current;
|
2023-12-16 16:52:17 +03:00
|
|
|
|
import Common.Database.DataSet;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
import Common.Database.TableFilter;
|
|
|
|
|
|
import Common.UI.DataSetControlForm;
|
|
|
|
|
|
import Common.UI.Menus_2023.VisualiserMenu;
|
|
|
|
|
|
import Common.UI.UI;
|
|
|
|
|
|
import GlobalData.Tasks.TaskState;
|
2023-12-16 16:52:17 +03:00
|
|
|
|
import TestingSystem.DVM.DVMPackage.DVMPackage;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
|
|
|
|
|
|
|
import static Common.UI.Tables.TableRenderers.RendererProgress;
|
|
|
|
|
|
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> {
|
2023-12-07 02:05:08 +03:00
|
|
|
|
//todo обобщить бы наличие фильтров для всех таблиц.
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public Vector<TableFilter<DVMRunTask>> compilationFilters;
|
|
|
|
|
|
public Vector<TableFilter<DVMRunTask>> runFilters;
|
|
|
|
|
|
DVMPackage target;
|
|
|
|
|
|
public DVMRunTasksSet() {
|
|
|
|
|
|
super(Integer.class, DVMRunTask.class);
|
|
|
|
|
|
//todo обобщить бы наличие фильтров для всех таблиц.
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (Current.hasUI()) {
|
|
|
|
|
|
compilationFilters = new Vector<>();
|
|
|
|
|
|
runFilters = new Vector<>();
|
|
|
|
|
|
//--
|
|
|
|
|
|
for (TaskState state : TaskState.values()) {
|
|
|
|
|
|
if (state.isVisible()) {
|
2023-12-16 16:52:17 +03:00
|
|
|
|
compilationFilters.add(new TableFilter<DVMRunTask>(this, state.getDescription()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
@Override
|
2023-12-16 16:52:17 +03:00
|
|
|
|
protected boolean validate(DVMRunTask object) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.compilation_state.equals(state);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//--
|
|
|
|
|
|
for (TaskState state : TaskState.values()) {
|
|
|
|
|
|
if (state.isVisible()) {
|
2023-12-16 16:52:17 +03:00
|
|
|
|
runFilters.add(new TableFilter<DVMRunTask>(this, state.getDescription()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
@Override
|
2023-12-16 16:52:17 +03:00
|
|
|
|
protected boolean validate(DVMRunTask object) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.state.equals(state);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void ResetFiltersCount() {
|
2023-12-16 16:52:17 +03:00
|
|
|
|
for (TableFilter<DVMRunTask> filter : compilationFilters)
|
2023-09-17 22:13:42 +03:00
|
|
|
|
filter.count = 0;
|
2023-12-16 16:52:17 +03:00
|
|
|
|
for (TableFilter<DVMRunTask> filter : runFilters)
|
2023-09-17 22:13:42 +03:00
|
|
|
|
filter.count = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
public void ShowFiltersCount() {
|
2023-12-16 16:52:17 +03:00
|
|
|
|
for (TableFilter<DVMRunTask> filter : compilationFilters) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
filter.ShowDescriptionAndCount();
|
|
|
|
|
|
}
|
2023-12-16 16:52:17 +03:00
|
|
|
|
for (TableFilter<DVMRunTask> filter : runFilters) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
filter.ShowDescriptionAndCount();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public boolean applyFilters(DVMRunTask object) {
|
2023-12-07 02:05:08 +03:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-12-16 16:52:17 +03:00
|
|
|
|
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 (TableFilter filter : compilationFilters)
|
|
|
|
|
|
add(filter.menuItem);
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
new VisualiserMenu("Запуск", "/icons/Filter.png", true) {
|
|
|
|
|
|
{
|
|
|
|
|
|
for (TableFilter filter : runFilters)
|
|
|
|
|
|
add(filter.menuItem);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void ShowUI() {
|
|
|
|
|
|
ResetFiltersCount();
|
|
|
|
|
|
super.ShowUI();
|
|
|
|
|
|
ShowFiltersCount();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void ShowUI(Object key) {
|
|
|
|
|
|
ResetFiltersCount();
|
|
|
|
|
|
super.ShowUI(key);
|
|
|
|
|
|
ShowFiltersCount();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String getSingleDescription() {
|
|
|
|
|
|
return "задача";
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String getPluralDescription() {
|
|
|
|
|
|
return "задачи";
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected DataSetControlForm createUI() {
|
|
|
|
|
|
return new DataSetControlForm(this) {
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public boolean hasCheckBox() {
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void AdditionalInitColumns() {
|
2023-12-07 23:32:11 +03:00
|
|
|
|
columns.get(5).setRenderer(RendererStatusEnum);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
columns.get(6).setRenderer(RendererStatusEnum);
|
2023-12-07 23:32:11 +03:00
|
|
|
|
columns.get(13).setRenderer(RendererProgress);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String[] getUIColumnNames() {
|
|
|
|
|
|
return new String[]{
|
|
|
|
|
|
"Тест",
|
|
|
|
|
|
"Язык",
|
|
|
|
|
|
"Флаги",
|
2023-12-07 23:32:11 +03:00
|
|
|
|
"Компиляция",
|
2023-09-17 22:13:42 +03:00
|
|
|
|
"Запуск",
|
|
|
|
|
|
"Матрица",
|
|
|
|
|
|
"Окружение",
|
|
|
|
|
|
"usr.par",
|
2023-12-07 23:32:11 +03:00
|
|
|
|
"Время компиляции (с)",
|
|
|
|
|
|
"Время запуска (с)",
|
2023-09-17 22:13:42 +03:00
|
|
|
|
"Чистое время (с)",
|
|
|
|
|
|
"Прогресс",
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public Object getFieldAt(DVMRunTask object, int columnIndex) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
switch (columnIndex) {
|
|
|
|
|
|
case 2:
|
|
|
|
|
|
return object.test_description;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 3:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.language;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 4:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.flags;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 5:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.compilation_state;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 6:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.state;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 7:
|
|
|
|
|
|
return object.matrix;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
case 8:
|
2023-12-07 23:32:11 +03:00
|
|
|
|
return object.getEnvironments();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
case 9:
|
2023-12-07 23:32:11 +03:00
|
|
|
|
return object.getUsrPar();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
case 10:
|
2023-12-07 23:32:11 +03:00
|
|
|
|
return object.compilation_time;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
case 11:
|
|
|
|
|
|
return object.Time;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 12:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.CleanTime;
|
2023-12-07 23:32:11 +03:00
|
|
|
|
case 13:
|
2023-09-17 22:13:42 +03:00
|
|
|
|
return object.progress;
|
|
|
|
|
|
default:
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public Current CurrentName() {
|
2023-12-16 16:52:17 +03:00
|
|
|
|
return Current.DVMRunTask;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public void ShowDVMPackage(DVMPackage dvmPackage) {
|
|
|
|
|
|
target = dvmPackage;
|
|
|
|
|
|
ClearUI();
|
|
|
|
|
|
Data.clear();
|
|
|
|
|
|
if (dvmPackage.package_json == null) {
|
|
|
|
|
|
if (dvmPackage.getJsonFile().exists()) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
dvmPackage.readJson();
|
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
|
ex.printStackTrace();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (dvmPackage.package_json != null) {
|
|
|
|
|
|
for (DVMCompilationTask compilationTask : dvmPackage.package_json.compilationTasks) {
|
|
|
|
|
|
for (DVMRunTask runTask : compilationTask.runTasks) {
|
|
|
|
|
|
Data.put(runTask.id, runTask);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
ShowUI();
|
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
2023-12-16 16:52:17 +03:00
|
|
|
|
public void ShowNoPackage() {
|
|
|
|
|
|
ClearUI();
|
|
|
|
|
|
Data.clear();
|
|
|
|
|
|
if (target != null) {
|
|
|
|
|
|
target.destructor();
|
|
|
|
|
|
target = null;
|
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|