private static string FilterSaveFunction(ComputeForNewBaseItemsInfo info, string uniqueSuffix) { return string.Format( @" private static readonly Func<IEnumerable<{0}.{1}>, IEnumerable<{0}.{1}>> _filterSaveComputeForNewBaseItems_{2} = {3}; ", info.Dependency_Extends.Extension.Module.Name, info.Dependency_Extends.Extension.Name, uniqueSuffix, info.FilterSaveExpression); }
private static string HelperFunctionSnippet(ComputeForNewBaseItemsInfo info, string uniqueSuffix) { DataStructureInfo hookOnSave = info.Dependency_Extends.Base; return string.Format( @" private static readonly Func<IEnumerable<{0}.{1}>, Guid[]> _filterComputeForNewBaseItems_{2} = changedItems => changedItems.Select(item => item.ID).ToArray(); ", hookOnSave.Module.Name, hookOnSave.Name, uniqueSuffix); }
private static string RecomputeForNewItemsSnippet(ComputeForNewBaseItemsInfo info, string uniqueSuffix) { DataStructureInfo hookOnSave = info.Dependency_Extends.Base; EntityInfo updatePersistedComputation = info.EntityComputedFrom.Target; return string.Format( @"if (inserted.Count() > 0) {{ IEnumerable<{0}.{1}> changedItems = inserted; var filter = _filterComputeForNewBaseItems_{2}(changedItems); _domRepository.{3}.{4}.{6}(filter{5}); }} ", hookOnSave.Module.Name, hookOnSave.Name, uniqueSuffix, updatePersistedComputation.Module.Name, updatePersistedComputation.Name, !string.IsNullOrWhiteSpace(info.FilterSaveExpression) ? (", _filterSaveComputeForNewBaseItems_" + uniqueSuffix) : "", EntityComputedFromCodeGenerator.RecomputeFunctionName(info.EntityComputedFrom)); }
private static string RecomputeForNewItemsSnippet(ComputeForNewBaseItemsInfo info, string uniqueSuffix) { DataStructureInfo hookOnSave = info.Dependency_Extends.Base; EntityInfo updatePersistedComputation = info.EntityComputedFrom.Target; return string.Format( @" if (inserted.Count() > 0) {{ IEnumerable<{0}.{1}> changedItems = inserted; var filter = _filterComputeForNewBaseItems_{2}(changedItems); _domRepository.{3}.{4}.{6}(filter{5}); // Workaround to restore NH proxies after using NHSession.Clear() when saving data in Recompute(). for (int i=0; i<inserted.Length; i++) inserted[i] = _executionContext.NHibernateSession.Load<{0}.{1}>(inserted[i].ID); for (int i=0; i<updated.Length; i++) updated[i] = _executionContext.NHibernateSession.Load<{0}.{1}>(updated[i].ID); }} ", hookOnSave.Module.Name, hookOnSave.Name, uniqueSuffix, updatePersistedComputation.Module.Name, updatePersistedComputation.Name, !string.IsNullOrWhiteSpace(info.FilterSaveExpression) ? (", _filterSaveComputeForNewBaseItems_" + uniqueSuffix) : "", EntityComputedFromCodeGenerator.RecomputeFunctionName(info.EntityComputedFrom)); }
private static string GetUniqueSuffixWithinBase(ComputeForNewBaseItemsInfo info) { var baseModule = info.Dependency_Extends.Base.Module; return DslUtility.NameOptionalModule(info.EntityComputedFrom.Source, baseModule) + DslUtility.NameOptionalModule(info.EntityComputedFrom.Target, baseModule); }