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