Exemplo n.º 1
0
        public WindowTeamCoding()
        {
            InitializeComponent();

            _viewmodel  = NinjectCore.Get <TeamCodingViewModel>();
            DataContext = _viewmodel;
        }
Exemplo n.º 2
0
        public DbObjectRepository(string Owner, string name, string type) : base(Owner, name, type)
        {
            Seri.Log.Here().Debug($"Создаём объект DbObject. Owner={Owner}, name={name}, type={type}");

            _settings = NinjectCore.Get <ISettings>();

            if (string.IsNullOrWhiteSpace(Owner) || string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(type))
            {
                throw new Exception("Не удалось распознать объект БД");
            }

            if (Directory.Exists(GetRawDirPath()))
            {
                this.ObjectOwner = Helper.GetCaseSensitiveFolderName(GetRawDirPath());
            }

            try
            {
                ObjectTypeItem = (eDbObjectType)Enum.Parse(typeof(eDbObjectType), type.Replace(" ", "").ToUpper(), true);
            }
            catch
            {
                throw new Exception($"Тип объекта: {type} - не поддерживается");
            }

            FileExtension = Helper.FileExtension[ObjectTypeItem];
            Seri.Log.Here().Verbose("FileExtension={0}", FileExtension);

            if (File.Exists(GetRawFilePath()))
            {
                FileName = Helper.GetCaseSensitiveFileName(GetRawFilePath());
            }

            Seri.Log.Here().Verbose($"Конец конструктора DbObject");
        }
Exemplo n.º 3
0
        public GitBlameViewModel(IEnumerable <string> lines)
        {
            ShowCommitCommand = NinjectCore.Get <CommandOpenCommitByURL>();

            ListRuns = new List <Run>();

            var ColorsByCommit = new Dictionary <string, SolidColorBrush>();

            foreach (string line in lines)
            {
                string sha = GetShaFromLine(line);

                SolidColorBrush brush;
                if (ColorsByCommit.ContainsKey(sha))
                {
                    brush = ColorsByCommit[sha];
                }
                else
                {
                    int  pos255 = random.Next(0, 3);
                    byte colorR = pos255 == 0 ? (byte)255 : GenRGBVal();
                    byte colorG = pos255 == 1 ? (byte)255 : GenRGBVal();
                    byte colorB = pos255 == 2 ? (byte)255 : GenRGBVal();

                    brush = new SolidColorBrush(Color.FromRgb(colorR, colorG, colorB));
                    ColorsByCommit.Add(sha, brush);
                }

                ListRuns.Add(new Run(line + "\r\n")
                {
                    Background = brush
                });
            }
        }
Exemplo n.º 4
0
        public PluginSettingsStorage()
        {
            Seri.Log.Here().Information("Инициализируем настройки приложения");
            Seri.Log.Here().Information("Расположение файл настроек: " + ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath);

            try
            {
                var JsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Git4PL2DefaultPreset.json");
                Seri.Log.Here().Debug("Пробуем загрузить Json файл с найстройками по умолчанию " + JsonPath);
                _DefaultConfiguration = JObject.Parse(File.ReadAllText(JsonPath));
                Seri.Log.Here().Information("Json файл загружен");
            }
            catch (Exception ex)
            {
                Seri.LogException(ex);
                throw ex;
            }

            FillGroups();
            FillSettings();

            Properties.Settings.Default.Save();

            NinjectCore.SetTeamCodingProvider((eTeamCodingProviderType)GetParamValue <int>(ePluginParameterID.TEAMCODING_PROVIDER));
        }
Exemplo n.º 5
0
        public GitDiffViewModel(IDbObjectText DbObjectText, IIDEProvider IDE, IGitAPI Git, IWarnings Warnings, ISettings Settings)
        {
            _DbObjectText = DbObjectText;
            IDiffText DiffText = Git.GitDiff(DbObjectText);

            FillDocument(DiffText);

            CurrentBranch   = Git.GetCurrentBranch();
            CurrentDataBase = IDE.GetDatabaseConnection();
            ObjectDescrName = DbObjectText.DescriptionName;
            ObjectFullPath  = DbObjectText.GetRawFilePath();

            if (Settings.UnexpectedBranch)
            {
                UnexpectedBranch = Warnings.IsBranchUnexsepted(CurrentBranch, true);
            }
            if (Settings.UnexpectedServer)
            {
                UnexpectedServer = Warnings.IsServerUnexsepted(CurrentDataBase, true);
            }

            SaveTextCommand = NinjectCore.Get <CommandSaveTextToRepository>();
            LoadTextCommand = NinjectCore.Get <CommandLoadTextFromRepository>();

            ButtonsClassicStyle = Settings.ClassicButtonsPosition;
        }
