Files
VisualSapfor/src/TestingSystem/SAPFOR/SapforTask/SapforTask.java

247 lines
9.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package TestingSystem.SAPFOR.SapforTask;
import Common.Constants;
import Common.Database.DBObject;
import Common.UI.UI;
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<SapforVersion_json> versions = new Vector<>();
//----------
@Description("IGNORE")
@Expose
public Vector<SapforVersion_json> 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<String> 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<String> 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<String, SapforVersion_json> getSortedVersions() {
LinkedHashMap<String, SapforVersion_json> res = new LinkedHashMap<>();
for (SapforVersion_json version_json : versions)
res.put(version_json.version, version_json);
//--
for (SapforVersion_json variant_json : variants)
res.put(variant_json.version, variant_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;
return;
//--
}
if ((versions.size() != task2.versions.size()) || (variants.size() != task2.variants.size())) {
System.out.println("Не совпадение количества версий в задаче " + getUniqueKey());
//--
comparisonState = MatchState.NotMatch;
task2.comparisonState = MatchState.NotMatch;
return;
//--
}
LinkedHashMap<String, SapforVersion_json> versions1 = getSortedVersions();
LinkedHashMap<String, SapforVersion_json> 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;
if (this.id==161){
UI.Info("!");
System.out.println(comparisonState+"/"+task2.comparisonState);
UI.Info("!!");
}
}
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<String> 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;
}
}