no message

This commit is contained in:
2024-10-09 22:21:57 +03:00
parent 54c80c516b
commit 6252af944e
699 changed files with 2634 additions and 1997 deletions

View File

@@ -0,0 +1,95 @@
package _VisualDVM.GlobalData.Settings;
import Common.Database.Objects.DBObject;
import Common.Utils.CommonUtils;
import _VisualDVM.Visual.Menus.StableMenuItem;
import _VisualDVM.Repository.Component.ComponentType;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
import com.sun.org.glassfish.gmbal.Description;
import javax.swing.*;
import java.awt.event.ActionEvent;
public class DBSetting extends DBObject {
@Description("PRIMARY KEY,UNIQUE")
public SettingName Name;
public String Value;
public ComponentType Owner;
@Description("IGNORE")
public boolean Visible = true;
@Description("IGNORE")
public SettingType settingType = SettingType.Undefined;
private JMenuItem menu_item = null;
public DBSetting() {
}
public DBSetting(SettingName Name_,
Object Value_,
SettingType type_in,
ComponentType owner_in,
boolean Visible_in) {
Name = Name_;
Value = Value_.toString();
settingType = type_in;
Owner = owner_in;
Visible = Visible_in;
}
public DBSetting (SettingName Name_, String Value_){
Name = Name_;
Value = Value_;
}
public DBSetting(SettingName Name_,
Object Value_,
SettingType type_in,
ComponentType owner_in
) {
this(Name_, Value_, type_in, owner_in, true);
}
public JMenuItem getMenuItem() {
if (menu_item == null) {
menu_item = new StableMenuItem(Name.getDescription());
menu_item.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(Name);
}
});
Mark();
}
return menu_item;
}
/*
* булевского типа не надо. только 0 или 1
*/
//заводить разные типы настроек не надо.
//иначе придется ковыряться с типами и таблицами в бд
public void Mark() {
switch (settingType) {
case SapforFlag:
getMenuItem().setIcon(CommonUtils.getIcon(toBoolean() ? "/icons/Pick.png" : "/icons/NotPick.png"));
break;
case PercentField:
getMenuItem().setText(Name.getDescription() + " : " + this + "%");
break;
case StringField:
String valueToShow = Value.isEmpty()? "не задано": CommonUtils.Quotes(toString());
getMenuItem().setText(Name.getDescription() + " : " + valueToShow);
break;
case IntField:
getMenuItem().setText(Name.getDescription() + " : " + this);
break;
}
}
public int toInt32() {
return Integer.parseInt(Value);
}
public boolean toBoolean() {
return toInt32() != 0;
}
@Override
public String toString() {
return Value;
}
@Override
public Object getPK() {
return Name;
}
}

View File

