package TestingSystem.SAPFOR.SapforTask; import Common.Constants; import Common.Database.DBObject; import Common.Utils.Utils; import GlobalData.Tasks.TaskState; import TestingSystem.SAPFOR.Json.SapforVersion_json; import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforPackageTreeNode; import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforTaskNode; import TestingSystem.SAPFOR.SapforTasksPackage.UI.VersionSummary; import Visual_DVM_2021.Passes.PassCode_2021; import com.google.gson.annotations.Expose; import com.sun.org.glassfish.gmbal.Description; import javax.swing.tree.DefaultMutableTreeNode; import java.io.File; import java.util.Date; import java.util.LinkedHashMap; import java.util.Vector; public class SapforTask extends DBObject { //------------------------------------>> @Expose public long id = Constants.Nan; @Expose public int set_id = 0; @Expose public int sapfor_configuration_id = Constants.Nan; @Expose public long sapfortaskspackage_id = Constants.Nan; //------------------------------------->> @Expose public String test_description = ""; @Expose public String group_description = ""; @Expose public String flags = ""; @Expose public String codes = ""; @Expose public long StartDate = 0; //дата начала выполнения @Expose public long ChangeDate = 0;//дата окончания выполнения //в json не выносить. это только для БД. @Description("DEFAULT ''") public String versionsDescription = ""; //------ @Description("IGNORE") @Expose public Vector versions = new Vector<>(); //---------- @Description("IGNORE") @Expose public Vector variants = new Vector<>(); //------------------------------------------------- @Expose public TaskState state = TaskState.Inactive; @Description("IGNORE") public MatchState comparisonState = MatchState.Unknown; //для сравнения. в обычном режиме всегда Unknown! //-------------------------------------------------- public String getUniqueKey() { return group_description + "_" + test_description + "_" + sapfor_configuration_id; } public String getSummary() { Vector lines = new Vector<>(); lines.add(group_description); lines.add(test_description); lines.add(codes); lines.add(flags); return String.join(" ", lines); } //----------- public SapforTask() { } public DefaultMutableTreeNode getVersionsTree(File configurationRoot) { VersionSummary root = null; VersionSummary child = null; VersionSummary parent = null; //-- for (SapforVersion_json version_json : versions) { version_json.task = this; // System.out.println(version_json.version); //- version_json.init(configurationRoot); child = new VersionSummary(version_json); if (parent == null) { root = child; parent = child; } else { parent.add(child); parent = child; } //- } if (parent != null) { for (SapforVersion_json version_json : variants) { version_json.task = this; version_json.init(configurationRoot); parent.add(new VersionSummary(version_json)); } } //-- return root; } public void Reset() { state = TaskState.Inactive; versions.clear(); variants.clear(); } public SapforTask(SapforTask src) { this.SynchronizeFields(src); } @Override public Object getPK() { return id; } @Override public void SynchronizeFields(DBObject object) { super.SynchronizeFields(object); SapforTask t = (SapforTask) object; id = t.id; set_id = t.set_id; sapfor_configuration_id = t.sapfor_configuration_id; sapfortaskspackage_id = t.sapfortaskspackage_id; //- test_description = t.test_description; group_description = t.group_description; versionsDescription = t.versionsDescription; //-- codes = t.codes; state = t.state; //-- } public String getVersionsChain() { Vector versionsLines = new Vector<>(); for (int i = 1; i < versions.size(); ++i) { versionsLines.add(Utils.Brackets(versions.get(i).description)); } if (!variants.isEmpty()) { versionsLines.add(Utils.Brackets(PassCode_2021.CreateParallelVariants.getDescription())); } return String.join("→", versionsLines); } public LinkedHashMap getSortedVersions() { LinkedHashMap res = new LinkedHashMap<>(); for (SapforVersion_json version_json : versions) res.put(version_json.version, version_json); //-- for (SapforVersion_json version_json : variants) res.put(version_json.version, version_json); return res; } public void checkMatch(SapforTask task2) { //todo Для каждого случая подобрать иконку (?) if (!state.equals(task2.state)) { System.out.println("Не совпадение состояний задачи " + getUniqueKey()); //-- comparisonState = MatchState.NotMatch; task2.comparisonState = MatchState.NotMatch; //-- } else if ((versions.size() != task2.versions.size())|| (variants.size() != task2.variants.size())) { System.out.println("Не совпадение количества версий в задаче " + getUniqueKey()); //-- comparisonState = MatchState.NotMatch; task2.comparisonState = MatchState.NotMatch; //-- } else { LinkedHashMap versions1 = getSortedVersions(); LinkedHashMap versions2 = task2.getSortedVersions(); //--- for (String name1 : versions1.keySet()) { if (!versions2.containsKey(name1)) { System.out.println("Не совпадение имен версий в задаче " + getUniqueKey()); //-- comparisonState = MatchState.NotMatch; task2.comparisonState = MatchState.NotMatch; //-- return; } } System.out.println("сравнение версий."); //-- for (String name1 : versions1.keySet()) { System.out.println("version name=" + name1); SapforVersion_json version1 = versions1.get(name1); SapforVersion_json version2 = versions2.get(name1); //--- if (!version1.isMatch(version2)) { System.out.println("Не совпадение кода версий в задаче " + getUniqueKey()); //- comparisonState = MatchState.NotMatch; task2.comparisonState = MatchState.NotMatch; //- return; } } comparisonState = MatchState.Match; task2.comparisonState = MatchState.Match; } } public Date getStartDate() { return new Date(StartDate); } public Date getChangeDate() { return new Date(ChangeDate); } @Override public String toString() { return "#"+id+" группа " + Utils.Brackets(group_description) + " тест " + Utils.Brackets(test_description) + " конфигурация " + Utils.Brackets(sapfor_configuration_id); // getUniqueKey(); } public String getPassesInfo() { String res = ""; String[] data = codes.split(" "); Vector strings = new Vector<>(); for (String code_s : data) { PassCode_2021 code = PassCode_2021.valueOf(code_s); strings.add(Utils.Brackets(code.getDescription())); } return String.join("→", strings); } //--- public DefaultMutableTreeNode getNode(File configurationRoot) { SapforPackageTreeNode res = new SapforTaskNode(this); //- DefaultMutableTreeNode flags_info = new DefaultMutableTreeNode("флаги: " + this.flags); DefaultMutableTreeNode passes_info = new DefaultMutableTreeNode("проходы: " + getPassesInfo()); //- int total_versions_count = versions.size() + variants.size(); DefaultMutableTreeNode versions_info = new DefaultMutableTreeNode("версии: " + total_versions_count); versions_info.add(getVersionsTree(configurationRoot)); //-- res.add(flags_info); res.add(passes_info); res.add(versions_info); return res; } }