238 lines
9.0 KiB
Java
238 lines
9.0 KiB
Java
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<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 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<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;
|
||
}
|
||
}
|
||
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;
|
||
}
|
||
}
|