Доделал определение размерности консолью.
This commit is contained in:
@@ -520,6 +520,10 @@ public abstract class Sapfor extends OSDComponent {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
//---
|
||||||
|
public static Vector<String> outputLines = null;
|
||||||
|
public static Vector<String> errorsLines = null;
|
||||||
|
//---
|
||||||
public static boolean performScript(String name, //имя скрипта
|
public static boolean performScript(String name, //имя скрипта
|
||||||
File sapfor_drv, //путь к сапфору
|
File sapfor_drv, //путь к сапфору
|
||||||
File workspace, //проект
|
File workspace, //проект
|
||||||
@@ -534,6 +538,8 @@ public abstract class Sapfor extends OSDComponent {
|
|||||||
Utils.CheckDirectory(data_workspace);
|
Utils.CheckDirectory(data_workspace);
|
||||||
File outputFile = new File(data_workspace, outName);
|
File outputFile = new File(data_workspace, outName);
|
||||||
File errorsFile = new File(data_workspace, errName);
|
File errorsFile = new File(data_workspace, errName);
|
||||||
|
outputLines = null;
|
||||||
|
errorsLines = null;
|
||||||
Utils.delete_with_check(outputFile);
|
Utils.delete_with_check(outputFile);
|
||||||
Utils.delete_with_check(errorsFile);
|
Utils.delete_with_check(errorsFile);
|
||||||
//---
|
//---
|
||||||
@@ -568,8 +574,8 @@ public abstract class Sapfor extends OSDComponent {
|
|||||||
while (!flag);
|
while (!flag);
|
||||||
process = null;
|
process = null;
|
||||||
//---
|
//---
|
||||||
Vector<String> outputLines = new Vector<>(FileUtils.readLines(outputFile));
|
outputLines = new Vector<>(FileUtils.readLines(outputFile));
|
||||||
Vector<String> errorsLines = new Vector<>(FileUtils.readLines(errorsFile));
|
errorsLines = new Vector<>(FileUtils.readLines(errorsFile));
|
||||||
return (exit_code == 0) &&
|
return (exit_code == 0) &&
|
||||||
checkLines(outputLines) &&
|
checkLines(outputLines) &&
|
||||||
checkLines(errorsLines);
|
checkLines(errorsLines);
|
||||||
|
|||||||
@@ -29,23 +29,23 @@ public class CreateTestFromFolder extends Pass_2021<Test> {
|
|||||||
}
|
}
|
||||||
Group group = null;
|
Group group = null;
|
||||||
File dir = null;
|
File dir = null;
|
||||||
boolean show_log;
|
boolean from_directory_chooser;
|
||||||
Vector<ProjectFile> project_files = new Vector<>();
|
Vector<ProjectFile> project_files = new Vector<>();
|
||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
show_log = true;
|
from_directory_chooser = true;
|
||||||
if (!Current.Check(Log, Current.Group))
|
if (!Current.Check(Log, Current.Group))
|
||||||
return false;
|
return false;
|
||||||
dir = directoryChooser.ShowDialog();
|
dir = directoryChooser.ShowDialog();
|
||||||
group = Current.getGroup();
|
group = Current.getGroup();
|
||||||
} else {
|
} else {
|
||||||
show_log = false;
|
from_directory_chooser = false;
|
||||||
dir = (File) args[0];
|
dir = (File) args[0];
|
||||||
group = (Group) args[1];
|
group = (Group) args[1];
|
||||||
}
|
}
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
if (show_log) Log.Writeln_("Папка не выбрана.");
|
if (from_directory_chooser) Log.Writeln_("Папка не выбрана.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//---
|
//---
|
||||||
@@ -58,18 +58,20 @@ public class CreateTestFromFolder extends Pass_2021<Test> {
|
|||||||
int other_project_files = 0;
|
int other_project_files = 0;
|
||||||
//---
|
//---
|
||||||
if (dir.getName().equalsIgnoreCase(Constants.data)) {
|
if (dir.getName().equalsIgnoreCase(Constants.data)) {
|
||||||
if (show_log) Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора.");
|
if (from_directory_chooser)
|
||||||
|
Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//--
|
//--
|
||||||
if (files == null) {
|
if (files == null) {
|
||||||
if (show_log) Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + ".");
|
if (from_directory_chooser)
|
||||||
|
Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + ".");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//--
|
//--
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
if (!Utils.validateProjectFile(file, Log)) {
|
if (!Utils.validateProjectFile(file, Log)) {
|
||||||
if (show_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++;
|
bad++;
|
||||||
}
|
}
|
||||||
@@ -97,19 +99,19 @@ public class CreateTestFromFolder extends Pass_2021<Test> {
|
|||||||
}
|
}
|
||||||
//--
|
//--
|
||||||
if (subdirs > 0) {
|
if (subdirs > 0) {
|
||||||
if (show_log) Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки.");
|
if (from_directory_chooser) Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (bad > 0) {
|
if (bad > 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (fortran_programs == 0) {
|
if (fortran_programs == 0) {
|
||||||
if (show_log)
|
if (from_directory_chooser)
|
||||||
Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + ".");
|
Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + ".");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (other_project_files > 0) {
|
if (other_project_files > 0) {
|
||||||
if (show_log)
|
if (from_directory_chooser)
|
||||||
Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными.");
|
Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -137,18 +139,24 @@ public class CreateTestFromFolder extends Pass_2021<Test> {
|
|||||||
//-- получить размерность консольным сапфором. папка уже отправлена и чистить ее не нужно!!
|
//-- получить размерность консольным сапфором. папка уже отправлена и чистить ее не нужно!!
|
||||||
ShowMessage2("Синтаксический анализ");
|
ShowMessage2("Синтаксический анализ");
|
||||||
if (Sapfor.parse(Current.getSapfor().getFile(), project.Home, Current.getSapfor().getConsoleFlags())
|
if (Sapfor.parse(Current.getSapfor().getFile(), project.Home, Current.getSapfor().getConsoleFlags())
|
||||||
|
) {
|
||||||
){
|
|
||||||
ShowMessage2("Определение размерности");
|
ShowMessage2("Определение размерности");
|
||||||
if (Sapfor.analysis(Current.getSapfor().getFile(),project.Home,
|
if (Sapfor.analysis(Current.getSapfor().getFile(), project.Home,
|
||||||
PassCode_2021.SPF_GetMaxMinBlockDistribution,
|
PassCode_2021.SPF_GetMaxMinBlockDistribution,
|
||||||
Current.getSapfor().getConsoleFlags())){
|
Current.getSapfor().getConsoleFlags())) {
|
||||||
|
for (String line: Sapfor.outputLines){
|
||||||
|
String prefix = "GET_MIN_MAX_BLOCK_DIST: ";
|
||||||
|
if (line.startsWith(prefix)){
|
||||||
} else Log.Writeln_("Не удалось определить размерность.проекта "+Utils.Brackets(dir.getName()));
|
String s = line.substring(prefix.length());
|
||||||
}else {
|
System.out.println(Utils.Brackets(s));
|
||||||
Log.Writeln_("Не удалось выполнить синтаксический анализ проекта "+Utils.Brackets(dir.getName()));
|
String[] data = s.split(" ");
|
||||||
|
target.min_dim = Integer.parseInt(data[0]);
|
||||||
|
target.max_dim = Integer.parseInt(data[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else Log.Writeln_("Не удалось определить размерность.проекта " + Utils.Brackets(dir.getName()));
|
||||||
|
} else {
|
||||||
|
Log.Writeln_("Не удалось выполнить синтаксический анализ проекта " + Utils.Brackets(dir.getName()));
|
||||||
}
|
}
|
||||||
//todo получить значение из файла вывода анализа.
|
//todo получить значение из файла вывода анализа.
|
||||||
}
|
}
|
||||||
@@ -159,6 +167,7 @@ public class CreateTestFromFolder extends Pass_2021<Test> {
|
|||||||
@Override
|
@Override
|
||||||
protected void performDone() throws Exception {
|
protected void performDone() throws Exception {
|
||||||
super.performDone();
|
super.performDone();
|
||||||
passes.get(PassCode_2021.PublishTest).Do(target);
|
if (from_directory_chooser)
|
||||||
|
passes.get(PassCode_2021.PublishTest).Do(target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user