public CassettesUpdateSerevice(CassettesFogsLoadService cassettesFogsLoadService, CassettesConfig config) { _cassettesFogsLoadService = cassettesFogsLoadService; string databaseConnectionString = config.Database?.ConnectionString; putlogFileName = databaseConnectionString?.Substring(databaseConnectionString.IndexOf(':') + 1) + "logfile_put.txt"; }
public CassettesFogsLoadService(CassettesConfig xconfig) { // Кассеты перечислены через элементы LoadCassette. Имена кассе в файловой системе должны сравниваться по lower case cassettes = xconfig?.LoadCassettes .Select(lc => { if (string.IsNullOrWhiteSpace(lc.Name)) { lc.Name = lc.Path.Split('/', '\\').Last(); } return(lc); }) .ToArray(); // Формирую список фог-документов var fogsList = new List <FogInfo>(); // Прямое попадание в список фогов из строчек конфигуратора xconfig.LoadFog?.Select(lf => { lf.Writable &= lf.Prefix != null && lf.Counter >= 0; return(lf); }); // Сбор фогов из кассет foreach (var cass in cassettes) { // В каждой кассете есть фог-элемент meta/имякассеты_current.fog, в нем есть владелец и может быть запрет на запись в виде // отсутствия атрибутов prefix или counter. Также там есть uri кассеты, надо проверить. string pth = cass.Path + "/meta/" + cass.Name + "_current.fog"; var atts = ReadFogAttributes(pth); // запишем владельца, уточним признак записи cass.Owner = atts.owner; if (atts.prefix == null || atts.counter == null) { cass.Writable = false; } fogsList.Add(new FogInfo() { //cassette = cass, Pth = pth, Fogx = null, Owner = atts.owner, Writable = true //cass.writable, //prefix = atts.prefix, //counter = atts.counter }); // А еще в кассете могут быть другие фог-документы. Они размещаются в originals IEnumerable <FileInfo> fgs = (new DirectoryInfo(cass.Path + "/originals")) .GetDirectories().SelectMany(di => di.GetFiles("*.fog")); // Быстро проглядим документы и поместим информацию в список фогов foreach (FileInfo fi in fgs) { var attts = ReadFogAttributes(fi.FullName); // запишем владельца, уточним признак записи cass.Owner = attts.owner; fogsList.Add(new FogInfo() { //cassette = cass, Pth = fi.FullName, Fogx = null, Owner = attts.owner, //writable = cass.writable, //prefix = attts.prefix, //counter = attts.counter Writable = cass.Writable && attts.prefix != null && attts.counter != null });; } } // На выходе я определил, что будет массив Fogs = fogsList.ToArray(); fogsList = null; }