Исправление бага с ид пакетов. теперь они общий для всех пользователей, поэтому не будет пересечания в папках. v++

This commit is contained in:
2023-11-21 17:44:59 +03:00
parent 16b13cbc8c
commit 82a6f4b879
23 changed files with 132 additions and 87 deletions

View File

@@ -1,11 +1,13 @@
package TestingSystem.Common;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.iDBObject;
import Common.Global;
import Common.Utils.Utils;
import GlobalData.Account.Account;
import GlobalData.Machine.Machine;
import GlobalData.RemoteFile.RemoteFile;
import GlobalData.Settings.SettingName;
import GlobalData.Tasks.TaskState;
import GlobalData.User.User;
import ProjectData.LanguageName;
@@ -38,7 +40,6 @@ import org.apache.commons.io.FileUtils;
import javax.swing.*;
import java.io.File;
import java.io.Serializable;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Comparator;
@@ -76,7 +77,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
}
}
@Override
public void PublishAction(DBObject object) throws Exception {
public void afterPublishAction(DBObject object) throws Exception {
if (object instanceof TasksPackage) {
//объект уже вставлен.
TasksPackage tasksPackage = (TasksPackage) object;
@@ -94,7 +95,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
Print("принять задачу на компиляцию " + group_id + ":" + test_id + ":" + task.flags);
//Теперь эту задачу надо поставить в очередь. и вернуть пользователю, уже с id
task.state = TaskState.Waiting;
task.id = db.IncMaxTaskId();
task.id = db.IncKey(SettingName.TaskMaxId);
task.taskspackage_id = tasksPackage.id;
task.makefile_text = group.GenerateMakefile(project, tasksPackage.dvm_drv, task.flags);
task.test_home = tasksPackage.user_workspace + "/projects/" + test_id;
@@ -106,7 +107,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
account_db.Insert(task);
if (task.runTasks != null) {
for (TestRunTask rt : task.runTasks) {
rt.id = db.IncMaxTaskId();
rt.id = db.IncKey(SettingName.TaskMaxId);
rt.taskspackage_id = tasksPackage.id;
rt.testcompilationtask_id = task.id;
rt.remote_workspace =
@@ -263,9 +264,9 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
account_db.BeginTransaction();
for (Object object : tasks) {
SapforTask task = (SapforTask) object;
task.id = db.IncSapforMaxTaskId();
task.id = db.IncKey(SettingName.SapforTaskMaxId);
if (account_db.InsertWithCheck_(task) != null)
PublishAction(task);
afterPublishAction(task);
}
account_db.Commit();
response = new ServerExchangeUnit_2021(ServerCode.OK);
@@ -302,11 +303,11 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
break;
case CheckPackageToKill:
SetCurrentAccountDB(request.arg);
int packageId = (int) request.object;
long packageId = (long) request.object;
response = new ServerExchangeUnit_2021(ServerCode.OK);
boolean res_ = false;
for (TasksPackageToKill tasksPackageToKill : account_db.packagesToKill.Data.values()) {
if (tasksPackageToKill.packageId==packageId) {
if (tasksPackageToKill.packageId == packageId) {
res_ = true;
break;
}
@@ -335,7 +336,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
account_db.BeginTransaction();
for (Object object : objects__)
if (account_db.InsertWithCheck_((DBObject) object) != null)
PublishAction((DBObject) object);
afterPublishAction((DBObject) object);
account_db.Commit();
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
@@ -429,15 +430,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
DeleteAction(account_db.DeleteByPK(to_delete.getKey(), to_delete.getValue()));
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case PublishAccountAIObject:
Print("Опубликовать объект с автоинкрементным ключом для пользователя " + request.arg);
SetCurrentAccountDB(request.arg);
dbObject = (DBObject) request.object;
account_db.Insert(dbObject); //проверка не нужна,АИ гарантирует что ключ уникален.
PublishAction(dbObject);
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = (Serializable) dbObject.getPK(); //чтобы пользователь знал, какой ключ.
break;
case GetActualSapforPackageData:
Print("Запросить актуальные данные пакета");
sapforTasksPackage = (SapforTasksPackage) request.object;
@@ -592,4 +584,31 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
}
return res;
}
@Override
public void PublishObject(DBObject dbObject) throws Exception {
if (request.arg == null)
super.PublishObject(dbObject);
else {
SetCurrentAccountDB(request.arg);
if (dbObject instanceof iDBObject) {
Print("Опубликовать объект для пользователя " + request.arg);
account_db.Insert(dbObject);
} else {
Print("Опубликовать объект с автоинкрементным ключом " + request.arg);
account_db.InsertWithCheck(dbObject); //проверка не нужна,АИ гарантирует что ключ уникален.
}
}
}
@Override
public void beforePublishAction(DBObject object) throws Exception {
if (object instanceof TasksPackage) {
TasksPackage tasksPackage = (TasksPackage) object;
tasksPackage.id = db.IncKey(SettingName.DVMPackageMaxId);
} else {
if (object instanceof SapforTasksPackage) {
SapforTasksPackage sapforTasksPackage = (SapforTasksPackage) object;
sapforTasksPackage.id = db.IncKey(SettingName.SAPFORPackageId);
}
}
}
}