Skip to content

Commit

Permalink
Научились читать из настроек несколько файлов настроек artbear#7
Browse files Browse the repository at this point in the history
Исправлена ошибка использования файла по умолчанию
  • Loading branch information
artbear committed Sep 4, 2017
1 parent 027e8c4 commit 1331166
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 9 deletions.
58 changes: 50 additions & 8 deletions src/Классы/ЧитательПараметров.os
Original file line number Diff line number Diff line change
Expand Up @@ -205,17 +205,12 @@
// ПараметрыСистемы.КорневойПутьПроекта = ТекущийКаталогПроекта;

Если Не ЗначениеЗаполнено(ПутьФайлаНастроекПоУмолчанию) Тогда
ПутьКФайлуНастроекПоУмолчанию = ОбъединитьПути(ТекущийКаталогПроекта,
ЧтениеПараметров.ИмяФайлаНастроекПоУмолчанию());
ПутьФайлаНастроекПоУмолчанию = ЧтениеПараметров.ИмяФайлаНастроекПоУмолчанию();
КонецЕсли;

ПутьКФайлуНастройки = ЗначенияПараметров.Получить(КлючФайлаНастроек);
Если Не ЗначениеЗаполнено(ПутьКФайлуНастройки) Тогда
Лог.Отладка("В параметрах не задан ключ %1 к файлу настройки", КлючФайлаНастроек);
КонецЕсли;
НастройкиИзФайла = ПрочитатьНастройкиИзФайлаJSON(ТекущийКаталогПроекта, ПутьКФайлуНастройки,
НастройкиИзФайла = ПрочитатьНастройкиИзПараметраФайл(ЗначенияПараметров, КлючФайлаНастроек, ТекущийКаталогПроекта,
ПутьФайлаНастроекПоУмолчанию);

ЗначенияПараметровНизкийПриоритет = Новый Соответствие;

Если НастройкиИзФайла.Количество() > 0 Тогда
Expand All @@ -232,13 +227,60 @@
// ДобавитьДанныеПодключения(ЗначенияПараметров);
КонецПроцедуры

Функция ПрочитатьНастройкиИзПараметраФайл(ЗначенияПараметров, КлючФайлаНастроек, ТекущийКаталогПроекта,
ПутьФайлаНастроекПоУмолчанию)

ЧитаемОдинФайл = Истина;
МассивИменФайлов = Неопределено;

ПутьКФайлуНастройки = ЗначенияПараметров.Получить(КлючФайлаНастроек);
Если Не ЗначениеЗаполнено(ПутьКФайлуНастройки) Тогда

Лог.Отладка("В параметрах не задан ключ %1 к файлу настройки", КлючФайлаНастроек);

Иначе
МассивИменФайлов = СтрРазделить(ПутьКФайлуНастройки, ";");
Если МассивИменФайлов.Количество() > 0 Тогда

ЧитаемОдинФайл = Ложь;

КонецЕсли;
КонецЕсли;

Если ЧитаемОдинФайл Тогда

НастройкиИзФайла = ПрочитатьНастройкиИзФайлаJSON(ТекущийКаталогПроекта, ПутьКФайлуНастройки,
ПутьФайлаНастроекПоУмолчанию);

Иначе

НастройкиИзФайла = Новый Соответствие;
Для каждого ИмяФайла Из МассивИменФайлов Цикл
НовыеПараметры = ПрочитатьФайлJSON(ОбъединитьПути(ТекущийКаталогПроекта, ИмяФайла));
ОбработатьПараметрыРекурсивно(НовыеПараметры, НастройкиИзФайла, ТекущийКаталогПроекта);
КонецЦикла;

КонецЕсли;

Возврат НастройкиИзФайла;
КонецФункции // ПрочитатьНастройкиИзПараметраФайл()

Функция ПрочитатьНастройкиИзФайлаJSON(Знач ТекущийКаталогПроекта, Знач ПутьКФайлу, Знач ПутьФайлаПоУмолчанию )
Рез = Новый Соответствие;

// Лог.Отладка(":"+ПутьКФайлу+":"+ПутьФайлаПоУмолчанию);
Если ПутьКФайлу = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда
ПутьКФайлу = ПутьФайлаПоУмолчанию;

Лог.Отладка("Использую путь к файлу настройки по умолчанию %1", ПутьКФайлу);
Файл = Новый Файл(ОбъединитьПути(ТекущийКаталогПроекта, ПутьКФайлу));

Если НЕ Файл.Существует() Тогда
Лог.Отладка("Файл настройки по умолчанию не существует. %1", ПутьКФайлу);

Возврат Рез;
КонецЕсли;

Иначе
Лог.Отладка("Передан путь к файлу настройки %1", ПутьКФайлу);
КонецЕсли;
Expand Down
34 changes: 33 additions & 1 deletion tests/Параметры.os
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
СписокТестов.Добавить("Тест_ЧтениеПараметровИзФайлаСКомментариями");
СписокТестов.Добавить("Тест_ЧтениеПараметровИзФайлаПоСсылке");
СписокТестов.Добавить("Тест_ЧтениеПараметровИзДвухФайловПоСсылке");
СписокТестов.Добавить("Тест_ЧтениеПараметровИзНесколькихФайловПереданныхВКлючеКоманднойСтроки");
СписокТестов.Добавить("Тест_ПриоритетКоманднойСтрокиНадПараметрамиИзФайла");

СписокТестов.Добавить("Тест_ЧтениеПараметровКомандыИзКоманднойСтроки");
Expand Down Expand Up @@ -110,6 +111,38 @@
Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА);
КонецПроцедуры