Exemplo n.º 6
0
        public eTeamCodingChecksResult CheckBeforeOpen(out string ErrorMsg)
        {
            eTeamCodingChecksResult answer = eTeamCodingChecksResult.None;

            ErrorMsg = string.Empty;

            Seri.Log.Here().Debug("Начинаем проверку перед открытием объекта");

            // Проверяем включен ли TeamCoding
            if (!_Settings.TEAMCODING_ENABLE)
            {
                Seri.Log.Here().Debug("TeamCoding отключен, пропускаем все проверки");
                answer |= eTeamCodingChecksResult.Allow;
            }
            else
            {
                // Пробуем загрузить провайдера TeamCoding
                try
                {
                    if (_TeamCodingProvider == null)
                    {
                        _TeamCodingProvider = NinjectCore.Get <ITeamCodingProvider>();
                    }
                }
                catch (Exception ex)
                {
                    // При загрузке провайдера были ошибки
                    Seri.LogException(ex);
                    ErrorMsg = ex.Message;
                    // Запрещаем компилировать объект
                    answer |= eTeamCodingChecksResult.Allow | eTeamCodingChecksResult.ProviderNotSet;
                    return(answer);
                }

                // Текущий сервер
                var ServerName = _IDEProvider.SQLQueryExecute <DummyString>(_Settings.SQL_SERVERNAME)[0].Value;
                Seri.Log.Here().Debug("ServerName = " + ServerName);

                // Текущий объект
                var dbObject = _IDEProvider.GetDbObject <DbObject>(true);
                Seri.Log.Here().Debug($"dbObject {dbObject}");

                if (dbObject == null)
                {
                    answer |= eTeamCodingChecksResult.Allow;
                }
                else
                {
                    var UserOwner = _TeamCodingProvider.GetUserOwner(dbObject, ServerName);
                    Seri.Log.Here().Debug("UserOwner = " + UserOwner);
                    if (!string.IsNullOrEmpty(UserOwner))
                    {
                        ErrorMsg = $"Объект находится в пользовании у [{UserOwner}]";
                        answer  |= eTeamCodingChecksResult.Restrict;
                    }
                }
            }

            return(answer);
        }
Exemplo n.º 7
0
        public WindowFtoggle(string SelectedText)
        {
            InitializeComponent();

            var param = NinjectCore.GetParameter("SelectedText", SelectedText);

            DataContext = NinjectCore.Get <FtoggleViewModel>(param);
        }
Exemplo n.º 8
0
        public WindowGitDiff(IDbObjectText DbObjectText)
        {
            InitializeComponent();

            var param = NinjectCore.GetParameter("DbObjectText", DbObjectText);

            DataContext = NinjectCore.Get <GitDiffViewModel>(param);
        }
Exemplo n.º 9
0
        public CmdBuilderGIT(ICmdReader reader, string gitRepPath = null) : base(reader)
        {
            ProcessFileName = DefaultGitExePath;

            _Settings = NinjectCore.Get <ISettings>();

            GitRepPath = (gitRepPath == null) ? _Settings.GitRepositoryPath : gitRepPath;
        }
Exemplo n.º 10
0
        public void CheckIn()
        {
            var dbObject = _IDEProvider.GetDbObject <IDbObject>(true);

            if (dbObject != null)
            {
                RunCommand(NinjectCore.Get <CommandCheckIn>(), dbObject);
            }
        }
Exemplo n.º 11
0
        public MainWindow()
        {
            InitializeComponent();

            var x = NinjectCore.Get <IPluginSettingsStorage>();

            var p = x.GetParam(Plugin.Settings.ePluginParameterID.TEAMCODING_FILEPROVIDER_PATH);

            p.SetValue("D:\\");
        }
