@@ -1,4 +1,5 @@
package _VisualDVM.Repository.Server ;
import Common.CommonConstants ;
import Common.Database.Objects.DBObject ;
import Common.Database.RepositoryRefuseException ;
import Common.Utils.Utils_ ;
@@ -58,7 +59,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
int day = rightNow . get ( Calendar . DAY_OF_MONTH ) ;
int hour = rightNow . get ( Calendar . HOUR_OF_DAY ) ;
int minute = rightNow . get ( Calendar . MINUTE ) ;
if ( ( hour = = Global . p roperties. BackupHour ) & & ( minute = = Global . p roperties. BackupMinute ) ) {
if ( ( hour = = Global . componentsServerP roperties. BackupHour ) & & ( minute = = Global . componentsServerP roperties. BackupMinute ) ) {
//определить имя папки с багом.
String backUpName = year + " _ " + ( month + 1 ) + " _ " + ( day ) ;
File todayBackUp = Paths . get ( Global . DataBackUpsDirectory . getAbsolutePath ( ) , backUpName ) . toFile ( ) ;
@@ -120,12 +121,12 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
}
@Override
public void StartAction ( ) throws Exception {
if ( Global . p roperties. EmailAdminsOnStart ) {
if ( Global . componentsServerP roperties. EmailAdminsOnStart ) {
EmailMessage message = new EmailMessage (
" Сервер Sapfor запущен " ,
new Date ( ) . toString ( )
) ;
for ( String address : Constants . admins_mails ) {
for ( String address : Constants . admins_mails ) {
Email ( message , address ) ;
}
}
@@ -135,278 +136,275 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
BugReport bugReport = null ;
Subscriber subscriber = null ;
Account account = null ;
if ( ! Global . properties . OldServer ) {
switch ( code ) {
//<editor-fold desc="Регистрация">
case CheckSubscriberRole :
Print ( " Проверить роль пользователя " ) ;
switch ( code ) {
//<editor-fold desc="Регистрация">
case CheckSubscriberRole :
Print ( " Проверить роль пользователя " ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
account = ( Account ) request . object ;
if ( db . subscribers . containsKey ( account . email ) ) {
subscriber = db . subscribers . get ( account . email ) ;
} else {
subscriber = new Subscriber ( ) ;
subscriber . name = account . name ;
subscriber . address = account . email ;
subscriber . mailOn = 1 ;
db . Insert ( subscriber ) ;
}
response . object = subscriber ; //возвращаем информацию о подписчике.
break ;
//</editor-fold>
//<editor-fold desc="БАГ РЕПОРТЫ">
case ReceiveAllArchives :
Print ( " Отправить клиенту архив всех архивов б а г репортов " ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
ZipFolderPass zip = new ZipFolderPass ( ) ;
File archives = new File ( Utils_ . getDateName ( " Bugs " ) ) ;
if ( zip . Do ( " Bugs " , archives . getAbsolutePath ( ) ) ) {
response . object = Utils_ . fileToBytes ( archives ) ;
Print ( " Архив успешно запакован " ) ;
} else throw new RepositoryRefuseException ( " Н е удалось запаковать архивы" ) ;
break ;
case UpdateBugReport :
//-
BugReport oldBugReport = ( BugReport ) request . object ;
Print ( " Обновить б а г репорт " + oldBugReport . id ) ;
if ( db . bugReports . containsKey ( oldBugReport . id ) ) {
bugReport = db . bugReports . get ( oldBugReport . id ) ;
bugReport . SynchronizeFields ( oldBugReport ) ;
bugReport . change_date = oldBugReport . change_date ;
db . Update ( bugReport ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
account = ( Account ) request . object ;
if ( db . subscribers . containsKey ( account . email ) ) {
subscriber = db . subscribers . get ( account . email ) ;
} else {
subscriber = new Subscriber ( ) ;
subscriber . name = account . name ;
subscriber . address = account . email ;
subscriber . mailOn = 1 ;
db . Insert ( subscriber ) ;
}
response . object = subscriber ; //возвращаем информацию о подписчике.
break ;
//</editor-fold>
//<editor-fold desc="БАГ РЕПОРТЫ">
case ReceiveAllArchives :
Print ( " Отправить клиенту архив всех архивов б а г репортов " ) ;
} else
throw new RepositoryRefuseException ( " Баг репорт с ключом " + oldBugReport . id + " не существует. " ) ;
break ;
case UpdateBugReportField : //нужно для дополнений полей
//-
BugReport oldBugReport_ = ( BugReport ) request . object ;
Print ( " Обновить поле " + request . arg + " б а г репорта " + oldBugReport_ . id ) ;
if ( db . bugReports . containsKey ( oldBugReport_ . id ) ) {
bugReport = db . bugReports . get ( oldBugReport_ . id ) ;
Object newValue = BugReport . class . getField ( request . arg ) . get ( oldBugReport_ ) ;
BugReport . class . getField ( request . arg ) . set ( bugReport , newValue ) ;
bugReport . change_date = oldBugReport_ . change_date ;
db . Update ( bugReport ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
ZipFolderPass zip = new ZipFolderPass ( ) ;
File archives = new File ( Utils_ . getDateName ( " Bugs " ) ) ;
if ( zip . Do ( " Bugs " , archives . getAbsolutePath ( ) ) ) {
response . object = Utils_ . fileToBytes ( archives ) ;
Print ( " Архив успешно запакован " ) ;
} else throw new RepositoryRefuseException ( " Н е удалось запаковать архивы" ) ;
break ;
case UpdateBugReport :
//-
BugReport oldBugReport = ( BugReport ) request . object ;
Print ( " Обновить б а г репорт " + oldBugReport . id ) ;
if ( db . bugReports . containsKey ( oldBugReport . id ) ) {
bugReport = db . bugReports . get ( oldBugReport . id ) ;
bugReport . SynchronizeFields ( oldBugReport ) ;
bugReport . change_date = oldBugReport . change_date ;
db . Update ( bugReport ) ;
} else
throw new RepositoryRefuseException ( " Баг репорт с ключом " + oldBugReport_ . id + " не существует. " ) ;
break ;
case ReceiveBugReportsDatabase :
Print ( " Получить базу данных б а г репортов " ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( db . getFile ( ) ) ;
break ;
case ReceiveBugReport :
Print ( " Скачать б а г репорт по ключу " + request . arg ) ;
File bugArchive = Paths . get ( Utils_ . getHomePath ( ) , " Bugs " , request . arg ) . toFile ( ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( bugArchive ) ;
break ;
case SendBugReport :
Print ( " Отправить б а г репорт " + request . arg ) ;
File bugArchive1 = Paths . get ( Utils_ . getHomePath ( ) , " Bugs " , request . arg ) . toFile ( ) ;
Utils_ . bytesToFile ( ( byte [ ] ) request . object , bugArchive1 ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
//</editor-fold>
case GetComponentsBackups :
Print ( " Получить список сохраненных версий компонента " + request . arg ) ;
File backupsDirectory = Paths . get ( Utils_ . getHomePath ( ) , " Components " , request . arg , " Backups " ) . toFile ( ) ;
//--
if ( backupsDirectory . exists ( ) ) {
File [ ] files = backupsDirectory . listFiles ( File : : isFile ) ;
if ( files ! = null ) {
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
Vector < RemoteFile > res = new Vector < > ( ) ;
for ( File file : files )
res . add ( new RemoteFile ( file . getAbsolutePath ( ) , false ) ) ; //тут всегда линух.
response . object = res ;
} else
throw new RepositoryRefuseException ( " Баг репорт с ключом " + oldBugReport . id + " не существует. " ) ;
break ;
case UpdateBugReportField : //нужно для дополнений полей
//-
BugReport oldBugReport_ = ( BugReport ) request . object ;
Print ( " Обновить поле " + request . arg + " б а г репорта " + oldBugReport_ . id ) ;
if ( db . bugReports . containsKey ( oldBugReport_ . id ) ) {
bugReport = db . bugReports . get ( oldBugReport_ . id ) ;
Object newValue = BugReport . class . getField ( request . arg ) . get ( oldBugReport_ ) ;
BugReport . class . getField ( request . arg ) . set ( bugReport , newValue ) ;
bugReport . change_date = oldBugReport_ . change_date ;
db . Update ( bugReport ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
} else
throw new RepositoryRefuseException ( " Баг репорт с ключом " + oldBugReport_ . id + " не существует. " ) ;
break ;
case ReceiveBugReportsDatabase :
Print ( " Получить базу данных б а г репортов " ) ;
throw new RepositoryRefuseException ( " Н е удалось получить список предыдущих версий" ) ;
} else {
//баги еще не создавались. штатная ситуация.
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( db . getFile ( ) ) ;
break ;
case ReceiveBugReport :
Print ( " Скачать б а г репорт по ключу " + request . arg ) ;
File bugArchive = Paths . get ( Utils_ . getHomePath ( ) , " Bugs " , request . arg ) . toFile ( ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( bugArchive ) ;
break ;
case SendBug Rep ort :
Print ( " Отправить б а г репорт " + request . arg ) ;
File bugArchive1 = Paths . get ( Utils_ . getHomePath ( ) , " Bugs " , request . arg ) . toFile ( ) ;
Utils_ . bytesToFile ( ( byte [ ] ) request . object , bugArchive1 ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
//</editor-fold>
case GetComponentsBackups :
Print ( " Получить список сохраненных версий компонента " + request . arg ) ;
File backupsDirectory = Paths . get ( Utils_ . getHomePath ( ) , " Components " , request . arg , " Backups " ) . toFile ( ) ;
//--
if ( backupsDirectory . exists ( ) ) {
File [ ] files = backupsDirectory . listFiles ( File : : isFile ) ;
if ( files ! = null ) {
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
Vector < RemoteFile > res = new Vector < > ( ) ;
for ( File file : files )
res . add ( new Remote File ( file . getAbsolutePath ( ) , false ) ) ; //тут всегда линух.
response . object = res ;
} else
throw new RepositoryRefuseException ( " Н е удалось получить список предыдущих версий" ) ;
} else {
//баги еще не создавались. штатная ситуация.
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = new Vector < > ( ) ;
}
break ;
case PublishComponent :
String [ ] packed = request . arg . split ( " \ n " ) ;
String sComponentType = packed [ 0 ] ;
String componentFileName = packed [ 1 ] ;
String sComponentVersion = packed [ 2 ] ;
String componentChangeRecord = request . arg . substring (
sComponentType . length ( ) +
componentFileName . length ( ) +
sComponentVersion . length ( ) +
3
response . object = new Vector < > ( ) ;
}
break ;
case PublishComponent :
String [ ] packed = request . arg . split ( " \ n " ) ;
String sComponentType = packed [ 0 ] ;
String componentFileName = packed [ 1 ] ;
String sComponentVersion = packed [ 2 ] ;
String componentChange Rec ord = request . arg . substring (
sComponentType . length ( ) +
componentFileName . length ( ) +
sComponentVersion . length ( ) +
3
) ;
Print ( " Опубликовать компонент " + sComponentType ) ;
File componentFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , componentFileName ) . toFile ( ) ;
File versionFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " version.txt " ) . toFile ( ) ;
File backupsFolder = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " Backups " ) . toFile ( ) ;
//0 архивация старой версии, если она есть.
if ( componentFile . exists ( ) ) {
String versionText = " " ;
if ( versionFile . exists ( ) )
versionText = Utils . ReadAllText ( versionFile ) ;
//---->>
Utils_ . CheckDirectory ( backupsFolder ) ;
Utils . keepNew Files ( backupsFolder , Global . componentsServerProperties . ComponentsBackUpsCount ) ;
//-->>
File backupFile = new File ( backupsFolder , sComponentType + " _ " + versionText ) ;
if ( backupFile . exists ( ) )
Utils_ . forceDeleteWithCheck ( backupFile ) ;
FileUtils . moveFile ( componentFile , backupFile ) ;
}
//1 распаковка компонента
Utils_ . bytesToFile ( ( byte [ ] ) request . object , componentFile ) ;
//2 запись версии компонента
FileUtils . writeStringToFile ( versionFile , sComponentVersion ) ;
//3 запись в журнал компонента
File changesLog = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " changes.txt " ) . toFile ( ) ;
FileWriter writer = new FileWriter ( changesLog . getAbsolutePath ( ) , true ) ;
BufferedWriter bufferWriter = new BufferedWriter ( writer ) ;
bufferWriter . write ( componentChangeRecord ) ;
bufferWriter . close ( ) ;
//-
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
case UpdateComponentMinimalVersion :
String [ ] packed_ = request . arg . split ( " \ n " ) ;
String sComponentType_ = packed_ [ 0 ] ;
String sComponentMinimalVersion = packed_ [ 1 ] ;
Print ( " Поднять минимальную версию компонента " + sComponentType_ ) ;
File minimal_versionFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType_ , " minimal_version.txt " ) . toFile ( ) ;
FileUtils . writeStringToFile ( minimal_versionFile , sComponentMinimalVersion ) ;
//-
//3 запись в журнал компонента
File changesLog_ = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType_ , " changes.txt " ) . toFile ( ) ;
FileWriter writer_ = new FileWriter ( changesLog_ . getAbsolutePath ( ) , true ) ;
BufferedWriter bufferWriter_ = new BufferedWriter ( writer_ ) ;
bufferWriter_ . write ( " Минимальная версия поднята до " + sComponentMinimalVersion + " \ n " ) ;
bufferWriter_ . close ( ) ;
//-
//-
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
case ReceiveComponent :
String [ ] packed1 = request . arg . split ( " \ n " ) ;
//тип/имя файла
File componentFile1 = Paths . get ( Utils_ . getHomePath ( ) , " Components " , packed1 [ 0 ] , packed1 [ 1 ] ) . toFile ( ) ;
Print ( " Получить компонент " + packed1 [ 0 ] ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( componentFile1 ) ;
break ;
default :
throw new RepositoryRefuseException ( " Неподдерживаемый код: " + code ) ;
case GetComponentsVersions :
Print ( " Получить актуальные версии компонентов (NEW) " ) ;
String [ ] types = request . arg . split ( " \ n " ) ;
LinkedHashMap < ComponentType , String > response_actual_versions_ = new LinkedHashMap < > ( ) ;
for ( String sType : types ) {
ComponentType componentType = ComponentType . valueOf ( sType ) ;
File vFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sType , " version.txt " ) . toFile ( ) ;
String v_string = Utils_ . removeCharacters (
Utils . ReadAllText ( vFile ) ,
" \ n " , " \ r "
) ;
Print ( " Опубликовать компонент " + sComponentType ) ;
File componentFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , componentFileName ) . toFile ( ) ;
File versionFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " version.txt " ) . toFile ( ) ;
File backupsFolder = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " Backups " ) . toFile ( ) ;
//0 архивация старой версии, если она есть.
if ( componentFile . exists ( ) ) {
String versionText = " " ;
if ( versionFile . exists ( ) )
versionText = Utils . ReadAllText ( versionFile ) ;
//---->>
Utils_ . CheckDirectory ( backupsFolder ) ;
Utils . keepNewFiles ( backupsFolder , Global . properties . ComponentsBackUpsCount ) ;
//-->>
File backupFile = new F ile ( backupsFolder , sComponentType + " _ " + versionText ) ;
if ( backupFile . exists ( ) )
Utils_ . forceDeleteWithCheck ( backupFile ) ;
FileUtils . moveFile ( componentFil e , backupFile ) ;
}
//1 распаковка компонента
Utils_ . bytesToFile ( ( byte [ ] ) request . object , componentFile ) ;
//2 запись версии компонента
FileUtils . writeStringToFile ( versionFile , s ComponentVersion ) ;
//3 запись в журнал компонента
File changesLog = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType , " changes.txt " ) . toFile ( ) ;
FileWriter writer = new FileWri ter ( changesLog . getAbsolut ePath ( ) , true ) ;
BufferedWriter bufferWriter = new BufferedWriter ( writer ) ;
bufferWriter . write ( componentChangeRecord ) ;
bufferWriter . close ( ) ;
//-
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
case UpdateComponentMinimalVersion :
String [ ] packed_ = request . arg . split ( " \ n " ) ;
String sComponentType_ = packed_ [ 0 ] ;
String sComponentMinimalVersion = packed_ [ 1 ] ;
Print ( " Поднять минимальную версию компонента " + sComponentType_ ) ;
File minimal_versionFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType_ , " minimal_version.txt " ) . toFile ( ) ;
FileUtils . writeStringToFile ( minimal_versionFile , sComponentMinimalVersion ) ;
//-
//3 запись в журнал компонента
File changesLog_ = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sComponentType_ , " changes.txt " ) . toFile ( ) ;
FileWriter writer_ = new FileWriter ( changesLog_ . getAbsolutePath ( ) , true ) ;
BufferedWriter bufferWriter_ = new BufferedWriter ( writer_ ) ;
bufferWriter_ . write ( " Минимальная версия поднята до " + sComponentMinimalVersion + " \ n " ) ;
bufferWriter_ . close ( ) ;
//-
//-
respons e = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
break ;
cas e ReceiveComponent :
String [ ] packed1 = request . arg . split ( " \ n " ) ;
//тип/имя файла
File componentFile1 = Paths . get ( Utils_ . getHomePath ( ) , " Components " , packed1 [ 0 ] , packed1 [ 1 ] ) . toFile ( ) ;
Print ( " Получить компонент " + packed1 [ 0 ] ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( componentFile1 ) ;
break ;
default :
throw new RepositoryRefuseException ( " Неподдерживаемый код: " + code ) ;
case GetComponentsVersions :
Print ( " Получить актуальные версии компонентов (NEW) " ) ;
String [ ] types = request . arg . split ( " \ n " ) ;
LinkedHashMap < ComponentType , String > response_actual_versions_ = new LinkedHashMap < > ( ) ;
for ( String sType : types ) {
ComponentType componentType = ComponentType . valueOf ( sType ) ;
File vFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sType , " version.txt " ) . toFile ( ) ;
String v_string = Utils_ . removeCharacters (
Utils . ReadAllText ( vFile ) ,
" \ n " , " \ r "
) ;
response_actual_versions_ . put ( componentType , v_string ) ;
}
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = response_actual_versions_ ;
break ;
case GetComponentsMinimalVersions :
Print ( " Получить минимальные версии компонентов (NEW) " ) ;
String [ ] types_ = request . arg . split ( " \ n " ) ;
LinkedHashMap < ComponentType , String > response_minimal_versions_ = new LinkedHashMap < > ( ) ;
for ( String sType : types_ ) {
ComponentType componentType = ComponentType . valueOf ( sType ) ;
File vFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sType , " minimal_version.txt " ) . toFile ( ) ;
String mv_string = Utils_ . removeCharacters (
Utils . ReadAllText ( vFile ) ,
" \ n " , " \ r "
) ;
response_minimal_versions_ . put ( componentType , mv_string ) ;
}
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = response_minimal_versions_ ;
break ;
case GetComponentChangesLog :
Print ( " Получить журнал изменений компонента " + request . arg ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBytes ( Paths . get ( Utils_ . getHomePath ( ) , " Components " , request . arg , " changes.txt " ) . toFile ( ) ) ;
break ;
case CheckURLRegistered :
Print ( " Проверить учетную запись на машине " ) ;
String [ ] data = request . arg . split ( " \ n " ) ;
String email = data [ 0 ] ;
String machineURL = data [ 1 ] ;
String login = data [ 2 ] ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = db . workspaces . findWorkspace ( email , machineURL , login ) ;
break ;
case DVMConvertProject :
Print ( " Сконвертировать проект в DVM код " ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
String [ ] args = request . arg . split ( " \ n " ) ;
//-
String projectName = args [ 0 ] ;
LanguageName projectLanguage = LanguageName . valueOf ( args [ 1 ] ) ;
String options = args [ 2 ] ;
Vector < String > filesNames = new Vector < > ( Arrays . asList ( args ) . subList ( 3 , args . length ) ) ;
//-
File workspace = Utils . getTempFileName ( " convertation " ) ;
FileUtils . forceMkdir ( workspace ) ;
File archive = new File ( workspace , projectName + " .zip " ) ;
request . Unpack ( archive ) ;
File project = new File ( workspace , projectName ) ;
Vector < String > badFiles = new Vector < > ( ) ;
if ( unzip . Do ( archive . getAbsolutePath ( ) , workspace . getAbsolutePath ( ) ) & & project . exists ( ) ) {
String output = " " ;
for ( String fileName : filesNames ) {
File program = Paths . get ( project . getAbsolutePath ( ) , fileName ) . toFile ( ) ;
//--
File convertedProgram = Paths . get ( program . getParent ( ) ,
Utils_ . getFileNameWithoutExtension ( program ) + " .DVMH. " +
( projectLanguage . equals ( LanguageName . fortran ) ? " f " : " c " )
) . toFile ( ) ;
String command =
Utils_ . DQuotes ( server_dvm_drv ) + " " +
projectLanguage . getDVMCompile ( ) + " dv " +
options + " "
+ Utils_ . DQuotes ( program . getName ( ) ) ;
//--
File fileWorkspace = program . getParentFile ( ) ;
Process process = Utils . startScript ( workspace , fileWorkspace , Utils_ . getDateName ( " convert_script " ) , command ) ;
process . waitFor ( ) ;
String convertationOut = Utils . readAllOutput ( process ) ;
convertationOut = convertationOut . replace ( program . getName ( ) , fileName ) ; //для учета пути.
if ( ! convertationOut . isEmpty ( ) )
output + = convertationOut + " \ n " ;
try {
if ( convertedProgram . exists ( ) ) {
FileUtils . forceDelete ( program ) ;
convertedProgram . renameTo ( program ) ;
} else badFiles . add ( program . getName ( ) ) ;
} catch ( Exception ex ) {
ex . printStackTrace ( ) ;
}
//--
}
response . arg = String . join ( " \ n " , badFiles ) + " | " + output ;
File resultArchive = new File ( workspace , projectName + " _result.zip " ) ;
if ( ComponentsServer . zip . Do ( project . getAbsolutePath ( ) , resultArchive . getAbsolutePath ( ) ) ) {
response . object = Utils_ . fileToBytes ( resultArchive ) ;
} else
throw new RepositoryRefuseException ( " Внутренняя ошибка. Н е удалось запаковать версию " ) ;
response_actual_versions_ . put ( componentType , v_string ) ;
}
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = response_actual_versions_ ;
break ;
case GetComponentsMinimalVersions :
Print ( " Получить минимальные версии компонентов (NEW) " ) ;
String [ ] types_ = request . arg . split ( " \ n " ) ;
LinkedHashMap < ComponentType , String > response_minimal_versions_ = new LinkedHashMap < > ( ) ;
for ( String sType : types_ ) {
ComponentType componentType = ComponentType . valueOf ( sType ) ;
File vFile = Paths . get ( Utils_ . getHomePath ( ) , " Components " , sType , " minimal_version.txt " ) . toFile ( ) ;
String mv_string = Utils_ . removeCharacters (
Ut ils . ReadAllText ( vFile ) ,
" \ n " , " \ r "
) ;
response_minimal_versions_ . put ( componentTyp e , mv_string ) ;
}
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = response_minimal_versions_ ;
break ;
case Get ComponentChangesLog :
Print ( " Получить журнал изменений компонента " + request . arg ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = Utils_ . fileToBy tes ( Paths . get ( Utils_ . getHom ePath ( ) , " Components " , request . arg , " changes.txt " ) . toFile ( ) ) ;
break ;
case CheckURLRegistered :
Print ( " Проверить учетную запись на машине " ) ;
String [ ] data = request . arg . split ( " \ n " ) ;
String email = data [ 0 ] ;
String machineURL = data [ 1 ] ;
String login = data [ 2 ] ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
response . object = db . workspaces . findWorkspace ( email , machineURL , login ) ;
break ;
case DVMConvertProject :
Print ( " Сконвертировать проект в DVM код " ) ;
response = new ServerExchangeUnit_2021 ( ServerCode . OK ) ;
String [ ] args = request . arg . split ( " \ n " ) ;
//-
String projectName = args [ 0 ] ;
LanguageName projectLanguage = LanguageName . valueOf ( args [ 1 ] ) ;
String options = args [ 2 ] ;
Vector < String > filesNames = new Vector < > ( Arrays . asList ( args ) . subList ( 3 , args . length ) ) ;
//-
File workspace = Utils . getTempFileName ( " convertation " ) ;
FileUtils . forceMkdir ( workspace ) ;
File archiv e = new File ( workspace , projectName + " .zip " ) ;
request . Unpack ( archive ) ;
Fil e project = new File ( workspace , projectName ) ;
Vector < String > badFiles = new Vector < > ( ) ;
if ( unzip . Do ( archive . getAbsolutePath ( ) , workspace . getAbsolutePath ( ) ) & & project . exists ( ) ) {
String output = " " ;
for ( String fileName : filesNames ) {
File program = Paths . get ( project . getAbsolutePath ( ) , fileName ) . toFile ( ) ;
//--
File convertedProgram = Paths . get ( program . getParent ( ) ,
Utils_ . getFileNameWithoutExtension ( program ) + " .DVMH. " +
( projectLanguage . equals ( LanguageName . fortran ) ? " f " : " c " )
) . toFile ( ) ;
String command =
Utils_ . DQuotes ( server_dvm_drv ) + " " +
projectLanguage . getDVMCompile ( ) + " dv " +
options + " "
+ Utils_ . DQuotes ( program . getName ( ) ) ;
//--
File fileWorkspace = program . getParentFile ( ) ;
Process process = Utils . startScript ( workspace , fileWorkspace , Utils_ . getDateName ( " convert_script " ) , command ) ;
process . waitFor ( ) ;
String convertationOut = Utils . readAllOutput ( process ) ;
convertationOut = convertationOut . replace ( program . getName ( ) , fileName ) ; //для учета пути.
if ( ! convertationOut . isEmpty ( ) )
output + = convertationOut + " \ n " ;
try {
if ( convertedProgram . exists ( ) ) {
FileUtils . forceDelete ( program ) ;
convertedProgram . renameTo ( program ) ;
} else badFiles . add ( program . getName ( ) ) ;
} catch ( Exception ex ) {
ex . printStackTrace ( ) ;
}
//--
}
response . arg = String . join ( " \ n " , badFiles ) + " | " + output ;
File resultArchive = new File ( workspace , projectName + " _result.zip " ) ;
if ( ComponentsServer . zip . Do ( project . getAbsolutePath ( ) , resultArchive . getAbsolutePath ( ) ) ) {
response . object = Utils_ . fileToBytes ( resultArchive ) ;
} else
throw new RepositoryRefuseException ( " Внутренняя ошибка. Н е удалось р а с паковать проект " ) ;
break ;
}
} else
response = new ServerExchangeUnit_2021 ( ServerCode . OLD ) ;
throw new RepositoryRefuseException ( " Внутренняя ошибка. Н е удалось за паковать версию " ) ;
//--
} else
throw new RepositoryRefuseException ( " Внутренняя ошибка. Н е удалось распаковать проект " ) ;
break ;
}
}
@Override
protected void startAdditionalThreads ( ) {