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 { //конфигурация = данные для пакета. //группы //тесты //настройки тестируемого объекта //пакет = запуск конфигурация + тестируемый объект //--- public int maxtime = 300; @Description("DEFAULT 0") public int autoTesting = 0; public String printAuto(){ return autoTesting>0? "Да":"Нет"; } //-- public String getFlags(){return "";} public Vector getFlagsArray(){return new Vector<>();} //-- @Description("DEFAULT ''") public String packedGroupsJson = ""; @Description("DEFAULT ''") public String packedTestsJson = ""; //---- //---данные для отображения. кешировать их где-то еще? проблема что отправляются на сервер почем зря. @Description("IGNORE") public GroupsJson groupsJson = null; @Description("IGNORE") public Vector groupsDescriptions = null; @Description("IGNORE") public TestsJson testsJson = null; //-- @Override public void SynchronizeFields(DBObject src) { super.SynchronizeFields(src); Configuration c = (Configuration) src; //-- maxtime = c.maxtime; autoTesting= c.autoTesting; //- packedGroupsJson= c.packedGroupsJson; packedTestsJson = c.packedTestsJson; } //- public void saveGroupsAsJson(Vector 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 getGroupsDescriptions() { if (groupsDescriptions==null) { unpackGroupsAsJson(); groupsDescriptions = new Vector<>(); for (GroupJson groupJson : groupsJson.array) groupsDescriptions.add(groupJson.description); } return groupsDescriptions; } public Vector getGroups() { //здесь обращение реже так что буферизовать список групп не надо, тем более может меняться. unpackGroupsAsJson(); Vector 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 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 getTests() { //здесь обращение реже так что буферизовать список групп не надо, тем более может меняться. unpackTestsAsJson(); Vector 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; } }