Example #1
0
        /// <summary>
        /// Сохранить информацию о пакете.
        /// </summary>
        /// <param name="packageInfoModel">Модель информации о пакете.</param>
        private void SavePackageInfoModel(PackageInfoModel packageInfoModel)
        {
            Log.Info("  Сохранение информации о пакете: запущено");
            var packageInfoSerializer = new XmlSerializer(typeof(PackageInfoModel));

            using (var packageInfoStream = new FileStream(this.GetPackageInfoFileName(), FileMode.Create))
                using (var writer = XmlWriter.Create(packageInfoStream, GetXmlWriterSettings()))
                    packageInfoSerializer.Serialize(writer, packageInfoModel, GetXmlSerializerNamespaces());
            Log.Info("  Сохранение информации о пакете: завершено");
        }
Example #2
0
        /// <summary>
        /// Выполнить экспорт из пакета разработки в структуру папок.
        /// </summary>
        private void HandleExportPackage(XmlReaderSettings packageReaderSettings)
        {
            using (var fileStream = File.OpenRead(this.PackageFileName))
            {
                var packageSerializer = new XmlSerializer(typeof(ComponentsModel));
                using (var reader = XmlReader.Create(fileStream, packageReaderSettings))
                {
                    ComponentsModel packageModel = null;
                    try
                    {
                        Log.Info("  Чтение пакета разработки: запущено.");
                        packageModel = (ComponentsModel)packageSerializer.Deserialize(reader);
                        Log.Info("  Чтение пакета разработки: завершено.");
                    }
                    catch (Exception ex)
                    {
                        Log.Error("  Чтение пакета разработки: ошибка.", ex);
                        throw;
                    }

                    var settings   = GetXmlWriterSettings();
                    var namespaces = GetXmlSerializerNamespaces();

                    Parallel.ForEach <IPackageHandler>(this.packageHandlers,
                                                       (handler) => handler.HandleExport(packageModel, settings, namespaces));

                    var packageInfoModel = PackageInfoModel.CreateFromComponentsModel(packageModel);
                    this.SavePackageInfoModel(packageInfoModel);

                    if (this.CommandLineOptions.AuthType == AuthenticationType.Windows)
                    {
                        Log.Warn("  Обработка удаления элементов разработки не будет выполнена, так как используется Windows-аутентификация.");
                        return;
                    }

                    if (string.IsNullOrEmpty(this.CommandLineOptions.Server) ||
                        string.IsNullOrEmpty(this.CommandLineOptions.Database) ||
                        string.IsNullOrEmpty(this.CommandLineOptions.UserName))
                    {
                        Log.Warn("  Обработка удаления элементов разработки не будет выполнена, так как не заданы параметры подключения к БД.");
                        return;
                    }

                    var connectionParams = new ConnectionParams(
                        this.CommandLineOptions.Server,
                        this.CommandLineOptions.Database,
                        this.CommandLineOptions.UserName,
                        this.CommandLineOptions.Password);
                    Parallel.ForEach <IPackageHandler>(this.packageHandlers,
                                                       (handler) => handler.HandleDelete(connectionParams, settings, namespaces));
                }
            }
        }
Example #3
0
        /// <summary>
        /// Загрузить информацию о пакете.
        /// </summary>
        /// <returns>Инфорация о пакете.</returns>
        private PackageInfoModel LoadPackageInfoModel()
        {
            Log.Info("  Загрузка информации о пакете: запущена");
            PackageInfoModel result   = null;
            var packageInfoSerializer = new XmlSerializer(typeof(PackageInfoModel));

            using (var packageInfoStream = new FileStream(this.GetPackageInfoFileName(), FileMode.Open))
                using (var reader = XmlReader.Create(packageInfoStream))
                    result = (PackageInfoModel)packageInfoSerializer.Deserialize(reader);
            Log.Info("  Загрузка информации о пакете: завершена");
            return(result);
        }