Процедура Тест_ЧтениеПараметровИзНесколькихФайловПереданныхВКлючеКоманднойСтроки() Экспорт
// ПараметрыСистемы.ИнициализироватьЛог("Отладка");
ИМЯ_НАСТРОЙКИ = "Настройки";
ИМЯ_ПАРАМЕТРА = "Параметр";
ЗНАЧЕНИЕ_ПАРАМЕТРА = 3;

ПутьФайлаНастроек1 = МенеджерВременныхФайлов.СоздатьФайл("json");
СохранитьНастройкуВФайл(ПутьФайлаНастроек1, СтрШаблон("{ ""temp-%1"": %2 }",
ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА) );
Файл1 = Новый Файл(ПутьФайлаНастроек1);

ПутьФайлаНастроек = МенеджерВременныхФайлов.СоздатьФайл("json");
СохранитьНастройкуВФайл(ПутьФайлаНастроек, СтрШаблон("{ ""%1"": %2 }",
ИМЯ_ПАРАМЕТРА, ЗНАЧЕНИЕ_ПАРАМЕТРА) );
Файл = Новый Файл(ПутьФайлаНастроек);

Парсер = Новый ПарсерАргументовКоманднойСтроки();
Парсер.ДобавитьПараметр(ИМЯ_НАСТРОЙКИ);
Парсер.ДобавитьИменованныйПараметр(ИМЯ_ПАРАМЕТРА);

СтрокаНесколькихФайлов = СтрШаблон("%1;%2", Файл1.Имя, Файл.Имя);

ПараметрыКомСтроки = Новый Массив;
ПараметрыКомСтроки.Добавить(СтрокаНесколькихФайлов);

Параметры = ЧтениеПараметров.Прочитать(Парсер, ПараметрыКомСтроки, ИМЯ_НАСТРОЙКИ);

Ожидаем.Что(Параметры).ИмеетТип("Соответствие");
Ожидаем.Что(Параметры["Команда"]).Равно(Неопределено);
Ожидаем.Что(Параметры[ИМЯ_ПАРАМЕТРА]).Равно(ЗНАЧЕНИЕ_ПАРАМЕТРА);
КонецПроцедуры

Процедура Тест_ЧтениеПараметровИзФайлаСКомментариями() Экспорт
ИМЯ_НАСТРОЙКИ = "Настройки";
ИМЯ_ПАРАМЕТРА = "Параметр";
Expand Down Expand Up @@ -173,7 +206,6 @@
КонецПроцедуры

Процедура Тест_ЧтениеПараметровИзДвухФайловПоСсылке() Экспорт
// ПараметрыСистемы.ИнициализироватьЛог("Отладка");
ИМЯ_НАСТРОЙКИ = "Настройки";
ИМЯ_ПАРАМЕТРА = "Параметр";
ЗНАЧЕНИЕ_ПАРАМЕТРА = 3;
Expand Down

0 comments on commit 1331166

Please sign in to comment.