Example #1
0
        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);
        }
Example #2
0
 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);
     }
 }
Example #3
0
 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}'");
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
        }