2024-03-04 20:29:05 +03:00
package Visual_DVM_2021.Passes.All ;
import Common.Constants ;
import Common.Current ;
import Common.UI.UI ;
import Common.Utils.Files.VFileChooser ;
import Common.Utils.Utils ;
import GlobalData.Settings.SettingName ;
2024-03-05 16:49:57 +03:00
import Repository.Server.ServerCode ;
import Repository.Server.ServerExchangeUnit_2021 ;
2024-03-04 20:29:05 +03:00
import TestingSystem.Common.Group.Group ;
import TestingSystem.Common.Test.Test ;
import Visual_DVM_2021.Passes.PassCode_2021 ;
import Visual_DVM_2021.Passes.Pass_2021 ;
import Visual_DVM_2021.Passes.Server.TestingSystemPass ;
import java.io.File ;
import java.util.LinkedHashMap ;
import java.util.Vector ;
public class ReplaceTestsFromFiles extends TestingSystemPass < Vector < Test > > {
VFileChooser fileChooser = new VFileChooser ( " Выберите файлы для замены тестов " ) ;
2024-03-05 16:49:57 +03:00
//--
Group group ;
LinkedHashMap < Integer , Test > oldTests ;
2024-03-05 19:21:42 +03:00
Vector < Test > replaceTests ;
2024-03-05 16:49:57 +03:00
//--
2024-03-04 20:29:05 +03:00
@Override
public String getIconPath ( ) {
return " /icons/Menu/Undo.png " ;
}
//-
@Override
protected boolean canStart ( Object . . . args ) throws Exception {
if ( ! Current . Check ( Log , Current . Group ) )
return false ;
group = Current . getGroup ( ) ;
2024-03-05 16:49:57 +03:00
//--->>>
2024-03-04 20:29:05 +03:00
Utils . RestoreSelectedDirectory ( fileChooser ) ;
Vector < File > files = fileChooser . ShowMultiDialog ( ) ;
2024-03-05 19:21:42 +03:00
//---------------------------------------------------------------
2024-03-04 20:29:05 +03:00
//--
File dir = fileChooser . getCurrentDirectory ( ) ;
Pass_2021 . passes . get ( PassCode_2021 . UpdateSetting ) . Do ( SettingName . ProjectsSearchDirectory , dir ) ;
//---------------
if ( dir . getName ( ) . equals ( Constants . data ) ) {
Log . Writeln_ ( Utils . Brackets ( dir ) + " \ nявляе тс я служебной папкой визуализатора! " ) ;
return false ;
}
if ( ! Utils . validateProjectFile ( dir , Log ) ) {
Log . Writeln_ ( " Имя папки " + Utils . Brackets ( dir . getName ( ) ) + " содержит запрещённые символы " + Constants . all_forbidden_characters_string + " , или кириллицу. " ) ;
return false ;
}
2024-03-05 19:21:42 +03:00
if ( files . isEmpty ( ) ) {
Log . Writeln_ ( " Н е выбрано ни одного файла." ) ;
return false ;
}
//-----------------------------------------
LinkedHashMap < String , File > filesByNames = new LinkedHashMap < > ( ) ; //выделенные файлы, сортированные по именам.
//--
for ( File file : files ) {
String name = Utils . getNameWithoutExtension ( file . getName ( ) ) . toLowerCase ( ) ;
if ( ! filesByNames . containsKey ( name ) ) {
filesByNames . put ( name , file ) ;
}
}
2024-03-04 20:29:05 +03:00
//--
2024-03-05 16:49:57 +03:00
oldTests = new LinkedHashMap < > ( ) ;
2024-03-04 20:29:05 +03:00
Vector < String > testForReplaceNames = new Vector < > ( ) ;
2024-03-05 19:21:42 +03:00
//--
for ( String name : filesByNames . keySet ( ) ) {
boolean exists = false ;
for ( Test test : server . db . tests . Data . values ( ) ) {
if ( ( test . group_id = = group . id ) & & test . description . equals ( name ) ) {
exists = true ;
//--
oldTests . put ( test . id , test ) ;
testForReplaceNames . add ( name ) ;
break ;
}
}
2024-03-04 20:29:05 +03:00
}
2024-03-05 19:21:42 +03:00
//--
2024-03-05 16:49:57 +03:00
if ( oldTests . size ( ) = = 0 ) {
2024-03-04 20:29:05 +03:00
Log . Writeln_ ( " Н е найдено тестов на замену." ) ;
return false ;
}
//--
2024-03-05 18:39:41 +03:00
if ( UI . Question ( " Тесты \ n " + String . join ( " \ n " , testForReplaceNames ) + " \ nб у ду т заменены. Продолжить " ) ) {
2024-03-05 19:21:42 +03:00
replaceTests = new Vector < > ( ) ;
2024-03-05 16:49:57 +03:00
Pass_2021 createTestPass = passes . get ( PassCode_2021 . CreateTestFromFile ) ;
for ( Test old_test : oldTests . values ( ) ) {
2024-03-05 19:21:42 +03:00
File file = filesByNames . get ( old_test . description ) ;
2024-03-05 16:49:57 +03:00
if ( createTestPass . Do ( file , group ) ) {
Test new_test = ( Test ) createTestPass . target ;
2024-03-05 19:21:42 +03:00
replaceTests . add ( new_test ) ;
2024-03-05 16:49:57 +03:00
new_test . id = old_test . id ;
}
}
2024-03-04 20:29:05 +03:00
return true ;
} ;
return false ;
}
//-
@Override
protected void ServerAction ( ) throws Exception {
2024-03-05 19:21:42 +03:00
Command ( new ServerExchangeUnit_2021 ( ServerCode . ReplaceTestsCodes , null , replaceTests ) ) ;
2024-03-05 16:49:57 +03:00
}
@Override
protected void performFinish ( ) throws Exception {
super . performFinish ( ) ;
passes . get ( PassCode_2021 . SynchronizeTests ) . Do ( ) ;
2024-03-04 20:29:05 +03:00
}
}