промежуточный. оптимизация хранения связанных с пакетом конфигураций и их отображения. перевод на json формат хранящийся в бд как строка

This commit is contained in:
2024-09-17 01:04:41 +03:00
parent 7bd4600a25
commit df9fb2e2a2
7 changed files with 68 additions and 49 deletions

View File

@@ -0,0 +1,13 @@
package TestingSystem.Common.Configuration;
import com.google.gson.annotations.Expose;
public class ConfigurationJson {
@Expose
public int id;
@Expose
public String description;
public ConfigurationJson(Configuration configuration){
id=configuration.id;
description= configuration.description;
}
public ConfigurationJson(){}
}

View File

@@ -0,0 +1,17 @@
package TestingSystem.Common.Configuration;
import com.google.gson.annotations.Expose;
import java.util.List;
import java.util.Vector;
public class ConfigurationsJson {
@Expose
public List<ConfigurationJson> array =new Vector<>();
public ConfigurationsJson(){
}
//при создании пакета.
public ConfigurationsJson(Vector<? extends Configuration> configurations){
array =new Vector<>();
for (Configuration configuration:configurations)
array.add(new ConfigurationJson(configuration));
}
}

View File

@@ -2,11 +2,11 @@ package TestingSystem.Common.TestingPackage;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.riDBObject;
import Common.Global;
import Common.Utils.Utils;
import TestingSystem.Common.Configuration.Configuration;
import TestingSystem.Common.Configuration.ConfigurationJson;
import TestingSystem.Common.Configuration.ConfigurationsJson;
import TestingSystem.Common.TasksPackageState;
import TestingSystem.DVM.DVMConfiguration.DVMConfiguration;
import com.sun.org.glassfish.gmbal.Description;
import java.io.File;
@@ -26,14 +26,14 @@ public abstract class TestingPackage<J> extends riDBObject {
public long ChangeDate = 0;
@Description("DEFAULT 0")
public int connectionErrosCount = 0;
//--todo хранить их как json в текстовом формате.
//---данные для отображения.
@Description("DEFAULT ''")
public String packedConfigurationsIds = "";
@Description("DEFAULT ''")
public String packedConfigurationsNames = "";
@Description("DEFAULT 0")
public int configurationsCount = 0;
//---
public String packedConfigurationsJson = "";
@Description("IGNORE")
public ConfigurationsJson configurationsJson = null;
@Description("IGNORE")
public Vector<String> configurationsDescriptions = null;
//----
public TasksPackageState state = TasksPackageState.Draft;
//--
@Override
@@ -53,9 +53,7 @@ public abstract class TestingPackage<J> extends riDBObject {
connectionErrosCount = tp.connectionErrosCount;
state = tp.state;
//--
packedConfigurationsIds = tp.packedConfigurationsIds;
packedConfigurationsNames = tp.packedConfigurationsNames;
configurationsCount = tp.configurationsCount;
packedConfigurationsJson= tp.packedConfigurationsJson;
}
public TestingPackage(TestingPackage p) {
SynchronizeFields(p);
@@ -88,22 +86,28 @@ public abstract class TestingPackage<J> extends riDBObject {
public void destructor() {
package_json = null;
}
public Vector<DVMConfiguration> getConfigurations() {
Vector<DVMConfiguration> res = new Vector<>();
for (int o_id : Utils.unpackIntegers(packedConfigurationsIds, "\n"))
if (Global.testingServer.db.dvm_configurations.containsKey(o_id))
res.add(Global.testingServer.db.dvm_configurations.get(o_id));
return res;
public void saveConfigurationsAsJson(Vector<? extends Configuration> configurations) {
packedConfigurationsJson = Utils.gson.toJson(new ConfigurationsJson(configurations));
System.out.println(Utils.Brackets(packedConfigurationsJson));
}
public void saveConfigurations(Vector<? extends Configuration> new_configurations) {
Vector<String> res = new Vector<>();
Vector<String> names = new Vector<>();
for (Configuration configuration : new_configurations) {
res.add(String.valueOf(configuration.id));
names.add(configuration.description);
//пакеты нередактируемые поэтому метод сработает только один раз.
public void unpackConfigurationsAsJson() {
if (configurationsJson == null) {
System.out.println("package get Json");
if (packedConfigurationsJson.isEmpty())
configurationsJson = new ConfigurationsJson(); //просто пустой
else
configurationsJson = Utils.gson.fromJson(packedConfigurationsJson, ConfigurationsJson.class);
}
packedConfigurationsIds = String.join("\n", res);
packedConfigurationsNames = String.join("\n", names);
configurationsCount = new_configurations.size();
}
public Vector<String> getConfigurationsDescriptions() {
if (configurationsDescriptions==null) {
unpackConfigurationsAsJson();
configurationsDescriptions = new Vector<>();
for (ConfigurationJson configurationJson : configurationsJson.array)
configurationsDescriptions.add(configurationJson.description);
}
return configurationsDescriptions;
}
}

View File

@@ -4,12 +4,9 @@ import Common.Database.iDBTable;
import Common.Global;
import Common.UI.DataSetControlForm;
import Common.UI.UI;
import TestingSystem.Common.TestingPackage.TestingPackage;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.Vector;
import static Common.UI.Tables.TableRenderers.*;
public class DVMPackageDBTable extends iDBTable<DVMPackage> {
@@ -69,11 +66,7 @@ public class DVMPackageDBTable extends iDBTable<DVMPackage> {
"Машина",
"Пользователь",
"DVM",
//-
"конфигурации",
// "группы",
// "тестов",
//-
"Задач",
"Ядер",
"Прогресс",
@@ -82,11 +75,6 @@ public class DVMPackageDBTable extends iDBTable<DVMPackage> {
"Статус"
};
}
public static Vector<String> getConfigurationsNames(TestingPackage object){
String[] data = object.packedConfigurationsNames.split("\n");
return new Vector<String>(Arrays.asList(data));
}
@Override
public Object getFieldAt(DVMPackage object, int columnIndex) {
switch (columnIndex) {
@@ -99,11 +87,7 @@ public class DVMPackageDBTable extends iDBTable<DVMPackage> {
case 5:
return object.version;
case 6:
return getConfigurationsNames(object);
// case 7:
// return getGroupsNames(object);
// case 8:
// return object.testsCount;
return object.getConfigurationsDescriptions();
case 7:
return object.tasksCount;
case 8:

View File

@@ -176,7 +176,7 @@ public class AddTasksToDVMPackage extends Pass_2021<DVMPackage> {
}
json.compilationTasks.addAll(tasks);
//--
target.saveConfigurations(configurations);
target.saveConfigurationsAsJson(configurations);
//--
target.tasksCount += tasks_count;
target.state= TasksPackageState.Inactive;

View File

@@ -157,7 +157,7 @@ public class StartSelectedDVMConfigurations extends PublishServerObject<TestingS
@Override
protected void ServerAction() throws Exception {
//занесение информации об участвующих конфигурациях
target.saveConfigurations(configurations);
target.saveConfigurationsAsJson(configurations);
target.saveTasks(tasks, tasks_count);
super.ServerAction();
}