подправил кеширование отображаемых данных ( чтобы не распаковывать каждый раз список имен групп и прочее)

This commit is contained in:
2024-09-18 13:37:11 +03:00
parent f55a3a6324
commit 0cef474233
18 changed files with 181 additions and 85 deletions

View File

@@ -1,17 +1,13 @@
package TestingSystem.Common.Configuration;
import Common.Database.DBObject;
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;
import java.util.LinkedHashMap;
import java.util.Vector;
public class Configuration extends riDBObject {
//конфигурация = данные для пакета.
@@ -34,14 +30,13 @@ public class Configuration extends riDBObject {
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;
//--
public void saveGroupsAsJson(Vector<Group> groups) {
packedGroupsJson = Utils.jsonToPrettyFormat(Utils.gson.toJson(new GroupsJson(groups)));
}
public void saveTestsAsJson(Vector<Test> tests) {
packedTestsJson = Utils.jsonToPrettyFormat(Utils.gson.toJson(new TestsJson(tests)));
}
//--
@Override
public void SynchronizeFields(DBObject src) {
@@ -55,60 +50,4 @@ public class Configuration extends riDBObject {
packedTestsJson = c.packedTestsJson;
}
//-
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);
}
}
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 (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 (TestJson testJson: testsJson.array){
if (Global.testingServer.db.tests.containsKey(testJson.id))
res.add(Global.testingServer.db.tests.get(testJson.id));
}
return res;
}
}