private static void ConfigureViewModelSettings(ViewModelSettings vm, NamespaceSettings ns, RenderSettings settings, string entity = null, string entityNamespace = null) { // view model type can not be null or empty; so if possible we'll come up with one // using the entity name if not given, otherwise we fail if (string.IsNullOrWhiteSpace(vm.type)) { if (!string.IsNullOrWhiteSpace(entity)) { vm.type = $"{ns.vmDefaults.typePrefix}{entity}{ns.vmDefaults.typeSuffix}"; } else { throw new InvalidRenderSettingsException("Parameter 'type' is required for adjunct view model definitions"); } } // inherit emit to directory from namespace view model setting defaults if not // specified vm.emitTo = vm.emitTo ?? ns.vmDefaults.emitTo; vm.emitTo = EstablishSettingsDirectory(settings.emitDir, vm.emitTo, "View model source file directory ('emitTo')"); vm.EntityNamespace(entityNamespace); vm.EntityType(entity); vm.ViewModelNamespace(ns.mapToNamespace); InheritViewModelSettingsBase(vm, ns.vmDefaults); AssertPropertyDefinitionsValid(vm); AssertCollectionDefinitionsValid(vm); }
private static void ConfigureViewModels(string entityNamespace, NamespaceSettings ns, RenderSettings settings) { foreach (var vmEntry in ns.viewModels) { var entityType = vmEntry.Key; var vm = vmEntry.Value; AssertViewModelSettingsValid(entityType, ns.mapToNamespace, vm); ConfigureViewModelSettings(vm, ns, settings, entityType, entityNamespace); } }
private static void AssertNamespaceSettingsValid(string entityNamespace, NamespaceSettings ns) { // entity namespace must be present for namespace settings if (string.IsNullOrWhiteSpace(entityNamespace)) { throw new InvalidRenderSettingsException ("Unnamed namespace settings entry encountered"); } if (ns == null) { throw new InvalidRenderSettingsException ($"Null namespace settings encountered for entity namespace '{entityNamespace}'"); } }
private static void ConfigureAdjunctViewModels(NamespaceSettings ns, RenderSettings settings) { foreach (var vm in ns.adjunctViewModels) { // assert that model definition is not null if (vm == null) { throw new InvalidRenderSettingsException ($"Null adjunct view model encountered in namespace '{ns.mapToNamespace}'"); } // adjunct view models have no entity counterpart vm.HasPublicEntity(false); ConfigureViewModelSettings(vm, ns, settings); } }
private static void ConfigureNamespaceSettings(string entityNamespace, NamespaceSettings ns, RenderSettings settings) { var gblNS = settings.globalDefaults.nameSpace; // map to namespace can not be null or empty; so we'll come up with a name if not given if (string.IsNullOrWhiteSpace(ns.mapToNamespace)) { ns.mapToNamespace = $"{gblNS.vmNamespacePrefix}{entityNamespace}{gblNS.vmNamespaceSuffix}"; } ns.emitAllEntities = ns.emitAllEntities ?? gblNS.emitAllEntities; EstablishNamespaceViewModelDefaults(ns.vmDefaults, settings); ConfigureViewModels(entityNamespace, ns, settings); ConfigureAdjunctViewModels(ns, settings); }