void RemoveUnrelatedNodes(ModelMergedDifferenceInfo mergedDifference, IModelApplication application) { var mergedDifferenceViewId = mergedDifference.MergedViewId; var strategy = mergedDifference.ModelMergedDifference.Strategy; var modelObjectView = application.Views[mergedDifferenceViewId].AsObjectView; RemoveUnrelatedNodesExceptViews(application); RemoveUnrelatedViewExceptDifferenceView(mergedDifferenceViewId, application.Views); RemoveStrategyUnrelatedNodes(modelObjectView, strategy); ClearViewAttributes(strategy, modelObjectView); }
void CollectModulesDifferences(IEnumerable <ModelApplicationBase> modulesDifferences, ModelMergedDifferenceInfo mergedDifferenceInfo, Action <string, IModelApplication, ModelMergedDifferenceInfo> action) { var mergedViewId = mergedDifferenceInfo.MergedViewId; var modelApplications = modulesDifferences.Cast <IModelApplication>().Where(application => application.Views[mergedViewId] != null); foreach (var modelApplication in modelApplications) { foreach (var modelView in modelApplication.Views.OfType <IModelObjectViewMergedDifferences>().Where(view => view.Id == mergedViewId && view.MergedDifferences != null && view.MergedDifferences.Any())) { foreach (var modelMergedDifference in modelView.MergedDifferences) { var id = modelMergedDifference.View.Id(); var modelMergedDifferenceInfo = new ModelMergedDifferenceInfo(mergedDifferenceInfo.ModelMergedDifference, id); CollectModulesDifferences(modulesDifferences, modelMergedDifferenceInfo, action); } } action(mergedViewId, modelApplication, mergedDifferenceInfo); } }
static bool IsDifferenceValid(ModelMergedDifferenceInfo difference, IModelViews views) { var modelView = views[difference.MergedViewId] as IModelObjectView; return(modelView != null && modelView.ModelClass != null); }
ModelApplicationBase CreateInheritanceLayer(ModelNode node, ModelApplicationBase applicationBase, ModelMergedDifferenceInfo mergedDifference, ModelApplicationBase master) { var modelApplication = node.CreatorInstance.CreateModelApplication(); var targetViewId = ((ModelNode)mergedDifference.TargetView).Id; modelApplication.Id = string.Format("{0}_" + applicationBase.Id, targetViewId); new ModelXmlReader().ReadFromModel(modelApplication, applicationBase); var application = ((IModelApplication)modelApplication); RemoveUnrelatedNodes(mergedDifference, application); application.Views[mergedDifference.MergedViewId].Id = targetViewId; var modelSources = ((IModelSources)application); modelSources.BOModelTypes = ((IModelSources)master).BOModelTypes; modelSources.Modules = ((IModelSources)master).Modules; modelSources.Controllers = ((IModelSources)master).Controllers; modelSources.Localizers = ((IModelSources)master).Localizers; modelSources.EditorDescriptors = new EditorDescriptors(((IModelSources)master).EditorDescriptors); return(modelApplication); }