示例#1
0
        public void CheckOut()
        {
            var dbObject = _IDEProvider.GetDbObject <IDbObject>(true);

            if (dbObject != null)
            {
                RunCommand(NinjectCore.Get <CommandCheckOut>(), dbObject);
            }
        }
示例#2
0
        private void SaveText()
        {
            if (_DbObjectText == null)
            {
                _DbObjectText = _IDEProvider.GetDbObject <IDbObjectText>();
            }
            else
            {
                _DbObjectText.DirectoriesChecks();
            }

            if (_BranchName == null)
            {
                _BranchName = _GitAPI.GetCurrentBranch();
            }

            if (_Warnings.IsBranchUnexsepted(_BranchName))
            {
                return;
            }

            string FilePath = _DbObjectText.GetRawFilePath();

            Seri.Log.Here().Debug("FilePath={0}", FilePath);

            File.WriteAllText(FilePath, _DbObjectText.Text, _DbObjectText.GetSaveEncoding());
            _IDEProvider.SetStatusMessage($"Объект БД сохранён в: {FilePath}");
        }
示例#3
0
        private void LoadText()
        {
            if (_DbObjectText == null)
            {
                _DbObjectText = _IDEProvider.GetDbObject <IDbObjectText>();
            }
            else
            {
                _DbObjectText.DirectoriesChecks();
            }

            if (_ServerName == null)
            {
                _ServerName = _IDEProvider.GetDatabaseConnection();
            }

            if (_Warnings.IsServerUnexsepted(_ServerName))
            {
                return;
            }

            string FilePath = _DbObjectText.GetRawFilePath();

            Seri.Log.Here().Debug("FilePath={0}", FilePath);

            string LocalText = File.ReadAllText(FilePath);

            _PlsqlCodeFormatter.RemoveSlash(ref LocalText);

            _IDEProvider.SetText(LocalText);
            _IDEProvider.SetStatusMessage($"Объект БД загружен из: {FilePath}");
        }
示例#4
0
        public override void Execute(object parameter)
        {
            IDbObjectText dbObj = _IDEProvider.GetDbObject <IDbObjectText>();

            WindowGitDiff WindowGitDiff = new WindowGitDiff(dbObj);

            WindowGitDiff.Show();
        }
示例#5
0
        public override void Execute(object parameter)
        {
            // Поулчаем объект БД открытый в PL/SQL Developer
            IDbObjectText DbObjectText = _IIDEProveider.GetDbObject <DbObjectTextRaw>();

            // Получаем номер строки, на которой установлен курсор
            int CurrentLineNumber = _IIDEProveider.GetCurrentLine();

            // Получаем номер соответствющей строки в репозитории
            int?RepositoryLineNumber = _GitAPI.GitDiffLineNumber(DbObjectText, CurrentLineNumber);

            if (RepositoryLineNumber != null)
            {
                int ValMinus = 5;
                int ValPlus  = 5;

                if (_Settings.ShowGitBlameProperties)
                {
                    string[] TextLines = DbObjectText.Text.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);

                    WindowGitBlameProperties wgbp = new WindowGitBlameProperties(TextLines[(int)CurrentLineNumber - 1]);
                    bool?result = wgbp.ShowDialog();
                    if (result != null && (bool)result)
                    {
                        ValMinus = wgbp.OutputValMinus;
                        ValPlus  = wgbp.OutputValPlus;
                    }
                    else
                    {
                        return;
                    }
                }

                var            lines = _GitAPI.GitBlame <List <string> >(DbObjectText.RepName, Math.Max(1, (int)RepositoryLineNumber - ValMinus), (int)RepositoryLineNumber + ValPlus);
                WindowGitBlame wgb   = new WindowGitBlame(lines);
                wgb.Show();
            }
            else
            {
                MessageBox.Show("В репозитории не найдена данная строка (Если строка не является новой, попробуйте поменять ветку)", "Не найдена строка в репозитории", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
示例#6
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();
        }
示例#7
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);
        }