промежуточный. оптимизация хранения связанных с пакетом конфигураций и их отображения. перевод на 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;
}
}