2023-11-19 02:12:44 +03:00
package TestingSystem.SAPFOR.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-11-19 02:12:44 +03:00
import TestingSystem.SAPFOR.Json.SapforVersion_json ;
2024-02-24 23:06:49 +03:00
import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforPackageTreeNode ;
import TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforTaskNode ;
2023-11-19 02:12:44 +03:00
import TestingSystem.SAPFOR.SapforTasksPackage.UI.VersionSummary ;
import Visual_DVM_2021.Passes.PassCode_2021 ;
2023-09-17 22:13:42 +03:00
import com.google.gson.annotations.Expose ;
import com.sun.org.glassfish.gmbal.Description ;
2023-10-31 01:02:11 +03:00
import javax.swing.tree.DefaultMutableTreeNode ;
import java.io.File ;
2023-11-14 17:35:59 +03:00
import java.util.Date ;
2023-11-08 03:05:29 +03:00
import java.util.LinkedHashMap ;
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
//------------------------------------>>
@Expose
2023-09-29 21:46:08 +03:00
public long id = Constants . Nan ;
2023-12-25 02:07:37 +03:00
@Expose
public int set_id = 0 ;
2023-09-17 22:13:42 +03:00
@Expose
2023-11-17 22:03:13 +03:00
public int sapfor_configuration_id = Constants . Nan ;
2023-10-29 01:03:37 +03:00
@Expose
2023-11-21 17:44:59 +03:00
public long sapfortaskspackage_id = Constants . Nan ;
2023-09-17 22:13:42 +03:00
//------------------------------------->>
@Expose
public String test_description = " " ;
2023-10-18 22:16:22 +03:00
@Expose
2023-10-21 02:47:21 +03:00
public String group_description = " " ;
@Expose
2023-10-18 22:16:22 +03:00
public String flags = " " ;
2023-09-17 22:13:42 +03:00
@Expose
2023-10-24 19:42:01 +03:00
public String codes = " " ;
2023-09-17 22:13:42 +03:00
@Expose
2023-11-14 17:35:59 +03:00
public long StartDate = 0 ; //дата начала выполнения
@Expose
public long ChangeDate = 0 ; //дата окончания выполнения
2023-10-25 16:33:02 +03:00
//в json не выносить. это только для БД.
@Description ( " DEFAULT '' " )
public String versionsDescription = " " ;
//------
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 < > ( ) ;
2024-02-24 23:06:49 +03:00
//-------------------------------------------------
@Expose
public TaskState state = TaskState . Inactive ;
2023-11-06 22:20:18 +03:00
@Description ( " IGNORE " )
2024-02-25 15:42:46 +03:00
public MatchState comparisonState = MatchState . Unknown ; //для сравнения. в обычном режиме всегда Unknown!
2024-02-24 23:06:49 +03:00
//--------------------------------------------------
2023-11-08 03:05:29 +03:00
public String getUniqueKey ( ) {
2024-02-24 23:06:49 +03:00
return group_description + " _ " + test_description + " _ " + sapfor_configuration_id ;
2023-11-08 02:05:21 +03:00
}
2023-11-14 16:19:31 +03:00
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 ) ;
}
2023-09-30 22:02:58 +03:00
//-----------
2023-09-27 00:43:23 +03:00
public SapforTask ( ) {
2023-09-17 22:13:42 +03:00
}
2023-10-31 01:02:11 +03:00
public DefaultMutableTreeNode getVersionsTree ( File configurationRoot ) {
2023-11-29 14:25:10 +03:00
VersionSummary root = null ;
VersionSummary child = null ;
VersionSummary parent = null ;
2023-10-31 01:02:11 +03:00
//--
for ( SapforVersion_json version_json : versions ) {
2023-11-12 02:14:20 +03:00
version_json . task = this ;
2024-02-24 23:06:49 +03:00
// System.out.println(version_json.version);
2023-11-03 02:00:17 +03:00
//-
2024-02-24 23:06:49 +03:00
version_json . init ( configurationRoot ) ;
child = new VersionSummary ( version_json ) ;
2023-10-31 01:02:11 +03:00
if ( parent = = null ) {
root = child ;
parent = child ;
} else {
2024-02-24 23:06:49 +03:00
parent . add ( child ) ;
parent = child ;
2023-10-31 01:02:11 +03:00
}
2023-11-03 02:00:17 +03:00
//-
2023-10-31 01:02:11 +03:00
}
if ( parent ! = null ) {
for ( SapforVersion_json version_json : variants ) {
2023-11-12 02:14:20 +03:00
version_json . task = this ;
2024-02-24 23:06:49 +03:00
version_json . init ( configurationRoot ) ;
parent . add ( new VersionSummary ( version_json ) ) ;
2023-10-31 01:02:11 +03:00
}
}
//--
return root ;
}
2023-10-24 19:42:01 +03:00
public void Reset ( ) {
2023-10-23 01:32:28 +03:00
state = TaskState . Inactive ;
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 ;
2024-02-24 23:06:49 +03:00
set_id = t . set_id ;
2023-10-04 00:25:36 +03:00
sapfor_configuration_id = t . sapfor_configuration_id ;
2023-10-25 16:33:02 +03:00
sapfortaskspackage_id = t . sapfortaskspackage_id ;
//-
2023-09-17 22:13:42 +03:00
test_description = t . test_description ;
2023-10-25 16:33:02 +03:00
group_description = t . group_description ;
versionsDescription = t . versionsDescription ;
//--
codes = t . codes ;
2023-09-17 22:13:42 +03:00
state = t . state ;
2023-10-25 16:33:02 +03:00
//--
2023-09-17 22:13:42 +03:00
}
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
}
2023-10-25 16:33:02 +03:00
if ( ! variants . isEmpty ( ) ) {
versionsLines . add ( Utils . Brackets ( PassCode_2021 . CreateParallelVariants . getDescription ( ) ) ) ;
}
2023-10-20 02:16:12 +03:00
return String . join ( " → " , versionsLines ) ;
}
2023-11-08 03:05:29 +03:00
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 ;
2023-10-24 19:42:01 +03:00
}
2023-11-08 03:05:29 +03:00
public void checkMatch ( SapforTask task2 ) {
2024-02-25 01:50:56 +03:00
//todo Для каждого случая подобрать иконку (?)
2023-11-08 03:05:29 +03:00
if ( ! state . equals ( task2 . state ) ) {
2024-02-25 01:50:56 +03:00
System . out . println ( " Н е совпадение состояний задачи " + getUniqueKey ( ) ) ;
2024-02-25 15:42:46 +03:00
comparisonState = MatchState . NotMatch ;
task2 . comparisonState = MatchState . NotMatch ;
2024-02-25 01:50:56 +03:00
} else if ( ( versions . size ( ) ! = task2 . versions . size ( ) ) | | ( variants . size ( ) ! = task2 . variants . size ( ) ) ) {
System . out . println ( " Н е совпадение количества версий в задаче " + getUniqueKey ( ) ) ;
2024-02-25 15:42:46 +03:00
comparisonState = MatchState . NotMatch ;
task2 . comparisonState = MatchState . NotMatch ;
2024-02-25 01:50:56 +03:00
} else {
2023-11-08 03:05:29 +03:00
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 ( ) ) ;
2024-02-25 15:42:46 +03:00
comparisonState = MatchState . NotMatch ;
task2 . comparisonState = MatchState . NotMatch ;
2023-11-08 03:05:29 +03:00
return ;
}
2023-10-24 23:19:13 +03:00
}
2023-11-09 15:20:34 +03:00
System . out . println ( " сравнение версий. " ) ;
2023-10-24 23:19:13 +03:00
//--
2023-11-08 03:05:29 +03:00
for ( String name1 : versions1 . keySet ( ) ) {
2023-11-12 02:14:20 +03:00
System . out . println ( " version name= " + name1 ) ;
2023-11-08 03:05:29 +03:00
SapforVersion_json version1 = versions1 . get ( name1 ) ;
SapforVersion_json version2 = versions2 . get ( name1 ) ;
//---
if ( ! version1 . isMatch ( version2 ) ) {
System . out . println ( " Н е совпадение версий в задаче " + getUniqueKey ( ) ) ;
2024-02-25 15:42:46 +03:00
comparisonState = MatchState . NotMatch ;
task2 . comparisonState = MatchState . NotMatch ;
2023-11-08 03:05:29 +03:00
return ;
}
}
2024-02-25 15:42:46 +03:00
comparisonState = MatchState . Match ;
task2 . comparisonState = MatchState . Match ;
2023-10-24 23:19:13 +03:00
}
2023-10-25 20:46:17 +03:00
}
2023-11-17 22:03:13 +03:00
public Date getStartDate ( ) {
2023-11-14 17:35:59 +03:00
return new Date ( StartDate ) ;
}
2023-11-17 22:03:13 +03:00
public Date getChangeDate ( ) {
2023-11-14 17:35:59 +03:00
return new Date ( ChangeDate ) ;
}
2024-02-23 21:34:01 +03:00
@Override
public String toString ( ) {
return
2024-02-25 01:50:56 +03:00
" # " + id + " группа " + Utils . Brackets ( group_description ) + " тест " + Utils . Brackets ( test_description ) + " конфигурация " + Utils . Brackets ( sapfor_configuration_id ) ;
2024-02-24 23:06:49 +03:00
// getUniqueKey();
2024-02-23 21:34:01 +03:00
}
2024-02-24 23:06:49 +03:00
public String getPassesInfo ( ) {
2024-02-23 21:34:01 +03:00
String res = " " ;
2024-02-24 23:06:49 +03:00
String [ ] data = codes . split ( " " ) ;
2024-02-23 21:34:01 +03:00
Vector < String > strings = new Vector < > ( ) ;
2024-02-24 23:06:49 +03:00
for ( String code_s : data ) {
2024-02-23 21:34:01 +03:00
PassCode_2021 code = PassCode_2021 . valueOf ( code_s ) ;
strings . add ( Utils . Brackets ( code . getDescription ( ) ) ) ;
}
return String . join ( " → " , strings ) ;
}
//---
public DefaultMutableTreeNode getNode ( File configurationRoot ) {
2024-02-24 23:06:49 +03:00
SapforPackageTreeNode res = new SapforTaskNode ( this ) ;
//-
DefaultMutableTreeNode flags_info = new DefaultMutableTreeNode ( " флаги: " + this . flags ) ;
DefaultMutableTreeNode passes_info = new DefaultMutableTreeNode ( " проходы: " + getPassesInfo ( ) ) ;
2024-02-23 21:34:01 +03:00
//-
2024-02-24 23:06:49 +03:00
int total_versions_count = versions . size ( ) + variants . size ( ) ;
DefaultMutableTreeNode versions_info = new DefaultMutableTreeNode ( " версии: " + total_versions_count ) ;
2024-02-23 21:34:01 +03:00
versions_info . add ( getVersionsTree ( configurationRoot ) ) ;
//--
res . add ( flags_info ) ;
res . add ( passes_info ) ;
res . add ( versions_info ) ;
return res ;
}
2023-09-17 22:13:42 +03:00
}