Исправление бага с ид пакетов. теперь они общий для всех пользователей, поэтому не будет пересечания в папках. 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

@@ -70,9 +70,9 @@ public class TasksDatabase extends SQLiteDatabase {
}
super.disconnect();
}
public LinkedHashMap<Long, TestRunTask> getPackageRunTasks(int package_id) throws Exception {
public LinkedHashMap<Long, TestRunTask> getPackageRunTasks(long package_id) throws Exception {
LinkedHashMap<Long, TestRunTask> res = new LinkedHashMap<>();
selectPackageRunTasks.setInt(1, package_id);
selectPackageRunTasks.setLong(1, package_id);
resSet = selectPackageRunTasks.executeQuery();
while (resSet.next()) {
Pair<Long, TestRunTask> record = readRecord(testRunTasks);

View File

@@ -4,5 +4,5 @@ import Common.Database.iDBObject;
import com.sun.org.glassfish.gmbal.Description;
public class TasksPackageToKill extends iDBObject {
@Description("DEFAULT -1")
public int packageId = Constants.Nan;
public long packageId = Constants.Nan;
}

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);
}
}
}
}

View File

@@ -39,8 +39,15 @@ public class TestsDatabase extends SQLiteDatabase {
}
@Override
public void Init() throws Exception {
if (!settings.containsKey(SettingName.DVMPackageMaxId))
Insert(new TSetting(SettingName.DVMPackageMaxId, 0));
//-
if (!settings.containsKey(SettingName.SAPFORPackageId))
Insert(new TSetting(SettingName.SAPFORPackageId, 0));
//-
if (!settings.containsKey(SettingName.TaskMaxId))
Insert(new TSetting(SettingName.TaskMaxId, 0));
//-
if (!settings.containsKey(SettingName.SapforTaskMaxId))
Insert(new TSetting(SettingName.SapforTaskMaxId, 0));
}
@@ -48,15 +55,8 @@ public class TestsDatabase extends SQLiteDatabase {
public PassCode_2021 getSynchronizePassCode() {
return PassCode_2021.SynchronizeTests;
}
public long IncMaxTaskId() throws Exception {
TSetting setting = settings.get(SettingName.TaskMaxId);
long res = setting.value;
setting.value++;
Update(setting);
return res;
}
public long IncSapforMaxTaskId() throws Exception {
TSetting setting = settings.get(SettingName.SapforTaskMaxId);
public long IncKey(SettingName settingName) throws Exception{
TSetting setting = settings.get(settingName);
long res = setting.value;
setting.value++;
Update(setting);

View File

@@ -15,7 +15,7 @@ public class TestTask extends DBObject {
@Description("PRIMARY KEY, UNIQUE")
public long id = Constants.Nan;
@Description("DEFAULT '-1'")
public int taskspackage_id = Constants.Nan;
public long taskspackage_id = Constants.Nan;
@Description("DEFAULT -1")
public int group_id = Constants.Nan;
@Description("DEFAULT ''")

View File

@@ -1,13 +1,15 @@
package TestingSystem.DVM.TasksPackage;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.riDBObject;
import GlobalData.Machine.MachineType;
import TestingSystem.DVM.Tasks.TestCompilationTask;
import com.sun.org.glassfish.gmbal.Description;
import java.util.LinkedHashMap;
import java.util.Vector;
public class TasksPackage extends riDBObject {
public class TasksPackage extends DBObject {
@Description("PRIMARY KEY, UNIQUE")
public long id = Constants.Nan;
public String pid=""; //сишная часть.
public String summary = "";
//---
@@ -38,6 +40,10 @@ public class TasksPackage extends riDBObject {
//нужно только для публикации задач.
public LinkedHashMap<Integer, LinkedHashMap<Integer, Vector<TestCompilationTask>>> sorted_tasks = new LinkedHashMap<>();
@Override
public Object getPK() {
return id;
}
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
TasksPackage tasksPackage = (TasksPackage) src;

View File

@@ -10,10 +10,10 @@ import java.util.LinkedHashMap;
import static Common.UI.Tables.TableRenderers.RendererDate;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class TasksPackageDBTable extends iDBTable<TasksPackage> {
public class TasksPackageDBTable extends DBTable<Long,TasksPackage> {
public TasksPackageDBTable() {
super(TasksPackage.class);
super(Long.class,TasksPackage.class);
}
@Override
public Current CurrentName() {

View File

@@ -25,7 +25,7 @@ public class SapforTask extends DBObject {
public int sapfor_configuration_id = Constants.Nan;
@Expose
@Description("DEFAULT '-1'")
public int sapfortaskspackage_id = Constants.Nan;
public long sapfortaskspackage_id = Constants.Nan;
//------------------------------------->>
@Description("DEFAULT ''")
@Expose

View File

@@ -1,7 +1,6 @@
package TestingSystem.SAPFOR.SapforTasksPackage;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.riDBObject;
import Common.Global;
import Common.Utils.Utils;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
@@ -12,7 +11,9 @@ import com.sun.org.glassfish.gmbal.Description;
import java.io.File;
import java.nio.file.Paths;
import java.util.Comparator;
public class SapforTasksPackage extends riDBObject {
public class SapforTasksPackage extends DBObject {
@Description("PRIMARY KEY, UNIQUE")
public long id = Constants.Nan;
@Description("DEFAULT ''")
public String testsNames = "";//имена тестов через ; для отображения
//---
@@ -72,6 +73,10 @@ public class SapforTasksPackage extends riDBObject {
}
}
@Override
public Object getPK() {
return id;
}
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
SapforTasksPackage p = (SapforTasksPackage) src;

View File

@@ -9,9 +9,9 @@ import java.util.LinkedHashMap;
import static Common.UI.Tables.TableRenderers.RendererDate;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class SapforTasksPackagesDBTable extends iDBTable<SapforTasksPackage> {
public class SapforTasksPackagesDBTable extends DBTable<Long,SapforTasksPackage> {
public SapforTasksPackagesDBTable() {
super(SapforTasksPackage.class);
super(Long.class,SapforTasksPackage.class);
}
@Override
public Current CurrentName() {
@@ -31,7 +31,7 @@ public class SapforTasksPackagesDBTable extends iDBTable<SapforTasksPackage> {
@Override
protected void AdditionalInitColumns() {
// columns.get(0).setVisible(false);
columns.get(2).setMaxWidth(100);
columns.get(2).setMaxWidth(200);
columns.get(5).setRenderer(RendererDate);
columns.get(6).setRenderer(RendererDate);
columns.get(7).setRenderer(RendererStatusEnum);