Beispiel #1
0
        private void OnCreateCustomUserModelDifferenceStore(object sender, CreateCustomModelDifferenceStoreEventArgs e)
        {
            if (IsHosted && _customUserModelDifferenceStore)
            {
                return;
            }
            _customUserModelDifferenceStore = true;
            var stringModelStores = ResourceModelCollector.GetEmbededModelStores();

            foreach (var stringModelStore in stringModelStores)
            {
                e.AddExtraDiffStore(stringModelStore.Key, stringModelStore.Value);
            }
            IEnumerable <string> models = Directory.GetFiles(BinDirectory, "*.Xpand.xafml", SearchOption.TopDirectoryOnly);

            models = models.Concat(Directory.GetFiles(BinDirectory, "model.user*.xafml", SearchOption.TopDirectoryOnly)).Where(s => !s.ToLowerInvariant().EndsWith("model.user.xafml"));
            if (IsHosted)
            {
                models = models.Concat(Directory.GetFiles(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "model.user*.xafml", SearchOption.TopDirectoryOnly));
            }
            foreach (var path in models)
            {
                string fileNameTemplate = Path.GetFileNameWithoutExtension(path);
                var    storePath        = Path.GetDirectoryName(path);
                var    fileModelStore   = new FileModelStore(storePath, fileNameTemplate);
                e.AddExtraDiffStore(fileNameTemplate, fileModelStore);
            }
        }
        void AddLayers(ModelApplicationBase modelApplication, ApplicationModulesManager applicationModulesManager, PathInfo pathInfo)
        {
            var resourceModelCollector = new ResourceModelCollector();
            var resourceInfos          = resourceModelCollector.Collect(applicationModulesManager.Modules.Select(@base => @base.GetType().Assembly), null).Where(pair => !MatchLastLayer(pair, pathInfo));

            AddLayersCore(resourceInfos, modelApplication);
            ModelApplicationBase lastLayer = modelApplication.CreatorInstance.CreateModelApplication();

            ModelApplicationHelper.AddLayer(modelApplication, lastLayer);
        }
        private static IEnumerable <ModelApplicationBase> GetEmbebedApplications(IEnumerable <ModelApplicationBase> modelApplicationBases, ModelNode node)
        {
            var moduleBases = modelApplicationBases.Cast <IModelSources>().SelectMany(sources => sources.Modules);

            return(ResourceModelCollector.GetEmbededModelStores(moduleBases).Select(pair => {
                var modelApplication = node.CreatorInstance.CreateModelApplication();
                modelApplication.Id = pair.Key;
                pair.Value.Load(modelApplication);
                return modelApplication;
            }).Cast <IModelApplication>().Where(application => application.Views != null).Cast <ModelApplicationBase>());
        }
Beispiel #4
0
        public void AddLayers(string modelApplicationPrefix, Dictionary <string, ModelDifferenceObjectInfo> loadedModelDifferenceObjectInfos, ModelApplicationBase model)
        {
            var modelXmlReader         = new ModelXmlReader();
            var assemblies             = _xafApplication.Modules.Select(module => module.GetType().Assembly);
            var resourceModelCollector = new ResourceModelCollector();

            foreach (var keyValuePair in resourceModelCollector.Collect(assemblies, modelApplicationPrefix))
            {
                var modelDifferenceObjectInfo = GetModelDifferenceObjectInfo(modelApplicationPrefix, loadedModelDifferenceObjectInfos, keyValuePair.Key, model);
                foreach (var aspectInfo in keyValuePair.Value.AspectInfos)
                {
                    modelXmlReader.ReadFromString(modelDifferenceObjectInfo.Model, aspectInfo.AspectName, aspectInfo.Xml);
                }
                modelDifferenceObjectInfo.ModelDifferenceObject.CreateAspects(modelDifferenceObjectInfo.Model);
            }
        }