@@ -0,0 +1,167 @@
package _VisualDVM.GlobalData.Settings;
public enum SettingName {
Undefined,
//
//совместимость
ConfirmPassesStart,
ShowPassesDone,
FocusPassesResult,
AutoUpdateSearch,
AutoSubscribeTest,
VersionsMultiSelection,
FilesMultiSelection,
//----------------------------------
ProjectsSearchDirectory,
LastVersionPath,
EditorFontSize,
//---------------------------------
AutoBugReportsLoad,
AutoTestsLoad,
//-
AutoSynchronizeRecipients,
FastAccessPassesCount,
LastOpenedProjectsCount,
Workspace,
RegisterOn,
SpacesOn,
EmptyLinesOn,
FortranWrapsOn,
ExtensionsOn,
ComparsionDiffMergeOn,
DarkThemeOn,
ShowFullArraysDeclarations,
ShowFullTabsNames,
LocalMakePathWindows,
SmallScreen,
Precompilation,
SaveModifications, // сохранять исходную версию
GCOVLimit,
DVMConvertationOptions,
Kernels,
Email, //для тестирования. потом.
Pause, //стоит ли тестрование на паузе.
Queue, //хз нужна ли. будет пересказ пакета в проходе.
BugReportsAgeLimit,
//---
DVMPackageMaxId,
SAPFORPackageId,
//---
TaskMaxId, //вместо TaskCounter
SapforTaskMaxId, //для тестирования Сапфора.
//отображения галок в деревьях.
//--
//<editor-fold desc="Настройки сапфора. должны быть подряд!">
STATIC_SHADOW_ANALYSIS,
STATIC_PRIVATE_ANALYSIS,
FREE_FORM,
KEEP_DVM_DIRECTIVES,
KEEP_SPF_DIRECTIVES,
PARALLELIZE_FREE_LOOPS,
MAX_SHADOW_WIDTH,
OUTPUT_UPPER,
TRANSLATE_MESSAGES,
KEEP_LOOPS_CLOSE_NESTING,
KEEP_GCOV,
ANALYSIS_OPTIONS,
DEBUG_PRINT_ON,
MPI_PROGRAM,
IGNORE_IO_SAPFOR,
KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS,
PARSE_FOR_INLINE,
EMPTY_OPTION
;
public static SettingName getByDescription(String desc) {
SettingName[] all = SettingName.values();
for (SettingName settingName : all)
if (desc.equals(settingName.getDescription())) return settingName;
return Undefined;
}
public String getDescription() {
switch (this) {
case BugReportsAgeLimit:
return "Срок хранения отчетов об ошибках (месяцы)";
case SaveModifications:
return "Сохранять копию исходной версии при преобразованиях";
case ComparsionDiffMergeOn:
return "Автоматическое сравнение";
case DVMConvertationOptions:
return "Опции DVM конвертации";
case Kernels:
return "Число ядер при компиляции";
case GCOVLimit:
return "Нижний порог отображения GCOV";
case Precompilation:
return "Предварительная компиляция";
case SmallScreen:
return "Маленький экран";
case LocalMakePathWindows:
return "Путь к make.exe";
case ShowFullTabsNames:
return "Показывать полные имена вкладок";
case ShowFullArraysDeclarations:
return "Показывать развернутый список объявлений массивов";
case ExtensionsOn:
return "Учитывать расширения файлов";
case DarkThemeOn:
return "Тёмная тема редактора кода";
case FortranWrapsOn:
return "Учитывать переносы";
case EmptyLinesOn:
return "Учитывать пустые строки";
case SpacesOn:
return "Учитывать пробелы и табуляции";
case RegisterOn:
return "Учитывать регистр";
case Workspace:
return "Рабочее пространство визуализатора";
case AutoBugReportsLoad:
return "Автоматическая синхронизация отчётов об ошибках";
case AutoTestsLoad:
return "Автоматическая синхронизация системы тестирования";
case STATIC_SHADOW_ANALYSIS:
return "Оптимизация теневых обменов";
case STATIC_PRIVATE_ANALYSIS:
return "Статический анализ приватностей";
case FREE_FORM:
return "Свободный выходной стиль";
case KEEP_DVM_DIRECTIVES:
return "Учитывать DVM директивы";
case KEEP_SPF_DIRECTIVES:
return "Сохранять SPF директивы при построении параллельных вариантов";
case PARALLELIZE_FREE_LOOPS:
return "Улучшенное распараллеливание";
case MAX_SHADOW_WIDTH:
return "Максимальный размер теневых граней";
case OUTPUT_UPPER:
return "Верхний выходной регистр";
case TRANSLATE_MESSAGES:
return "Сообщения на русском языке";
case KEEP_LOOPS_CLOSE_NESTING:
return "Учитывать тесную вложенность циклов";
case KEEP_GCOV:
return "Учитывать GCOV";
case ANALYSIS_OPTIONS:
return "Опции анализа";
case DEBUG_PRINT_ON:
return "Включить отладочную печать";
case MPI_PROGRAM:
return "Общая память";
case IGNORE_IO_SAPFOR:
return "Игнорировать ввод/вывод";
case KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS:
return "Сохранять SPF директивы при преобразованиях";
case PARSE_FOR_INLINE:
return "Синтаксический анализ для подстановки";
case AutoSubscribeTest:
return "Автоматическая проверка подписки";
case AutoSynchronizeRecipients:
return "Автоматическое извлечение адресатов";
case FastAccessPassesCount:
return "Число проходов на панели быстрого доступа";
case LastOpenedProjectsCount:
return "Число отображаемых последних открытых проектов";
}
return "";
}
}
//</editor-fold>

View File

@@ -0,0 +1,8 @@
package _VisualDVM.GlobalData.Settings;
public enum SettingType {
Undefined,
SapforFlag,
PercentField,
StringField,
IntField
}

View File

