обновлены проходы создания группы из папки, и теста из папки. Осталось обновить загрузку тестов из репозитория, там тоже задействована размерность.
This commit is contained in:
@@ -11,6 +11,7 @@ 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 org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Vector;
|
||||
@@ -26,11 +27,11 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
}
|
||||
@Override
|
||||
protected boolean needsAnimation() {
|
||||
return from_directory_chooser;
|
||||
return true;
|
||||
}
|
||||
Group group = null;
|
||||
File dir = null;
|
||||
boolean from_directory_chooser=false;
|
||||
boolean from_directory_chooser = false;
|
||||
Vector<ProjectFile> project_files = new Vector<>();
|
||||
@Override
|
||||
protected boolean canStart(Object... args) throws Exception {
|
||||
@@ -42,7 +43,7 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
dir = directoryChooser.ShowDialog();
|
||||
group = Current.getGroup();
|
||||
if (dir == null) {
|
||||
if (from_directory_chooser) Log.Writeln_("Папка не выбрана.");
|
||||
Log.Writeln_("Папка не выбрана.");
|
||||
return false;
|
||||
} else {
|
||||
Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir.getParent());
|
||||
@@ -62,21 +63,23 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
int other_project_files = 0;
|
||||
//---
|
||||
if (dir.getName().equalsIgnoreCase(Constants.data)) {
|
||||
if (from_directory_chooser)
|
||||
Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора.");
|
||||
Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора.");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if (!Utils.validateProjectFile(dir, Log)) {
|
||||
Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу.");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if (files == null) {
|
||||
if (from_directory_chooser)
|
||||
Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + ".");
|
||||
Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + ".");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
for (File file : files) {
|
||||
if (!Utils.validateProjectFile(file, Log)) {
|
||||
if (from_directory_chooser)
|
||||
Log.Writeln_("Имя файла " + Utils.Brackets(file.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу.");
|
||||
Log.Writeln_("Имя файла " + Utils.Brackets(file.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу.");
|
||||
bad++;
|
||||
}
|
||||
if (file.isDirectory() && !file.getName().equalsIgnoreCase(Constants.data)) {
|
||||
@@ -103,20 +106,18 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
}
|
||||
//--
|
||||
if (subdirs > 0) {
|
||||
if (from_directory_chooser) Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки.");
|
||||
Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки.");
|
||||
return false;
|
||||
}
|
||||
if (bad > 0) {
|
||||
return false;
|
||||
}
|
||||
if (fortran_programs == 0) {
|
||||
if (from_directory_chooser)
|
||||
Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + ".");
|
||||
Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + ".");
|
||||
return false;
|
||||
}
|
||||
if (other_project_files > 0) {
|
||||
if (from_directory_chooser)
|
||||
Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными.");
|
||||
Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными.");
|
||||
return false;
|
||||
}
|
||||
//-----
|
||||
@@ -141,11 +142,13 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
//--
|
||||
db_project_info project = target.packCode(dir); //создание копии папки, и архивация.
|
||||
//-- получить размерность консольным сапфором. папка уже отправлена и чистить ее не нужно!!
|
||||
File sapfor_copy = Utils.getTempFileName("SAPFOR");
|
||||
FileUtils.copyFile(Current.getSapfor().getFile(), sapfor_copy);
|
||||
ShowMessage2("Синтаксический анализ");
|
||||
if (Sapfor.parse(Current.getSapfor().getFile(), project.Home, Current.getSapfor().getConsoleFlags())
|
||||
if (Sapfor.parse(sapfor_copy, project.Home, Current.getSapfor().getConsoleFlags())
|
||||
) {
|
||||
ShowMessage2("Определение размерности");
|
||||
if (Sapfor.analysis(Current.getSapfor().getFile(), project.Home,
|
||||
if (Sapfor.analysis(sapfor_copy, project.Home,
|
||||
PassCode_2021.SPF_GetMaxMinBlockDistribution,
|
||||
Current.getSapfor().getConsoleFlags())) {
|
||||
for (String line : Sapfor.outputLines) {
|
||||
@@ -162,7 +165,6 @@ public class CreateTestFromDirectory extends Pass_2021<Test> {
|
||||
} else {
|
||||
Log.Writeln_("Не удалось выполнить синтаксический анализ проекта " + Utils.Brackets(dir.getName()));
|
||||
}
|
||||
//todo получить значение из файла вывода анализа.
|
||||
}
|
||||
@Override
|
||||
protected boolean validate() {
|
||||
|
||||
Reference in New Issue
Block a user