Перенос.
This commit is contained in:
95
src/GlobalData/Settings/DBSetting.java
Normal file
95
src/GlobalData/Settings/DBSetting.java
Normal file
@@ -0,0 +1,95 @@
|
||||
package GlobalData.Settings;
|
||||
import Common.Database.DBObject;
|
||||
import Common.UI.Menus_2023.StableMenuItem;
|
||||
import Common.Utils.Utils;
|
||||
import 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(Utils.getIcon(toBoolean() ? "/icons/Pick.png" : "/icons/NotPick.png"));
|
||||
break;
|
||||
case PercentField:
|
||||
getMenuItem().setText(Name.getDescription() + " : " + this + "%");
|
||||
break;
|
||||
case StringField:
|
||||
String valueToShow = Value.isEmpty()? "не задано":Utils.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;
|
||||
}
|
||||
}
|
||||
163
src/GlobalData/Settings/SettingName.java
Normal file
163
src/GlobalData/Settings/SettingName.java
Normal file
@@ -0,0 +1,163 @@
|
||||
package 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, //хз нужна ли. будет пересказ пакета в проходе.
|
||||
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 VersionsMultiSelection:
|
||||
// return "Режим выбора версий";
|
||||
// case FilesMultiSelection:
|
||||
// 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 "MPI программа";
|
||||
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>
|
||||
8
src/GlobalData/Settings/SettingType.java
Normal file
8
src/GlobalData/Settings/SettingType.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package GlobalData.Settings;
|
||||
public enum SettingType {
|
||||
Undefined,
|
||||
SapforFlag,
|
||||
PercentField,
|
||||
StringField,
|
||||
IntField
|
||||
}
|
||||
96
src/GlobalData/Settings/SettingsDBTable.java
Normal file
96
src/GlobalData/Settings/SettingsDBTable.java
Normal file
@@ -0,0 +1,96 @@
|
||||
package GlobalData.Settings;
|
||||
import Common.Database.DBTable;
|
||||
import Common.Global;
|
||||
import Common.Utils.Utils;
|
||||
import 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 (Global.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>
|
||||
}
|
||||
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)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user