Exemplo n.º 12
0
        private void CheckSettings(TeamCodingFile file)
        {
            if (_Settings.TEAMCODING_RESTRICT_COMPILE_WITHOUT_CHECKOUT != file.RestrickCompileWithoutCheckOut)
            {
                var storage = NinjectCore.Get <IPluginSettingsStorage>();

                var parameter = storage.GetParam(Settings.ePluginParameterID.TEAMCODING_RESTRICT_COMPILE_WITHOUT_CHECKOUT);
                parameter.SetValue <bool>(file.RestrickCompileWithoutCheckOut);

                MessageBox.Show($"В TeamCoding зафиксировано изменение настройки RestrickCompileWithoutCheckOut. " +
                                $"Установлено значение [{file.RestrickCompileWithoutCheckOut}]", "Обновление настрйоки", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
Exemplo n.º 13
0
 static API()
 {
     try
     {
         _CallbackManager  = NinjectCore.Get <ICallbackManager>();
         _Menu             = NinjectCore.Get <IMenu>();
         _TeamCodingChecks = NinjectCore.Get <ITeamCodingChecks>();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\n" + ex.Source + "\r\n" + ex.StackTrace);
         Seri.Log.Here().Error(ex.Message + "\r\n" + ex.Source + "\r\n" + ex.StackTrace);
         throw;
     }
 }
Exemplo n.º 14
0
        public static void InitRepository()
        {
            Console.WriteLine($"Here we go! GitRepositoryPath: {GitRepPath}");

            IPluginSettingsStorage SettingsStorage = NinjectCore.Get <IPluginSettingsStorage>();
            IPluginParameter       GitRepParam     = SettingsStorage.GetParam(Plugin.Settings.ePluginParameterID.GitRepositoryPath);

            GitRepParam.SetValue(GitRepPath);

            repository = new GitRep(GitRepPath);
            repository.CreateRepository();

            repository.AddFile();
            repository.AddFile();
            repository.StageAll();
            repository.DoCommit("init commit");
        }
Exemplo n.º 15
0
        public TeamCodingViewModel(ITeamCodingProvider TeamCodingProvider, IIDEProvider IDEProvider, ISettings Settings)
        {
            _TeamCodingProvider = TeamCodingProvider;

            UserLogin = Settings.TEAMCODING_LOGIN;

            DbObject = IDEProvider.GetDbObject <DbObject>(true);
            if (DbObject == null)
            {
                DbObject = new DbObject("SIA", "LOLKEK", "PACKAGE");
            }

            CheckInSource   = NinjectCore.Get <CommandCheckIn>();
            CheckOutSource  = NinjectCore.Get <CommandCheckOut>();
            CheckInCommand  = new RelayCommand(CheckIn, CheckInSource.CanExecute);
            CheckOutCommand = new RelayCommand(CheckOut, CheckOutSource.CanExecute);

            CheckOutList = new ObservableCollection <ICheckOutObject>();
            FillCheckOutList();
        }
Exemplo n.º 16
0
 public CmdReader()
 {
     try
     {
         if (typeof(T).IsInterface)
         {
             Result = NinjectCore.Get <T>();
         }
         else if (typeof(T).GetConstructor(Type.EmptyTypes) != null)
         {
             Result = Activator.CreateInstance <T>();
         }
         else if (typeof(T) != typeof(string))
         {
             Seri.Log.Here().Warning($"Для типа {typeof(T).Name} отсутствует конструктор по умолчанию!");
         }
     }
     catch (MissingMethodException ex)
     {
         Seri.Log.Here().Error($"Выбран не совместимый тип [{typeof(T).Name}] для ридера [{this.GetType().Name}]");
         throw ex;
     }
 }
Exemplo n.º 17
0
 public void ShowGitDiff()
 {
     RunCommand(NinjectCore.Get <CommandShowGitDiff>());
 }
Exemplo n.º 18
0
 public void ShowSettings()
 {
     RunCommand(NinjectCore.Get <CommandShowSettings>());
 }
Exemplo n.º 19
0
        private void FillSettings()
        {
            _ListSettings = new List <IPluginParameter>();

            #region Main group

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.GitRepositoryPath, @"D:\Repo")
            {
                Description    = "Репозиторий Git",
                DescriptionExt = "Необходимо указать расположение репозитрия Git с объектами DB",
                Group          = ePluginParameterGroupType.Main,
                ParamterUIType = ePluginParameterUIType.Path,
                OrderPosition  = 1
            });

            _ListSettings.Add(new PluginParameterList(ePluginParameterID.SaveEncodingType, 2, typeof(eSaveEncodingType))
            {
                Description    = "Кодировка по умолчанию",
                DescriptionExt = @"Файл в репозитории Git может иметь маркер кодировки UTF8 – BOM. BOM - Byte Order Mark, Маркер последовательности " +
                                 "байтов или метка порядка – специальный символ из стандарта Юникод, вставляемый в начало текстового файла или потока для обозначения того, " +
                                 "что в файле(потоке) используется Юникод, а также для косвенного указания кодировки и порядка байтов, " +
                                 "с помощью которых символы Юникода были закодированы. Рекомендуется не менять существующий формат.",
                Group          = ePluginParameterGroupType.Main,
                ParamterUIType = ePluginParameterUIType.List,
                OrderPosition  = 100
            });

            #endregion


            #region GitDiff group

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffAddSchema, true)
            {
                Description    = "Добавлять префикс схемы к названию объекта",
                DescriptionExt = "Эта настройка, дополняет предыдущую. При отсутствии схемы в названии объекта БД, она будет добавлена. (Такое встречается в файлах Git)",
                Group          = ePluginParameterGroupType.GitDiff,
                OrderPosition  = 30
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffChangeCor, true)
            {
                Description    = "Игнорировать изменения до названия объекта",
                DescriptionExt = "Касается переноса после ‘Create or replace’ а также лишних пробелов, которые могут встречаться в файле Git и " +
                                 "отсутствовать в PL/SQL Developer. При включенной настройке, вы не увидите этих изменений в первых строках файла.",
                Group         = ePluginParameterGroupType.GitDiff,
                OrderPosition = 10
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffChangeName, true)
            {
                Description    = "Сохранять название объекта, как в git",
                DescriptionExt = "Название объекта БД открытого в PL/SQL Developer может не всегда совпадать с названием того же объекта в Git. " +
                                 "Если опция включена, название объекта всегда будет соответствовать версии названия в файле в репозитории Git.",
                Group         = ePluginParameterGroupType.GitDiff,
                OrderPosition = 20
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffCRLF, true)
            {
                Description    = "Обрабатывать перенос строк LF",
                DescriptionExt = "В PL/SQL Developer применяется стандартный для Windows перенос строк в два символа CR-LF (“Carriage Return” и “Line Feed”). " +
                                 "Если в локальном файле репозитория Git, перенос строк реализован через один символ LF (пока такое встречается редко), то при включённой опции, " +
                                 "CR-LF в тексте объекта БД будет заменено на LF. Это позволит избежать конфликтов в каждой строчке текста. Так же эту проблему можно решить, " +
                                 "если в настрйоках Git установить переменную autocrlf в true(выполнить git config--global core.autocrlf true)",
                Group         = ePluginParameterGroupType.GitDiff,
                OrderPosition = 50
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffWorkWithSlash, true)
            {
                Description    = "Обрабатывать '/' в конце файла",
                DescriptionExt = "Текст в файлах в репозитории Git заканчивается на ‘/’. Обработка этого символа предотвращает его " +
                                 "затирание при операции сохранения текста. А также убирает этот символ при операции загрузки текста.",
                Group         = ePluginParameterGroupType.GitDiff,
                OrderPosition = 40
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DiffEndSpace, true)
            {
                Description    = "Игн. изменения пробелов в конце строк",
                DescriptionExt = "Изменения в виде пробелов на конце строк не будут отображаться при сравнении, но будут фиксироваться в комите, " +
                                 "если вы не загрузили исходный текст объекта перед работой. Настрйока повилась, после интеграции " +
                                 "конвейерной системы релизов, которая очевидно делает то же самое.",
                Group         = ePluginParameterGroupType.GitDiff,
                OrderPosition = 60
            });

            #endregion


            #region Warning group

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.UnexpectedBranch, true)
            {
                Description    = "Проверка ветки при сохранении текста в репозиторий",
                DescriptionExt = "При сохранении текста объекта в репозитории, если название ветки не совпадает с соответствующим регулярным выражением " +
                                 "– появится предупреждение, во избежание отправки изменений не в ту ветку.",
                Group         = ePluginParameterGroupType.Warning,
                OrderPosition = 10
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.UnexpectedServer, true)
            {
                Description    = "Проверка сервера при загрузки текста в PL/SQL Developer",
                DescriptionExt = "При загрузке текста в PL/SQL Developer, если название сервера не совпадает с соответствующим регулярным выражением – " +
                                 "появится предупреждение, во избежание изменения объекта БД не на том сервере",
                Group         = ePluginParameterGroupType.Warning,
                OrderPosition = 20
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.WarnInRegEx, string.Empty)
            {
                Description       = "Регулярное выражение, для проверки операции SaveText",
                DescriptionExt    = string.Empty,
                Group             = ePluginParameterGroupType.Warning,
                ParentParameterID = ePluginParameterID.UnexpectedBranch,
                OrderPosition     = 11
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.WarnOutRegEx, string.Empty)
            {
                Description       = "Регулярное выражение, для проверки операции LoadText",
                DescriptionExt    = string.Empty,
                Group             = ePluginParameterGroupType.Warning,
                ParentParameterID = ePluginParameterID.UnexpectedServer,
                OrderPosition     = 21
            });

            #endregion


            #region Blame Group

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.ShowGitBlameProperties, true)
            {
                Description    = "Запрашивать настройки для команды GitBlame",
                DescriptionExt = "Если опция включена, то перед операцией GitBlame можно будет выбрать кол-во строк которое будет обработано. Если же отклчить настройку, то по умолчанию обработаются только 10 строк",
                Group          = ePluginParameterGroupType.Blame,
                OrderPosition  = 10
            });

            var CommitViewURL = _DefaultConfiguration.SelectToken("CommitViewURL").ToString();
            if (string.IsNullOrEmpty(CommitViewURL))
            {
                CommitViewURL = "https://www.google.com/search?q=";
            }
            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.CommitViewURL, CommitViewURL)
            {
                Description    = "URL для запуска информации по коммиту",
                DescriptionExt = "В окне GitBlame при запросе информации по комиту будет переход по этой ссылки. (К этой ссылке в конце будет добавлен sha комита)",
                Group          = ePluginParameterGroupType.Blame,
                OrderPosition  = 20
            });

            #endregion


            #region Others group

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.ClassicButtonsPosition, false)
            {
                Description    = "Классическое расположение кнопок в окне Gitt Diff",
                DescriptionExt = string.Empty,
                Group          = ePluginParameterGroupType.Others,
                OrderPosition  = 10
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.DICTI_CHILDREN_LIMIT_ENABLE, true)
            {
                Description   = "Включить ограничение для отбора дочерних записей из Dicti",
                Group         = ePluginParameterGroupType.Others,
                OrderPosition = 20
            });

            _ListSettings.Add(new PluginParameter <int>(ePluginParameterID.DICTI_CHILDREN_LIMIT_VALUE, 20)
            {
                Description       = "Лимит на кол0во отобранных дочерних записей для Dicti",
                Group             = ePluginParameterGroupType.Others,
                ParentParameterID = ePluginParameterID.DICTI_CHILDREN_LIMIT_ENABLE,
                OrderPosition     = 20
            });

            #endregion


            #region SQL Group

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_DICTI_PARENT_COUNT, _DefaultConfiguration.SelectToken("SQL_DICTI_PARENT_COUNT").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_DICTI_PARENT, _DefaultConfiguration.SelectToken("SQL_DICTI_PARENT").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_DICTI_HIERARCHY, _DefaultConfiguration.SelectToken("SQL_DICTI_HIERARCHY").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_DICTIISN_BY_CONSTNAME, _DefaultConfiguration.SelectToken("SQL_DICTIISN_BY_CONSTNAME").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_SERVERNAME, _DefaultConfiguration.SelectToken("SQL_SERVERNAME").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.SQL_FTOGGLE, _DefaultConfiguration.SelectToken("SQL_FTOGGLE").ToString())
            {
                Group = ePluginParameterGroupType.SQL
            });


            #endregion


            #region TeamCoding Group

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.TEAMCODING_ENABLE, false)
            {
                Description        = "Вкл. TeamCoding",
                DescriptionExt     = "TeamCoding позволяет команде работать на одном сервере. Добавляет возможность делать CheckOut, CheckIn для объектов",
                Group              = ePluginParameterGroupType.TeamCoding,
                OrderPosition      = 10,
                OnParameterChanged = (x) =>
                {
                    var menu = NinjectCore.Get <IMenu>();
                    menu.RefreshMenu();
                }
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.TEAMCODING_LOGIN, string.Empty)
            {
                Description       = "Логин",
                DescriptionExt    = "Ваше имя под которым объекты БД будут браться в пользование",
                Group             = ePluginParameterGroupType.TeamCoding,
                ParentParameterID = ePluginParameterID.TEAMCODING_ENABLE,
                OrderPosition     = 20
            });

            _ListSettings.Add(new PluginParameter <bool>(ePluginParameterID.TEAMCODING_RESTRICT_COMPILE_WITHOUT_CHECKOUT, false)
            {
                Description    = "Запретить компиляцию без CheckOut",
                DescriptionExt = "Если объект в настоящий момет никем не занят, можно разрешить его компилировать без CheckOut. " +
                                 "Эта настройка общая, изменения распространится на всех участников TEAMCODING. " +
                                 "Пожалуйста договоритесь с командой о политиках работы на общей среде прежде чем менять настрйоку",
                Group              = ePluginParameterGroupType.TeamCoding,
                ParentParameterID  = ePluginParameterID.TEAMCODING_ENABLE,
                OrderPosition      = 25,
                OnParameterChanged = (x) =>
                {
                    ITeamCodingProvider provider            = NinjectCore.Get <ITeamCodingProvider>();
                    provider.RestrickCompileWithoutCheckOut = x;
                }
            });

            _ListSettings.Add(new PluginParameterList(ePluginParameterID.TEAMCODING_PROVIDER, 0, typeof(eTeamCodingProviderType))
            {
                Description    = "Провайдер для TeamCoding-а",
                DescriptionExt = "Вариант обмена информацией между несколькими пользователями PL/SQL Developer. Для того что-бы команды была в одной \"сети\", " +
                                 "У всех должны быть одинаковые настройки.\n" +
                                 "Общий файл на диске - файл размешенный в сетевой папке к которому есть доступ у каждого участника. " +
                                 "При операции CheckOut в этот файл добавится информация, что пользователь <Логин> взял в пользование такой объект БД. " +
                                 "Другие участники при обращении к этому объекту БД, будут видеть предупреждение, что объект в настоящий момент занят.",
                Group              = ePluginParameterGroupType.TeamCoding,
                ParentParameterID  = ePluginParameterID.TEAMCODING_ENABLE,
                OrderPosition      = 30,
                OnParameterChanged = (x) => NinjectCore.SetTeamCodingProvider((eTeamCodingProviderType)x)
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.TEAMCODING_FILEPROVIDER_PATH, string.Empty)
            {
                Description                = "Путь для общего файла",
                ParamterUIType             = ePluginParameterUIType.Path,
                Group                      = ePluginParameterGroupType.TeamCoding,
                ParentParameterID          = ePluginParameterID.TEAMCODING_PROVIDER,
                ParentParameterStringValue = "0",
                OrderPosition              = 40
            });

            _ListSettings.Add(new PluginParameter <string>(ePluginParameterID.TEAMCODING_SERVERNAME_REGEX, string.Empty)
            {
                Description       = "Название рабочего сервера",
                DescriptionExt    = "Регулярное выражение для имени сервера, который должен быть подключен к TeamCoding",
                Group             = ePluginParameterGroupType.TeamCoding,
                ParentParameterID = ePluginParameterID.TEAMCODING_ENABLE,
                OrderPosition     = 50
            });

            #endregion
        }
