package SapforTestingSystem.Json; import Common.Utils.Utils; import GlobalData.Tasks.TaskState; import SapforTestingSystem.SapforTask.MatchState; import SapforTestingSystem.SapforTask.SapforTask; import com.google.gson.annotations.Expose; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Vector; public class SapforTasksResults_json { @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 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 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; } } //--- /* public LinkedHashMap>>>> sortTasksForComparisonTree() { LinkedHashMap>>>> res = new LinkedHashMap<>(); for (MatchState matchState : MatchState.values()) { LinkedHashMap>>> state_tasks = new LinkedHashMap<>(); res.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); } } } //-- } //-- //рассортировать задачи по конфигурациям. return res; } */