промежуточный. часть большого рефакторинга, касательно проходов связанных с сервером. Обновлена публикация групп.
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
package TestingSystem.Group;
|
||||
import Common.Current;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Database.rDBObject;
|
||||
import Common.Database.riDBObject;
|
||||
import Common.UI.UI;
|
||||
import ProjectData.LanguageName;
|
||||
import TestingSystem.Test.TestType;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
public class Group extends rDBObject {
|
||||
public class Group extends riDBObject {
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return GroupInterface.isVisible(this);
|
||||
|
||||
@@ -6,8 +6,6 @@ import ProjectData.Files.DBProjectFile;
|
||||
import ProjectData.LanguageName;
|
||||
import ProjectData.Project.db_project_info;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
//dynamic cats возможен через рефлексию.
|
||||
@@ -116,17 +114,7 @@ public class GroupInterface {
|
||||
"\t" + Utils.MFVar("LINK_COMMAND") + " " + Utils.MFVar("LINK_FLAGS") + " " + String.join(" ", objects) + " -o " + binary,
|
||||
String.join(" ", bodies));
|
||||
}
|
||||
//--
|
||||
public static void CopyFields(Group src, Group dst) {
|
||||
dst.description = src.description;
|
||||
dst.type = src.type;
|
||||
dst.language = src.language;
|
||||
}
|
||||
public static String getSummary(Group group) {
|
||||
return group.description + " " + group.language.getDescription();
|
||||
}
|
||||
//для тестирования Сапфора на локальной машине.
|
||||
public static File getLocalWorkspaceD(Group group){
|
||||
return Paths.get(Global.visualiser.getWorkspace().getAbsolutePath(), group.id).toFile();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public class TestCompilationTask extends TestTask {
|
||||
Vector<String> res = new Vector<>();
|
||||
res.add(String.valueOf(id)); //1
|
||||
res.add(String.valueOf(maxtime)); //2
|
||||
res.add(test_id); //3
|
||||
res.add(String.valueOf(test_id)); //3
|
||||
res.add(makefile_text.replace("\n", "|")); //4
|
||||
//игнор аргумента. ядро всегда одно.
|
||||
return res;
|
||||
|
||||
@@ -7,12 +7,10 @@ import javafx.util.Pair;
|
||||
|
||||
import java.util.List;
|
||||
public class TestRunTaskInterface {
|
||||
public static String filterName = "";
|
||||
public static boolean isVisible(TestRunTask object) {
|
||||
return
|
||||
Current.HasTasksPackage() &&
|
||||
object.taskspackage_id.equals(Current.getTasksPackage().id) &&
|
||||
object.test_id.contains(filterName) &&
|
||||
Global.testingServer.account_db.testRunTasks.applyFilters(object);
|
||||
}
|
||||
public static String getEnvironments(TestRunTask object) {
|
||||
|
||||
@@ -16,12 +16,12 @@ public class TestTask extends DBObject {
|
||||
public long id = Constants.Nan;
|
||||
@Description("DEFAULT ''")
|
||||
public String taskspackage_id = "";
|
||||
@Description("DEFAULT ''")
|
||||
public String group_id = "";
|
||||
@Description("DEFAULT -1")
|
||||
public int group_id = Constants.Nan;
|
||||
@Description("DEFAULT ''")
|
||||
public String group_description = ""; //видимое имя группы для юзера
|
||||
@Description("DEFAULT ''")
|
||||
public String test_id = ""; //ключ - будет генерироваться автоматически.
|
||||
@Description("DEFAULT -1")
|
||||
public int test_id = Constants.Nan; //ключ - будет генерироваться автоматически.
|
||||
@Description("DEFAULT ''")
|
||||
public String test_description = ""; //видимое имя теста для юзера
|
||||
@Description("DEFAULT ''")
|
||||
|
||||
@@ -16,6 +16,7 @@ import TestingSystem.TasksPackage.TasksPackage;
|
||||
import TestingSystem.TasksPackage.TasksPackageDBTable;
|
||||
import TestingSystem.TasksPackage.TasksPackageState;
|
||||
import TestingSystem.TasksPackageToKill.TasksPackageToKillDBTable;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
import javafx.util.Pair;
|
||||
|
||||
import java.io.File;
|
||||
@@ -64,6 +65,10 @@ public class TasksDatabase extends SQLiteDatabase {
|
||||
Insert(new TSetting(SettingName.Queue, 0));
|
||||
}
|
||||
@Override
|
||||
public PassCode_2021 getSynchronizePassCode() {
|
||||
return PassCode_2021.SynchronizeTestsTasks;
|
||||
}
|
||||
@Override
|
||||
public void prepareTablesStatements() throws Exception {
|
||||
super.prepareTablesStatements();
|
||||
selectPackageRunTasks = conn.prepareStatement("SELECT * FROM TestRunTask WHERE taskspackage_id = ?");
|
||||
|
||||
@@ -36,7 +36,7 @@ public class TasksPackage extends nDBObject {
|
||||
public TasksPackageState state = TasksPackageState.Queued;
|
||||
//--
|
||||
//нужно только для публикации задач.
|
||||
public LinkedHashMap<String, LinkedHashMap<String, Vector<TestCompilationTask>>> sorted_tasks = new LinkedHashMap<>();
|
||||
public LinkedHashMap<Integer, LinkedHashMap<Integer, Vector<TestCompilationTask>>> sorted_tasks = new LinkedHashMap<>();
|
||||
@Override
|
||||
public void SynchronizeFields(DBObject src) {
|
||||
super.SynchronizeFields(src);
|
||||
@@ -62,10 +62,10 @@ public class TasksPackage extends nDBObject {
|
||||
kernels = tasksPackage.kernels;
|
||||
state = tasksPackage.state;
|
||||
//-
|
||||
for (String group_id : tasksPackage.sorted_tasks.keySet()) {
|
||||
LinkedHashMap<String, Vector<TestCompilationTask>> src_groupTasks = tasksPackage.sorted_tasks.get(group_id);
|
||||
LinkedHashMap<String, Vector<TestCompilationTask>> dst_groupTasks = new LinkedHashMap<>();
|
||||
for (String test_id : src_groupTasks.keySet()) {
|
||||
for (int group_id : tasksPackage.sorted_tasks.keySet()) {
|
||||
LinkedHashMap<Integer, Vector<TestCompilationTask>> src_groupTasks = tasksPackage.sorted_tasks.get(group_id);
|
||||
LinkedHashMap<Integer, Vector<TestCompilationTask>> dst_groupTasks = new LinkedHashMap<>();
|
||||
for (int test_id : src_groupTasks.keySet()) {
|
||||
Vector<TestCompilationTask> src_testTasks = src_groupTasks.get(test_id);
|
||||
Vector<TestCompilationTask> dst_testTasks = new Vector<>();
|
||||
for (TestCompilationTask src_testCompilationTask : src_testTasks)
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package TestingSystem.Test;
|
||||
import Common.Constants;
|
||||
import Common.Current;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Database.rDBObject;
|
||||
import Common.Database.riDBObject;
|
||||
import Common.UI.UI;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
public class Test extends rDBObject {
|
||||
public class Test extends riDBObject {
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return TestInterface.isVisible(this);
|
||||
@@ -13,14 +14,10 @@ public class Test extends rDBObject {
|
||||
public int dim = 1; //размерность теста. для удобства пусть будет и внешним полем.
|
||||
@Description("DEFAULT ''")
|
||||
public String args = ""; //аргументы командной строки. на всякий случай поле зарезервирую. пусть будут.
|
||||
@Description("DEFAULT ''")
|
||||
public String group_id = "";
|
||||
@Description("DEFAULT ''")
|
||||
public String project_description = "";
|
||||
@Description("DEFAULT -1")
|
||||
public int group_id = Constants.Nan;
|
||||
@Description("IGNORE")
|
||||
public byte[] project_archive_bytes = null;
|
||||
@Description("DEFAULT ''")
|
||||
public String files_json = "";
|
||||
@Override
|
||||
public void SynchronizeFields(DBObject src) {
|
||||
super.SynchronizeFields(src);
|
||||
|
||||
@@ -35,8 +35,6 @@ public class TestDBTable extends DBTable<String, Test> {
|
||||
switch (columnIndex) {
|
||||
case 2:
|
||||
return object.description;
|
||||
// case 3:
|
||||
// return object.project_description;
|
||||
case 3:
|
||||
return object.dim;
|
||||
default:
|
||||
@@ -74,15 +72,12 @@ public class TestDBTable extends DBTable<String, Test> {
|
||||
public void fillFields() {
|
||||
fields.tfName.setText(Result.description);
|
||||
fields.sDim.setValue(Result.dim);
|
||||
// fields.tfProjectDescription.setText(Result.project_description);
|
||||
}
|
||||
@Override
|
||||
public void ProcessResult() {
|
||||
Result.description = fields.tfName.getText();
|
||||
Result.dim = (int) fields.sDim.getValue();
|
||||
// Result.project_description = fields.tfProjectDescription.getText();
|
||||
if (!edit) {
|
||||
Result.genName();
|
||||
Result.sender_name = Current.getAccount().name;
|
||||
Result.sender_address = Current.getAccount().email;
|
||||
}
|
||||
|
||||
@@ -4,35 +4,18 @@ import Common.Global;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Date;
|
||||
public class TestInterface {
|
||||
public static String filterName = "";
|
||||
public static String filterSenderName = "";
|
||||
public static boolean filterMyOnly = false;
|
||||
public static boolean isVisible(Test object) {
|
||||
return Current.HasGroup() && (Current.getGroup().id.equals(object.group_id))
|
||||
&&
|
||||
object.id.toUpperCase().contains(filterName.toUpperCase()) &&
|
||||
object.sender_name.toUpperCase().contains(filterSenderName.toUpperCase()) &&
|
||||
(!filterMyOnly || object.sender_address.equalsIgnoreCase(Current.getAccount().email));
|
||||
}
|
||||
//-
|
||||
public static Date getDate(Test object) {
|
||||
return new Date(object.date);
|
||||
}
|
||||
public static void CopyFields(Test src, Test dst) {
|
||||
dst.dim = src.dim;
|
||||
dst.description = src.description;
|
||||
dst.args = src.args;
|
||||
return Current.HasGroup() && (Current.getGroup().id == object.group_id);
|
||||
}
|
||||
public static File getArchive(Test object) {
|
||||
return Paths.get(System.getProperty("user.dir"), "Tests", object.id + ".zip").toFile();
|
||||
}
|
||||
public static File getServerPath(Test object) {
|
||||
return Paths.get(System.getProperty("user.dir"), "Tests", object.id).toFile();
|
||||
return Paths.get(System.getProperty("user.dir"), "Tests", String.valueOf(object.id)).toFile();
|
||||
}
|
||||
public static File getHomePath(Test object) {
|
||||
return Paths.get(Global.visualiser.getWorkspace().getAbsolutePath(), object.id).toFile();
|
||||
return Paths.get(Global.visualiser.getWorkspace().getAbsolutePath(), String.valueOf(object.id)).toFile();
|
||||
}
|
||||
public static String getSummary(Test test) {
|
||||
return test.description;
|
||||
|
||||
@@ -15,7 +15,7 @@ import TestingSystem.TasksPackage.TasksPackageState;
|
||||
import TestingSystem.TestsSupervisor_2022.TestsSupervisor_2022;
|
||||
import Visual_DVM_2021.Passes.PassException;
|
||||
import Visual_DVM_2021.Passes.SSH.ConnectionPass;
|
||||
import Visual_DVM_2021.Passes.TestingSystemPass;
|
||||
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
|
||||
import javafx.util.Pair;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -78,11 +78,11 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
//объект уже вставлен.
|
||||
TasksPackage tasksPackage = (TasksPackage) object;
|
||||
//-
|
||||
for (String group_id : tasksPackage.sorted_tasks.keySet()) {
|
||||
for (int group_id : tasksPackage.sorted_tasks.keySet()) {
|
||||
if (db.groups.containsKey(group_id)) {
|
||||
Group group = db.groups.get(group_id);
|
||||
LinkedHashMap<String, Vector<TestCompilationTask>> group_tasks = tasksPackage.sorted_tasks.get((group_id));
|
||||
for (String test_id : group_tasks.keySet()) {
|
||||
LinkedHashMap<Integer, Vector<TestCompilationTask>> group_tasks = tasksPackage.sorted_tasks.get((group_id));
|
||||
for (int test_id : group_tasks.keySet()) {
|
||||
if (db.tests.containsKey(test_id)) {
|
||||
Test test = db.tests.get(test_id);
|
||||
db_project_info project = new db_project_info(test);//Открытие бд проекта и ее синхронизация. неизбежно.
|
||||
@@ -140,7 +140,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
Group group = (Group) object;
|
||||
Vector<Test> tests = new Vector<>();
|
||||
for (Test group_test : db.tests.Data.values()) {
|
||||
if (group_test.group_id.equals(group.id)) // todo group_name -> group_id
|
||||
if (group_test.group_id==group.id) // todo group_name -> group_id
|
||||
tests.add(group_test);
|
||||
}
|
||||
for (Test group_test : tests) {
|
||||
@@ -476,7 +476,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
response.object = Utils.packFile(account_db.getFile());
|
||||
break;
|
||||
case DeleteAccountObjectByPK:
|
||||
Print("Удалить объект из базы пользователя " + request.arg);
|
||||
Print("Удалить объект по ключу из базы пользователя " + request.arg);
|
||||
SetCurrentAccountDB(request.arg);
|
||||
Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object;
|
||||
DeleteAction(account_db.DeleteByPK(to_delete.getKey(), to_delete.getValue()));
|
||||
|
||||
@@ -10,6 +10,7 @@ import TestingSystem.Group.GroupsDBTable;
|
||||
import TestingSystem.TSetting.TSetting;
|
||||
import TestingSystem.TSetting.TSettingsDBTable;
|
||||
import TestingSystem.Test.TestDBTable;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
|
||||
import java.nio.file.Paths;
|
||||
public class TestsDatabase extends SQLiteDatabase {
|
||||
@@ -43,6 +44,10 @@ public class TestsDatabase extends SQLiteDatabase {
|
||||
if (!settings.containsKey(SettingName.SapforTaskMaxId))
|
||||
Insert(new TSetting(SettingName.SapforTaskMaxId, 0));
|
||||
}
|
||||
@Override
|
||||
public PassCode_2021 getSynchronizePassCode() {
|
||||
return PassCode_2021.SynchronizeTests;
|
||||
}
|
||||
public long IncMaxTaskId() throws Exception {
|
||||
TSetting setting = settings.get(SettingName.TaskMaxId);
|
||||
long res = setting.value;
|
||||
|
||||
@@ -99,7 +99,7 @@ public class TestsSupervisor_2022 {
|
||||
Vector<String> test_ids = new Vector<>();
|
||||
for (TestCompilationTask current_task : compilationTasks)
|
||||
if (!test_ids.contains(current_task.test_id))
|
||||
test_ids.add(current_task.test_id);
|
||||
test_ids.add(String.valueOf(current_task.test_id));
|
||||
//синхронизировать их.
|
||||
for (String test_id : test_ids) {
|
||||
File test_src = Paths.get(Global.TestsDirectory.getAbsolutePath(), test_id).toFile();
|
||||
|
||||
Reference in New Issue
Block a user