@@ -0,0 +1,97 @@
package _VisualDVM.GlobalData.Settings;
import Common.Database.Tables.DBTable;
import Common.Utils.CommonUtils;
import _VisualDVM.Utils;
import _VisualDVM.Repository.Component.ComponentType;
import java.util.Vector;
import java.util.stream.Collectors;
public class SettingsDBTable extends DBTable<SettingName, DBSetting> {
public SettingsDBTable() {
super(SettingName.class, DBSetting.class);
}
@Override
public String getSingleDescription() {
return "настройка";
}
public void AddSetting(DBSetting s) throws Exception {
if (containsKey(s.Name)) {
DBSetting old = get(s.Name);
old.settingType = s.settingType;
old.Visible = s.Visible;
//патч на всегда включить.
if (s.Name.equals(SettingName.STATIC_PRIVATE_ANALYSIS) && !old.Value.equals("1")) {
old.Value = "1";
getDb().Update(s);
}
//---------------------------------------->>
} else
this.getDb().Insert(s);
}
public void AddAll() throws Exception {
//проверка списка всех настроек.
//<editor-fold desc="Global">
AddSetting(new DBSetting(SettingName.ProjectsSearchDirectory, "", SettingType.StringField, ComponentType.Visualiser, false));
AddSetting(new DBSetting(SettingName.EditorFontSize, "14", SettingType.StringField, ComponentType.Visualiser, false));
AddSetting(new DBSetting(SettingName.DarkThemeOn, 0, SettingType.SapforFlag, ComponentType.Visualiser, false));
// AddSetting(new DBSetting(SettingName.FocusPassesResult, 1, SettingType.SapforFlag, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.ShowFullArraysDeclarations, 0, SettingType.SapforFlag, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.ShowFullTabsNames, 0, SettingType.SapforFlag, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.FastAccessPassesCount, 5, SettingType.IntField, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.LastOpenedProjectsCount, 5, SettingType.IntField, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.Workspace, "", SettingType.StringField, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.Kernels, Utils.getHalfKernels(), SettingType.IntField, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.AutoBugReportsLoad, 0, SettingType.SapforFlag, ComponentType.Visualiser, true));
AddSetting(new DBSetting(SettingName.AutoTestsLoad, 0, SettingType.SapforFlag, ComponentType.Visualiser, true));
if (CommonUtils.isWindows())
AddSetting(new DBSetting(SettingName.LocalMakePathWindows, "C:\\MinGW\\msys\\1.0\\bin\\make.exe", SettingType.StringField, ComponentType.Visualiser));
AddSetting(new DBSetting(SettingName.SmallScreen, 0, SettingType.SapforFlag, ComponentType.Visualiser));
//совместимость. указываем явно чтобы не были видны в меню.
AddSetting(new DBSetting(SettingName.AutoSubscribeTest, 0, SettingType.SapforFlag, ComponentType.Visualiser, false));
//</editor-fold>
//--
//<editor-fold desc="Sapfor">
//при добавлении новых. учесть SapforTasksPackage (добавить поле)
//и Global.packSapforSettings (добавить запаковку поля в конец)
AddSetting(new DBSetting(SettingName.STATIC_SHADOW_ANALYSIS, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.STATIC_PRIVATE_ANALYSIS, 1, SettingType.SapforFlag, ComponentType.SapforOptions, false));
AddSetting(new DBSetting(SettingName.FREE_FORM, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.KEEP_DVM_DIRECTIVES, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.KEEP_SPF_DIRECTIVES, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.PARALLELIZE_FREE_LOOPS, 0, SettingType.SapforFlag, ComponentType.SapforOptions, false));
AddSetting(new DBSetting(SettingName.MAX_SHADOW_WIDTH, 50, SettingType.PercentField, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.OUTPUT_UPPER, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.TRANSLATE_MESSAGES, 1, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.KEEP_LOOPS_CLOSE_NESTING, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.KEEP_GCOV, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.ANALYSIS_OPTIONS, " ", SettingType.StringField, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.DEBUG_PRINT_ON, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.MPI_PROGRAM, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.IGNORE_IO_SAPFOR, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS, 1, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.PARSE_FOR_INLINE, 0, SettingType.SapforFlag, ComponentType.SapforOptions, false));
//--> косвенные, анализам не передаются.
AddSetting(new DBSetting(SettingName.Precompilation, 0, SettingType.SapforFlag, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.GCOVLimit, 10, SettingType.PercentField, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.DVMConvertationOptions, " ", SettingType.StringField, ComponentType.SapforOptions));
AddSetting(new DBSetting(SettingName.SaveModifications, 1, SettingType.SapforFlag, ComponentType.SapforOptions));
//</editor-fold>
//-
//<editor-fold desc="Comparsion">
AddSetting(new DBSetting(SettingName.ExtensionsOn, 0, SettingType.SapforFlag, ComponentType.ComparsionOptions));
AddSetting(new DBSetting(SettingName.RegisterOn, 0, SettingType.SapforFlag, ComponentType.ComparsionOptions));
AddSetting(new DBSetting(SettingName.SpacesOn, 1, SettingType.SapforFlag, ComponentType.ComparsionOptions));
AddSetting(new DBSetting(SettingName.EmptyLinesOn, 1, SettingType.SapforFlag, ComponentType.ComparsionOptions));
AddSetting(new DBSetting(SettingName.FortranWrapsOn, 1, SettingType.SapforFlag, ComponentType.ComparsionOptions));
AddSetting(new DBSetting(SettingName.ComparsionDiffMergeOn, 0, SettingType.SapforFlag, ComponentType.ComparsionOptions));
//</editor-fold>
AddSetting(new DBSetting(SettingName.BugReportsAgeLimit, 2, SettingType.IntField, ComponentType.Visualiser));
}
public Vector<DBSetting> getSettingsByOwner(ComponentType owner) {
return Data.values().stream().filter(setting -> setting.Owner.equals(owner)).collect(Collectors.toCollection(Vector::new));
}
public String getSapforSettingsText() {
return "настройки SAPFOR\n" + String.join("\n",
getSettingsByOwner(ComponentType.SapforOptions).stream().map(s -> " " + s.Name.getDescription() + "=" + s.Value).collect(Collectors.toCollection(Vector::new)));
}
}