package TestingSystem.SAPFOR.Json; import Common.Utils.Utils; import GlobalData.Tasks.TaskState; import TestingSystem.SAPFOR.SapforTask.MatchState; import TestingSystem.SAPFOR.SapforTask.SapforTask; import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage; import TestingSystem.SAPFOR.SapforTasksPackage.UI.*; import com.google.gson.annotations.Expose; import javax.swing.tree.DefaultMutableTreeNode; import java.io.File; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Vector; public class SapforTasksResults_json { //--- public PackageSummary root = null; public PackageSummary comparison_root = null; //--- @Expose public long StartDate = 0; @Expose public long EndDate = 0; @Expose public List tasks = new Vector<>(); //все задачи по ключам. public LinkedHashMap allTasks = new LinkedHashMap<>(); public LinkedHashMap>>> sortedTasks = new LinkedHashMap<>(); //-- задачи, отсортированные для сравнения. public LinkedHashMap>>>> comparisonSortedTasks = new LinkedHashMap<>(); //---- public void buildTree(SapforTasksPackage package_in) { root = new PackageSummary(); //--- for (TaskState state : sortedTasks.keySet()) { //-- StateSummary stateSummary = new StateSummary(state); //-- LinkedHashMap>> tasksByConfigurations = sortedTasks.get(state); for (String configuration_id : tasksByConfigurations.keySet()) { //-- DefaultMutableTreeNode configurationNode = null; //-- LinkedHashMap> groups_tasks = tasksByConfigurations.get(configuration_id); for (String group : groups_tasks.keySet()) { //-- GroupSummary groupSummary = new GroupSummary(group); //-- for (SapforTask task : groups_tasks.get(group)) { //-- stateSummary.count++; root.count++; //-- if (configurationNode == null) { configurationNode = new ConfigurationSummary(configuration_id, task); } //-- groupSummary.add(task.getVersionsTree(new File(package_in.getLocalWorkspace(), configuration_id))); } if (configurationNode != null) configurationNode.add(groupSummary); } stateSummary.add(configurationNode); } if (stateSummary.count > 0) { root.add(stateSummary); } } } public void buildComparisonTree(SapforTasksPackage package_in) { comparison_root = new PackageSummary(); for (MatchState match_state : comparisonSortedTasks.keySet()) { //-- MatchesSummary matchesSummary = new MatchesSummary(match_state); //--- LinkedHashMap>>> task_states = comparisonSortedTasks.get(match_state); //--- for (TaskState state : task_states.keySet()) { //-- StateSummary stateSummary = new StateSummary(state); //-- LinkedHashMap>> tasksByConfigurations = task_states.get(state); for (String configuration_id : tasksByConfigurations.keySet()) { //-- DefaultMutableTreeNode configurationNode = null; //-- LinkedHashMap> groups_tasks = tasksByConfigurations.get(configuration_id); for (String group : groups_tasks.keySet()) { //-- GroupSummary groupSummary = new GroupSummary(group); //-- for (SapforTask task : groups_tasks.get(group)) { //-- stateSummary.count++; matchesSummary.count++; comparison_root.count++; //-- if (configurationNode == null) { configurationNode = new ConfigurationSummary(configuration_id, task); } //-- groupSummary.add(task.getVersionsTree(new File(package_in.getLocalWorkspace(), configuration_id))); } if (configurationNode != null) configurationNode.add(groupSummary); } stateSummary.add(configurationNode); } if (stateSummary.count > 0) { matchesSummary.add(stateSummary); } } //--- if (matchesSummary.count > 0) { comparison_root.add(matchesSummary); } } } //---- public void SortTasks() { sortedTasks.clear(); //-- for (TaskState state : TaskState.values()) { LinkedHashMap>> configuration_tasks = new LinkedHashMap<>(); sortedTasks.put(state, configuration_tasks); //-- for (SapforTask task : tasks) { if (task.state.equals(state)) { LinkedHashMap> groups_tasks = null; if (configuration_tasks.containsKey(task.sapfor_configuration_id)) { groups_tasks = configuration_tasks.get(task.sapfor_configuration_id); } else { groups_tasks = new LinkedHashMap<>(); configuration_tasks.put(task.sapfor_configuration_id, groups_tasks); } Vector tasks_ = null; if (groups_tasks.containsKey(task.group_description)) { tasks_ = groups_tasks.get(task.group_description); } else { tasks_ = new Vector<>(); groups_tasks.put(task.group_description, tasks_); } tasks_.add(task); } } //-- } //-- for (TaskState state : TaskState.values()) { LinkedHashMap>> configuration_tasks = sortedTasks.get(state); for (String configuration_id : configuration_tasks.keySet()) { LinkedHashMap> groups_tasks = configuration_tasks.get(configuration_id); for (String group : groups_tasks.keySet()) { Vector tasks_ = groups_tasks.get(group); tasks_.sort(Comparator.comparing(SapforTask::getUniqueKey)); } } } } public void SortTasksForComparison() { comparisonSortedTasks.clear(); //раскидать задачи по состояниям, конфигам, группам for (MatchState matchState : MatchState.values()) { LinkedHashMap>>> state_tasks = new LinkedHashMap<>(); comparisonSortedTasks.put(matchState, state_tasks); //-- for (TaskState state : TaskState.values()) { LinkedHashMap>> configuration_tasks = new LinkedHashMap<>(); state_tasks.put(state, configuration_tasks); //-- for (SapforTask task : tasks) { if (task.match.equals(matchState) && task.state.equals(state)) { LinkedHashMap> groups_tasks = null; if (configuration_tasks.containsKey(task.sapfor_configuration_id)) { groups_tasks = configuration_tasks.get(task.sapfor_configuration_id); } else { groups_tasks = new LinkedHashMap<>(); configuration_tasks.put(task.sapfor_configuration_id, groups_tasks); } Vector tasks = null; if (groups_tasks.containsKey(task.group_description)) { tasks = groups_tasks.get(task.group_description); } else { tasks = new Vector<>(); groups_tasks.put(task.group_description, tasks); } tasks.add(task); } } } //-- } //рассортировать задачи в группах по ключам. for (MatchState matchState : MatchState.values()) { LinkedHashMap>>> state_tasks = comparisonSortedTasks.get(matchState); for (TaskState state : TaskState.values()) { LinkedHashMap>> configuration_tasks = state_tasks.get(state); for (String configuration_id : configuration_tasks.keySet()) { LinkedHashMap> groups_tasks = configuration_tasks.get(configuration_id); for (String group : groups_tasks.keySet()) { Vector tasks_ = groups_tasks.get(group); tasks_.sort(Comparator.comparing(SapforTask::getUniqueKey)); } } } } } public void DropComparison(){ comparison_root = null; comparisonSortedTasks.clear(); for (SapforTask task : allTasks.values()) task.match = MatchState.NotMatch; } //--- public String getEmailSummary() { String res = ""; Vector summary_lines = new Vector<>(); summary_lines.add("Всего задач: " + tasks.size()); for (TaskState state : sortedTasks.keySet()) { LinkedHashMap>> tasksByConfigurations = sortedTasks.get(state); if (!tasksByConfigurations.isEmpty()) { int count = 0; if (!state.equals(TaskState.Done)) { Vector flagsLines = new Vector<>(); for (String configuration_id : tasksByConfigurations.keySet()) { LinkedHashMap> tasksByGroups = tasksByConfigurations.get(configuration_id); for (String group : tasksByGroups.keySet()) { Vector tasks = tasksByGroups.get(group); flagsLines.add("Группа " + group + ": " + tasks.size()); count += tasks.size(); for (SapforTask task : tasks) { task.versionsDescription = task.getVersionsChain(); flagsLines.add( "тест: " + Utils.Brackets(task.test_description) + " " + "флаги: " + Utils.Brackets(task.flags) + " " + "версии: " + task.versionsDescription // + " " + "конфигурация " + task.sapfor_configuration_id ); } } } summary_lines.add(state.getDescription() + " :" + count); summary_lines.addAll(flagsLines); } else { for (String flags : tasksByConfigurations.keySet()) { LinkedHashMap> tasksByGroups = tasksByConfigurations.get(flags); for (String group : tasksByGroups.keySet()) { Vector tasks = tasksByGroups.get(group); for (SapforTask task : tasks) task.versionsDescription = task.getVersionsChain(); count += tasks.size(); } } summary_lines.add(state.getDescription() + " :" + count); } } } res = String.join("\n", summary_lines); return res; } //--- }