private static void DeserializeTemplate(DataStorage dataStorage, ID templateId, string serializationFolderName) { var filePath = templateId.FindFilePath(serializationFolderName); if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath)) { return; } var dsDbTemplate = new DsDbTemplate(templateId, serializationFolderName); dataStorage.AddFakeItem(dsDbTemplate); // Deserialize base templates var baseTemplatesField = dsDbTemplate.Fields.FirstOrDefault(f => f.ID == FieldIDs.BaseTemplate); if (baseTemplatesField == null || string.IsNullOrWhiteSpace(baseTemplatesField.Value)) { return; } foreach (var baseTemplateId in baseTemplatesField.Value.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries) .Where(ID.IsID) .Select(ID.Parse) .Where(baseTemplateId => dataStorage.GetFakeItem(baseTemplateId) == null)) { DeserializeTemplate(dataStorage, baseTemplateId, dsDbTemplate.SerializationFolderName); } }
protected virtual bool ResolveBranch(DbItem item, DataStorage dataStorage) { if (item.ParentID == ItemIDs.BranchesRoot && ID.IsNullOrEmpty(item.TemplateID)) { item.TemplateID = TemplateIDs.BranchTemplate; return true; } if (ID.IsNullOrEmpty(item.TemplateID)) { return false; } var branchItem = dataStorage.GetFakeItem(item.TemplateID); if (branchItem == null) { return false; } if (branchItem.TemplateID != TemplateIDs.BranchTemplate) { return false; } item.BranchId = branchItem.ID; item.TemplateID = ID.NewID; return false; }