Exemplo n.º 20
0
 public void ShowGitBlame()
 {
     RunCommand(NinjectCore.Get <CommandShowGitBlame>());
 }
Exemplo n.º 21
0
 public void ShowDicti()
 {
     RunCommand(NinjectCore.Get <CommandShowDicti>());
 }
Exemplo n.º 22
0
 public void ShowTeamCoding()
 {
     RunCommand(NinjectCore.Get <CommandShowTeamCoding>());
 }
Exemplo n.º 23
0
        public WindowSettings()
        {
            InitializeComponent();

            DataContext = NinjectCore.Get <SettingsViewModel>();
        }
Exemplo n.º 24
0
 public void LoadTextFromRepository(TextOperationsParametrs param = null)
 {
     RunCommand(NinjectCore.Get <CommandLoadTextFromRepository>(), param);
 }
Exemplo n.º 25
0
 public void ShowFtoggle()
 {
     RunCommand(NinjectCore.Get <CommandShowFtoggle>());
 }
Exemplo n.º 26
0
        public eTeamCodingChecksResult CheckBeforeCompile(out string ErrorMsg)
        {
            eTeamCodingChecksResult answer = eTeamCodingChecksResult.None;

            ErrorMsg = string.Empty;

            Seri.Log.Here().Debug("Начинаем проверку перед компиляцией");

            // Проверяем включен ли TeamCoding
            if (!_Settings.TEAMCODING_ENABLE)
            {
                Seri.Log.Here().Debug("TeamCoding отключен, пропускаем все проверки");
                answer |= eTeamCodingChecksResult.Allow;
            }
            else
            {
                // Пробуем загрузить провайдера TeamCoding
                try
                {
                    if (_TeamCodingProvider == null)
                    {
                        _TeamCodingProvider = NinjectCore.Get <ITeamCodingProvider>();
                    }
                }
                catch (Exception ex)
                {
                    // При загрузке провайдера были ошибки
                    Seri.LogException(ex);
                    ErrorMsg = ex.Message;

                    // Запрещаем компилировать объект
                    answer |= eTeamCodingChecksResult.Restrict | eTeamCodingChecksResult.ProviderNotSet;
                    return(answer);
                }

                // Текущий сервер
                var ServerName = _IDEProvider.SQLQueryExecute <DummyString>(_Settings.SQL_SERVERNAME)[0].Value;
                Seri.Log.Here().Debug("ServerName = " + ServerName);

                // Текущий объект
                var dbObject = _IDEProvider.GetDbObject <DbObject>(true);
                Seri.Log.Here().Debug($"dbObject {dbObject}");

                if (dbObject == null)
                {
                    // Если объет не определн, пропускам
                    answer |= eTeamCodingChecksResult.Allow;
                    Seri.Log.Here().Warning("Перед компиляцией не смогли определить объект, почему? (Не должны здесть оказаться)");
                }
                else
                {
                    // Текущий владелец объекта по версии Team Coding-а
                    var UserOwner = _TeamCodingProvider.GetUserOwner(dbObject, ServerName);
                    Seri.Log.Here().Debug("UserOwner = " + UserOwner);

                    // Владельца нет
                    if (string.IsNullOrEmpty(UserOwner))
                    {
                        // Проверяем можем ли мы компилировать без CheckOut
                        if (_Settings.TEAMCODING_RESTRICT_COMPILE_WITHOUT_CHECKOUT)
                        {
                            ErrorMsg = "Запрещено компилировать объект без CheckOut";
                            answer  |= eTeamCodingChecksResult.Restrict;
                        }
                        else
                        {
                            answer |= eTeamCodingChecksResult.Allow;
                        }
                    }
                    else
                    {
                        // Владелец есть, и это МЫ
                        if (UserOwner == _Settings.TEAMCODING_LOGIN)
                        {
                            answer |= eTeamCodingChecksResult.Allow;
                        }
                        else
                        {
                            ErrorMsg = $"Невозможно скомпилировать. Объект находится в пользовании [{UserOwner}]";
                            answer  |= eTeamCodingChecksResult.Restrict;
                        }
                    }
                }
            }

            return(answer);
        }
Exemplo n.º 27
0
 public void SaveTextToRepository(TextOperationsParametrs param = null)
 {
     RunCommand(NinjectCore.Get <CommandSaveTextToRepository>(), param);
 }