рефакторинг бд файлов тестов.
This commit is contained in:
2025-03-20 17:48:18 +03:00
parent 3f4ef5f198
commit 0b5f8c6ec7
22 changed files with 374 additions and 359 deletions

View File

@@ -8,102 +8,24 @@ import _VisualDVM.ProjectData.LanguageName;
import javax.swing.*;
import java.io.File;
import java.net.URL;
//возможно, в дальнейшем унаследовать от него DBProjectFile, но пока лучше не трогать то что работает.
public class ProjectFile extends DBObject {
public class ProjectFile extends projectFile_ {
public File file = null; //собственно, файл на который ссылаемся.
public FileType fileType = FileType.none;
public LanguageName languageName = LanguageName.n;
public LanguageStyle style = LanguageStyle.none;
public FileState state = FileState.Undefined; //состояние файла.
public ProjectFile() {
}
public ProjectFile(File file_in) {
super(file_in);
file = file_in;
AutoDetectProperties();
}
@Override
public Object getPK() {
return file.getName();
}
public void AutoDetectProperties() {
AutoDetectProperties(file.getName());
}
@Override
public void AutoDetectProperties(String name_in) {
//проверка запретных имен.
String[] forbiddenNames = new String[]{
CommonConstants.INTERRUPT,
Constants.launch_script_name,
Constants.default_binary_name,
//--
CommonConstants.DONE,
CommonConstants.TIMEOUT,
Constants.out_file,
Constants.err_file,
Constants.time_file,
"Makefile"
};
for (String forbidden : forbiddenNames) {
if (name_in.equalsIgnoreCase(forbidden)) {
fileType = FileType.forbidden;
return;
}
}
//-
switch (Utils_.getExtensionFromName(name_in)) {
case "f":
case "fdv":
case "for":
case "f77":
fileType = FileType.program;
languageName = LanguageName.fortran;
style = LanguageStyle.fixed;
break;
case "f90":
fileType = FileType.program;
languageName = LanguageName.fortran;
style = LanguageStyle.free;
break;
case "c":
case "cdv":
fileType = FileType.program;
languageName = LanguageName.c;
break;
case "cpp":
fileType = FileType.program;
languageName = LanguageName.cpp;
break;
case "h":
fileType = FileType.header;
break;
case "fh":
fileType = FileType.header;
languageName = LanguageName.fortran;
break;
case "o":
case "gcda":
case "gcno":
case "gcov":
case "exe":
case "pdf":
fileType = FileType.forbidden;
break;
case "":
if (Utils_.isIntegerValue(name_in)) {
fileType = FileType.forbidden;
} else {
state = FileState.Excluded;
fileType = FileType.none;
languageName = LanguageName.n;
}
break;
default:
//все остальное считаем исключенными из рассмотрения.
//если юзеру надо сам их разблочит.
state = FileState.Excluded;
fileType = FileType.none;
languageName = LanguageName.n;
break;
}
super.AutoDetectProperties(name_in);
if (fileType.equals(FileType.forbidden) || fileType.equals(FileType.none))
state= FileState.Excluded;
}
public String ImageKey() {
//icons/files/Excludeddata.png
@@ -130,6 +52,7 @@ public class ProjectFile extends DBObject {
}
return new ImageIcon(imageUrl);
}
public String getUnixName() {
return Utils_.toU(file.getName());
}
@@ -137,23 +60,10 @@ public class ProjectFile extends DBObject {
public String toString() {
return file.getName();
}
public String getQSourceName() {
return Utils_.DQuotes(getUnixName());
}
public String getStyleOptions() {
if (languageName == LanguageName.fortran) {
switch (style) {
case fixed:
case extended:
return "-FI";
case free:
return "-f90";
case none:
break;
}
}
return "";
}
public boolean isNotExcludedProgram() {
return fileType.equals(FileType.program) && !languageName.equals(LanguageName.n) && !state.equals(FileState.Excluded);
}