no message

This commit is contained in:
2024-09-17 02:53:17 +03:00
parent df9fb2e2a2
commit 55a724a511
12 changed files with 173 additions and 87 deletions

View File

@@ -4,6 +4,10 @@ import Common.Database.riDBObject;
import Common.Global;
import Common.Utils.Utils;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Group.Json.GroupJson;
import TestingSystem.Common.Group.Json.GroupsJson;
import TestingSystem.Common.Test.Json.TestJson;
import TestingSystem.Common.Test.Json.TestsJson;
import TestingSystem.Common.Test.Test;
import com.sun.org.glassfish.gmbal.Description;
@@ -11,25 +15,11 @@ import java.util.LinkedHashMap;
import java.util.Vector;
public class Configuration extends riDBObject {
//конфигурация = данные для пакета.
//группы
//тесты
//настройки тестируемого объекта
//пакет = запуск конфигурация + тестируемый объект
//---
@Description("DEFAULT ''")
public String packedGroupsIds = "";
@Description("DEFAULT ''")
public String packedTestsIds = "";
//---
@Description("DEFAULT ''")
public String packedGroupsNames = "";
//---
@Description("DEFAULT 0")
public int groupsCount = 0;
@Description("DEFAULT 0")
public int testsCount = 0;
//--
public int maxtime = 300;
@Description("DEFAULT 0")
public int autoTesting = 0;
@@ -39,75 +29,87 @@ public class Configuration extends riDBObject {
//--
public String getFlags(){return "";}
public Vector<String> getFlagsArray(){return new Vector<>();}
public Vector<String> getGroupsNamesArray(){
return Utils.unpack_s(packedGroupsNames,"\n");
}
//--
@Description("DEFAULT ''")
public String packedGroupsJson = "";
@Description("DEFAULT ''")
public String packedTestsJson = "";
//----
//---данные для отображения. кешировать их где-то еще?
@Description("IGNORE")
public GroupsJson groupsJson = null;
@Description("IGNORE")
public Vector<String> groupsDescriptions = null;
@Description("IGNORE")
public TestsJson testsJson = null;
//--
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
Configuration c = (Configuration) src;
//--
packedGroupsIds = c.packedGroupsIds;
packedTestsIds = c.packedTestsIds;
//-
packedGroupsNames = c.packedGroupsNames;
//-
groupsCount = c.groupsCount;
testsCount = c.testsCount;
//-
maxtime = c.maxtime;
autoTesting= c.autoTesting;
//-
packedGroupsJson= c.packedGroupsJson;
packedTestsJson = c.packedTestsJson;
}
//-
public void saveGroups(Vector<Group> new_groups) {
Vector<String> res = new Vector<>();
Vector<String> names = new Vector<>();
for (Group group : new_groups) {
res.add(String.valueOf(group.id));
names.add(group.description);
public void saveGroupsAsJson(Vector<Group> groups) {
packedGroupsJson = Utils.jsonToPrettyFormat(Utils.gson.toJson(new GroupsJson(groups)));
}
void unpackGroupsAsJson() {
if (groupsJson == null) {
if (packedGroupsJson.isEmpty())
groupsJson = new GroupsJson(); //просто пустой
else
groupsJson = Utils.gson.fromJson(packedGroupsJson, GroupsJson.class);
}
packedGroupsIds = String.join("\n", res);
packedGroupsNames = String.join("\n", names);
groupsCount = new_groups.size();
}
public void saveTests(Vector<Test> new_tests) {
Vector<String> res = new Vector<>();
for (Test test : new_tests)
res.add(String.valueOf(test.id));
packedTestsIds = String.join("\n", res);
testsCount = new_tests.size();
public Vector<String> getGroupsDescriptions() {
if (groupsDescriptions==null) {
unpackGroupsAsJson();
groupsDescriptions = new Vector<>();
for (GroupJson groupJson : groupsJson.array)
groupsDescriptions.add(groupJson.description);
}
return groupsDescriptions;
}
//--
public Vector<Group> getGroups() {
//здесь обращение реже так что буферизовать список групп не надо, тем более может меняться.
unpackGroupsAsJson();
Vector<Group> res = new Vector<>();
for (int o_id : Utils.unpackIntegers(packedGroupsIds, "\n"))
if (Global.testingServer.db.groups.containsKey(o_id))
res.add(Global.testingServer.db.groups.get(o_id));
for (GroupJson groupJson: groupsJson.array){
if (Global.testingServer.db.groups.containsKey(groupJson.id))
res.add(Global.testingServer.db.groups.get(groupJson.id));
}
return res;
}
//--------------------------------------------------------------------->>>
public void saveTestsAsJson(Vector<Test> tests) {
packedTestsJson = Utils.jsonToPrettyFormat(Utils.gson.toJson(new TestsJson(tests)));
}
void unpackTestsAsJson() {
if (testsJson == null) {
if (packedTestsJson.isEmpty())
testsJson = new TestsJson(); //просто пустой
else
testsJson = Utils.gson.fromJson(packedTestsJson, TestsJson.class);
}
}
public int getTestsCount(){
unpackTestsAsJson();
return testsJson.array.size();
}
public Vector<Test> getTests() {
//здесь обращение реже так что буферизовать список групп не надо, тем более может меняться.
unpackTestsAsJson();
Vector<Test> res = new Vector<>();
for (int o_id : Utils.unpackIntegers(packedTestsIds, "\n"))
if (Global.testingServer.db.tests.containsKey(o_id))
res.add(Global.testingServer.db.tests.get(o_id));
return res;
}
public Vector<Test> getTests(Vector<Group> groups, LinkedHashMap<Integer, Vector<Test>> testByGroups) {
Vector<Test> res = new Vector<>();
for (int o_id : Utils.unpackIntegers(packedTestsIds, "\n"))
if (Global.testingServer.db.tests.containsKey(o_id))
res.add(Global.testingServer.db.tests.get(o_id));
//--
for (Group group: groups){
Vector<Test> groupTests = new Vector<>();
for (Test test:res){
if (test.group_id==group.id)
groupTests.add(test);
}
testByGroups.put(group.id, groupTests);
for (TestJson testJson: testsJson.array){
if (Global.testingServer.db.tests.containsKey(testJson.id))
res.add(Global.testingServer.db.tests.get(testJson.id));
}
//--
return res;
}
}

View File

@@ -1,6 +1,9 @@
package TestingSystem.Common.Configuration;
package TestingSystem.Common.Configuration.Json;
import TestingSystem.Common.Configuration.Configuration;
import com.google.gson.annotations.Expose;
public class ConfigurationJson {
import java.io.Serializable;
public class ConfigurationJson implements Serializable {
@Expose
public int id;
@Expose

View File

@@ -1,9 +1,11 @@
package TestingSystem.Common.Configuration;
package TestingSystem.Common.Configuration.Json;
import TestingSystem.Common.Configuration.Configuration;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
import java.util.List;
import java.util.Vector;
public class ConfigurationsJson {
public class ConfigurationsJson implements Serializable {
@Expose
public List<ConfigurationJson> array =new Vector<>();
public ConfigurationsJson(){

View File

@@ -0,0 +1,16 @@
package TestingSystem.Common.Group.Json;
import TestingSystem.Common.Group.Group;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
public class GroupJson implements Serializable {
@Expose
public int id;
@Expose
public String description;
public GroupJson(Group group){
id=group.id;
description= group.description;
}
public GroupJson(){}
}

View File

@@ -0,0 +1,19 @@
package TestingSystem.Common.Group.Json;
import TestingSystem.Common.Group.Group;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
import java.util.List;
import java.util.Vector;
public class GroupsJson implements Serializable {
@Expose
public List<GroupJson> array = new Vector<>();
public GroupsJson() {
}
//при создании пакета.
public GroupsJson(Vector<Group> groups) {
array = new Vector<>();
for (Group group : groups)
array.add(new GroupJson(group));
}
}

View File

@@ -0,0 +1,13 @@
package TestingSystem.Common.Test.Json;
import TestingSystem.Common.Test.Test;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
public class TestJson implements Serializable {
@Expose
public int id;
public TestJson(Test test){
id=test.id;
}
public TestJson(){}
}

View File

@@ -0,0 +1,19 @@
package TestingSystem.Common.Test.Json;
import TestingSystem.Common.Test.Test;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
import java.util.List;
import java.util.Vector;
public class TestsJson implements Serializable {
@Expose
public List<TestJson> array = new Vector<>();
public TestsJson() {
}
//при создании пакета.
public TestsJson(Vector<Test> tests) {
array = new Vector<>();
for (Test test : tests)
array.add(new TestJson(test));
}
}

View File

@@ -4,8 +4,8 @@ import Common.Database.DBObject;
import Common.Database.riDBObject;
import Common.Utils.Utils;
import TestingSystem.Common.Configuration.Configuration;
import TestingSystem.Common.Configuration.ConfigurationJson;
import TestingSystem.Common.Configuration.ConfigurationsJson;
import TestingSystem.Common.Configuration.Json.ConfigurationJson;
import TestingSystem.Common.Configuration.Json.ConfigurationsJson;
import TestingSystem.Common.TasksPackageState;
import com.sun.org.glassfish.gmbal.Description;
@@ -29,12 +29,12 @@ public abstract class TestingPackage<J> extends riDBObject {
//---данные для отображения.
@Description("DEFAULT ''")
public String packedConfigurationsJson = "";
public TasksPackageState state = TasksPackageState.Draft;
//--
@Description("IGNORE")
public ConfigurationsJson configurationsJson = null;
@Description("IGNORE")
public Vector<String> configurationsDescriptions = null;
//----
public TasksPackageState state = TasksPackageState.Draft;
//--
@Override
public void SynchronizeFields(DBObject src) {
@@ -66,8 +66,8 @@ public abstract class TestingPackage<J> extends riDBObject {
public boolean isLoaded() {
return new File(getLocalWorkspace(), Constants.LOADED).exists();
}
//------------------------
@Description("IGNORED")
//json где хранятся задачи----------------------------------
@Description("IGNORE")
public J package_json = null;
public abstract Class getJsonClass();
public abstract File getHomeDirectory();
@@ -86,15 +86,13 @@ public abstract class TestingPackage<J> extends riDBObject {
public void destructor() {
package_json = null;
}
//----------------------------------------------------------
public void saveConfigurationsAsJson(Vector<? extends Configuration> configurations) {
packedConfigurationsJson = Utils.gson.toJson(new ConfigurationsJson(configurations));
System.out.println(Utils.Brackets(packedConfigurationsJson));
packedConfigurationsJson = Utils.jsonToPrettyFormat(Utils.gson.toJson(new ConfigurationsJson(configurations)));
}
//пакеты нередактируемые поэтому метод сработает только один раз.
public void unpackConfigurationsAsJson() {
void unpackConfigurationsAsJson() {
if (configurationsJson == null) {
System.out.println("package get Json");
if (packedConfigurationsJson.isEmpty())
configurationsJson = new ConfigurationsJson(); //просто пустой
else

View File

@@ -71,9 +71,9 @@ public class DVMConfigurationDBTable extends iDBTable<DVMConfiguration> {
case 4:
return object.printAuto();
case 5:
return object.getGroupsNamesArray();
return object.getGroupsDescriptions();
case 6:
return object.testsCount;
return object.getTestsCount();
//---
case 7:
return Utils.unpackStrings(object.flags, true);

View File

@@ -45,8 +45,8 @@ public class SaveCurrentDVMConfiguration extends EditServerObject<TestingServer,
@Override
protected void ServerAction() throws Exception {
//занесение информации об участвующих группах конфигурациях и тестах
target.saveGroups(groups);
target.saveTests(tests);
target.saveGroupsAsJson(groups);
target.saveTestsAsJson(tests);
//--
super.ServerAction();
}

View File

@@ -142,7 +142,16 @@ public class StartSelectedDVMConfigurations extends PublishServerObject<TestingS
//----
for (DVMConfiguration configuration: configurations) {
groups = configuration.getGroups();
tests = configuration.getTests(groups, testByGroups);
tests = configuration.getTests();
//-
for (Group group: groups){
Vector<Test> groupTests = new Vector<>();
for (Test test: tests){
if (test.group_id==group.id)
groupTests.add(test);
}
testByGroups.put(group.id, groupTests);
}
//--
for (Group group : groups) {
Vector<Test> groupTests = testByGroups.get(group.id);