protected override void InternalHandleDelete(ConnectionParams connectionParams, XmlWriterSettings settings, XmlSerializerNamespaces namespaces, out int deletedCount)
        {
            deletedCount = 0;
            if (!Directory.Exists(this.ComponentsFolder))
            {
                return;
            }
            using (var connection = ConnectionManager.GetConnection(connectionParams))
            {
                connection.Open();
                var adapter = new SqlDataAdapter(this.DevelopmentElementsCommandText, connection);
                var dataSet = new DataSet();
                adapter.Fill(dataSet);
                var stringsTable = dataSet.Tables[0];

                var groupFolders = Directory.EnumerateDirectories(this.ComponentsFolder);
                foreach (var groupFolder in groupFolders)
                {
                    var groupCode           = new DirectoryInfo(groupFolder).Name;
                    var localizationStrings = this.LoadLocalizationStringsByGroup(groupCode);
                    if (localizationStrings == null)
                    {
                        continue;
                    }
                    var resultLocalizationStrings = new LocalizationStringsExportModel();
                    var localizationStringIndex   = 0;
                    while (localizationStringIndex < localizationStrings.Count)
                    {
                        var localizationString     = localizationStrings[localizationStringIndex];
                        var localizationStringCode = localizationString.KeyValue;

                        var stringExistsQuery =
                            from stringsTableItem in stringsTable.AsEnumerable()
                            where
                            ((string)stringsTableItem[GroupCodeFieldName]).Equals(groupCode,
                                                                                  StringComparison.CurrentCultureIgnoreCase) &&
                            ((string)stringsTableItem[CodeFieldName]).Equals(localizationStringCode,
                                                                             StringComparison.CurrentCultureIgnoreCase)
                            select 1;

                        if (stringExistsQuery.Any())
                        {
                            resultLocalizationStrings.LocalizationStrings.Add(localizationString);
                        }
                        else
                        {
                            deletedCount++;
                        }

                        localizationStringIndex = localizationStringIndex + 1;
                    }
                    var serializer = new XmlSerializer(typeof(LocalizationStringsExportModel));
                    this.HandleExportModel(groupFolder, resultLocalizationStrings, settings, namespaces, serializer);
                }
            }
        }
        /// <summary>
        /// Обработать экспорт выходной модели.
        /// </summary>
        /// <param name="path">Выходная папка.</param>
        /// <param name="model">Выходная модель.</param>
        /// <param name="settings">Настройки XML.</param>
        /// <param name="namespaces">Пространства имен XML.</param>
        /// <param name="serializer">Сериализатор модели.</param>
        private void HandleExportModel(string path, LocalizationStringsExportModel model, XmlWriterSettings settings,
                                       XmlSerializerNamespaces namespaces, XmlSerializer serializer)
        {
            var cardFilePath = Path.Combine(path, CardFileName);

            this.outputFileNames.Clear();
            this.outputFolderNames.Clear();

            foreach (var lsModel in model.LocalizationStrings)
            {
                this.PrepareForExport(path, lsModel);
            }
            this.ExportModelToFile(model, cardFilePath, settings, namespaces, serializer);

            this.DeleteUnwantedFiles(path);
        }