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);
}
}