2023-09-21 20:55:14 +03:00
|
|
|
package SapforTestingSystem.SapforTask;
|
2023-10-04 22:01:09 +03:00
|
|
|
import Common.Constants;
|
2023-09-17 22:13:42 +03:00
|
|
|
import Common.Database.DBObject;
|
2023-10-21 02:47:21 +03:00
|
|
|
import Common.Utils.Utils;
|
2023-09-17 22:13:42 +03:00
|
|
|
import GlobalData.Tasks.TaskState;
|
2023-09-21 20:55:14 +03:00
|
|
|
import SapforTestingSystem.Json.SapforVersion_json;
|
2023-09-17 22:13:42 +03:00
|
|
|
import com.google.gson.annotations.Expose;
|
|
|
|
|
import com.sun.org.glassfish.gmbal.Description;
|
2023-10-24 23:19:13 +03:00
|
|
|
import org.apache.commons.io.FileUtils;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
2023-10-24 23:19:13 +03:00
|
|
|
import java.io.File;
|
|
|
|
|
import java.nio.charset.Charset;
|
2023-10-22 23:22:49 +03:00
|
|
|
import java.util.List;
|
2023-09-17 22:13:42 +03:00
|
|
|
import java.util.Vector;
|
2023-09-27 00:43:23 +03:00
|
|
|
public class SapforTask extends DBObject {
|
2023-09-17 22:13:42 +03:00
|
|
|
//------------------------------------>>
|
|
|
|
|
@Description("PRIMARY KEY, UNIQUE")
|
|
|
|
|
@Expose
|
2023-09-29 21:46:08 +03:00
|
|
|
public long id = Constants.Nan;
|
2023-09-17 22:13:42 +03:00
|
|
|
@Description("DEFAULT '-1'")
|
|
|
|
|
@Expose
|
2023-10-04 00:25:36 +03:00
|
|
|
public String sapfor_configuration_id = "";
|
2023-09-17 22:13:42 +03:00
|
|
|
//------------------------------------->>
|
|
|
|
|
@Description("DEFAULT ''")
|
|
|
|
|
@Expose
|
|
|
|
|
public String test_description = "";
|
2023-09-30 22:02:58 +03:00
|
|
|
@Description("DEFAULT ''")
|
2023-10-18 22:16:22 +03:00
|
|
|
@Expose
|
2023-10-21 02:47:21 +03:00
|
|
|
public String group_description = "";
|
|
|
|
|
@Description("DEFAULT ''")
|
|
|
|
|
@Expose
|
2023-10-18 22:16:22 +03:00
|
|
|
public String flags = "";
|
|
|
|
|
@Description("DEFAULT ''")
|
2023-09-17 22:13:42 +03:00
|
|
|
@Expose
|
2023-10-24 19:42:01 +03:00
|
|
|
public String codes = "";
|
|
|
|
|
@Description("DEFAULT ''")
|
|
|
|
|
@Expose
|
2023-09-30 22:02:58 +03:00
|
|
|
public String root = "";
|
2023-09-17 22:13:42 +03:00
|
|
|
@Description("DEFAULT 'Inactive'")
|
|
|
|
|
@Expose
|
|
|
|
|
public TaskState state = TaskState.Inactive;
|
|
|
|
|
//-----------
|
2023-10-22 23:22:49 +03:00
|
|
|
@Description("IGNORE")
|
|
|
|
|
@Expose
|
|
|
|
|
public List<String> files = new Vector<>(); //файлы проекта.Брать из коррекции стиля кода. есть первой версия
|
|
|
|
|
//-------------------------------------->>
|
2023-09-30 22:02:58 +03:00
|
|
|
@Description("IGNORE")
|
|
|
|
|
@Expose
|
|
|
|
|
public Vector<SapforVersion_json> versions = new Vector<>();
|
2023-10-06 22:51:09 +03:00
|
|
|
//----------
|
2023-09-30 22:02:58 +03:00
|
|
|
@Description("IGNORE")
|
|
|
|
|
@Expose
|
|
|
|
|
public Vector<SapforVersion_json> variants = new Vector<>();
|
|
|
|
|
//-----------
|
2023-09-27 00:43:23 +03:00
|
|
|
public SapforTask() {
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
2023-10-24 19:42:01 +03:00
|
|
|
public void Reset() {
|
|
|
|
|
root = "";
|
2023-10-23 01:32:28 +03:00
|
|
|
state = TaskState.Inactive;
|
|
|
|
|
files.clear();
|
|
|
|
|
versions.clear();
|
|
|
|
|
variants.clear();
|
|
|
|
|
}
|
2023-09-27 00:43:23 +03:00
|
|
|
public SapforTask(SapforTask src) {
|
2023-09-17 22:13:42 +03:00
|
|
|
this.SynchronizeFields(src);
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public Object getPK() {
|
|
|
|
|
return id;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void SynchronizeFields(DBObject object) {
|
|
|
|
|
super.SynchronizeFields(object);
|
2023-09-27 00:43:23 +03:00
|
|
|
SapforTask t = (SapforTask) object;
|
2023-09-17 22:13:42 +03:00
|
|
|
id = t.id;
|
2023-10-04 00:25:36 +03:00
|
|
|
sapfor_configuration_id = t.sapfor_configuration_id;
|
2023-09-17 22:13:42 +03:00
|
|
|
test_description = t.test_description;
|
|
|
|
|
state = t.state;
|
|
|
|
|
}
|
2023-10-24 19:42:01 +03:00
|
|
|
public String getVersionsChain() {
|
2023-10-20 02:16:12 +03:00
|
|
|
Vector<String> versionsLines = new Vector<>();
|
2023-10-24 19:42:01 +03:00
|
|
|
for (int i = 1; i < versions.size(); ++i) {
|
2023-10-21 02:47:21 +03:00
|
|
|
versionsLines.add(Utils.Brackets(versions.get(i).description));
|
2023-10-20 02:16:12 +03:00
|
|
|
}
|
|
|
|
|
return String.join("→", versionsLines);
|
|
|
|
|
}
|
2023-10-24 23:19:13 +03:00
|
|
|
public static boolean compareVersionsFiles(SapforVersion_json version1, SapforVersion_json version2, List<String> files) throws Exception {
|
|
|
|
|
for (String fileName : files) {
|
|
|
|
|
File file1 = new File(version1.version, fileName);
|
|
|
|
|
if (!file1.exists()) return false;
|
|
|
|
|
File file2 = new File(version2.version, fileName);
|
|
|
|
|
if (!file2.exists()) return false;
|
|
|
|
|
String text1 = FileUtils.readFileToString(file1, Charset.defaultCharset());
|
|
|
|
|
String text2 = FileUtils.readFileToString(file2, Charset.defaultCharset());
|
|
|
|
|
if (!text1.equals(text2))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2023-10-24 19:42:01 +03:00
|
|
|
//должны совпасть им теста, флаги, и коды
|
|
|
|
|
public boolean isComparable(SapforTask task) throws Exception {
|
|
|
|
|
return test_description.equalsIgnoreCase(task.test_description) &&
|
|
|
|
|
flags.equalsIgnoreCase(task.flags) &&
|
|
|
|
|
codes.equalsIgnoreCase(task.codes);
|
|
|
|
|
}
|
2023-10-24 23:19:13 +03:00
|
|
|
public boolean Compare(SapforTask task, Vector<String> comparisonLog) throws Exception {
|
|
|
|
|
//1. сравнить списки файлов. без учета порядка.
|
|
|
|
|
if (files.size() != task.files.size())
|
|
|
|
|
return false;
|
|
|
|
|
for (String file1 : files) {
|
|
|
|
|
if (!task.files.contains(file1)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//2. сравнить состояния.
|
|
|
|
|
if (!state.equals(task.state))
|
|
|
|
|
return false;
|
|
|
|
|
//3. сравнить цепочки версий (?)
|
|
|
|
|
if (!getVersionsChain().equalsIgnoreCase(task.getVersionsChain()))
|
|
|
|
|
return false;
|
|
|
|
|
//4. сравнить версии. уже знаем что порядок преобразований идентичен и набор файлов одинаков.
|
|
|
|
|
// первая всегда исходная. поэтому не берется.
|
|
|
|
|
for (int i = 1; i < versions.size(); ++i) {
|
|
|
|
|
SapforVersion_json version1 = versions.get(i);
|
|
|
|
|
SapforVersion_json version2 = task.versions.get(i);
|
|
|
|
|
//--
|
|
|
|
|
if (!compareVersionsFiles(version1, version2, files)) return false;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|