ModelDifferenceObject CreateDifferenceObject(string resourceName, string prefix)
        {
            ModelDifferenceObject modelDifferenceObject;

            if (prefix == XpoModelDictionaryDifferenceStore.ModelApplicationPrefix)
            {
                modelDifferenceObject = new ModelDifferenceObject(_objectSpace.Session);
            }
            else
            {
                modelDifferenceObject = new RoleModelDifferenceObject(_objectSpace.Session);
                Type   roleType = ((IRoleTypeProvider)SecuritySystem.Instance).RoleType;
                var    criteriaParametersList = resourceName.Substring(0, resourceName.IndexOf("_", StringComparison.Ordinal));
                object findObject             = _objectSpace.FindObject(roleType, CriteriaOperator.Parse("Name=?", criteriaParametersList));
                Guard.ArgumentNotNull(findObject, criteriaParametersList);
                var xpBaseCollection = ((XPBaseCollection)modelDifferenceObject.GetMemberValue("Roles"));
                xpBaseCollection.BaseAdd(findObject);
            }
            var applicationTitle = _xafApplication.Title;
            var title            = ((IModelOptionsModelDifference)_xafApplication.Model.Options).ApplicationTitle;

            if (!string.IsNullOrEmpty(title))
            {
                applicationTitle = title;
            }
            modelDifferenceObject.InitializeMembers(resourceName, applicationTitle, _xafApplication.GetType().FullName);
            return(modelDifferenceObject);
        }
Exemple #2
0
 public override void SaveDifference(ModelApplicationBase model)
 {
     if (model != null)
     {
         var applicationTitle = Application.Title;
         var title            = ((IModelOptionsModelDifference)Application.Model.Options).ApplicationTitle;
         if (!string.IsNullOrEmpty(title))
         {
             applicationTitle = title;
         }
         var deviceCategories = new[] { DeviceCategory.All };
         if (DeviceModelsEnabled)
         {
             deviceCategories = deviceCategories.Concat(new[] { Application.GetDeviceCategory() }).ToArray();
         }
         foreach (var deviceCategory in deviceCategories)
         {
             var modelId = $"{model.Id}-{deviceCategory}";
             ModelDifferenceObject modelDifferenceObject =
                 GetActiveDifferenceObject(modelId, deviceCategory) ??
                 GetNewDifferenceObject(_objectSpace)
                 .InitializeMembers(modelId == "Application" ? Application.Title : modelId, applicationTitle, Application.GetType().FullName, deviceCategory);
             if (!_objectSpace.IsNewObject(modelDifferenceObject))
             {
                 _objectSpace.ReloadObject(modelDifferenceObject);
             }
             OnDifferenceObjectSaving(modelDifferenceObject, model);
         }
     }
 }
Exemple #3
0
        void GetModelUnSafe(ModelApplicationBase modelApplicationBase, ModelDifferenceObject modelDifferenceObject)
        {
            var afterSetupLayer = GetAfterSetupLayer(modelApplicationBase);

            ModelApplicationHelper.AddLayer(modelApplicationBase, afterSetupLayer);
            modelDifferenceObject.GetModel(modelApplicationBase);
            ModelApplicationHelper.RemoveLayer(modelApplicationBase);
        }
Exemple #4
0
 protected internal virtual void OnDifferenceObjectSaving(ModelDifferenceObject modelDifferenceObject, ModelApplicationBase model)
 {
     if (model.HasModification)
     {
         ObjectSpace.SetModified(modelDifferenceObject);
     }
     ObjectSpace.CommitChanges();
 }
Exemple #5
0
        protected internal override void OnDifferenceObjectSaving(ModelDifferenceObject userModelDifferenceObject, ModelApplicationBase model)
        {
            var userStoreObject = ((UserModelDifferenceObject)userModelDifferenceObject);

            if (!userStoreObject.NonPersistent)
            {
                userModelDifferenceObject.CreateAspectsCore(model);
                base.OnDifferenceObjectSaving(userModelDifferenceObject, model);
            }
            CombineModelFromPermission(model);
        }
Exemple #6
0
        public void CombineWithApplicationUserDiffs(ModelApplicationBase masterModel)
        {
            var userAspectObjectQuery = new QueryUserModelDifferenceObject(((ObjectSpace)View.ObjectSpace).Session);
            ModelDifferenceObject differenceObject = userAspectObjectQuery.GetActiveModelDifference(Application.GetType().FullName, null);

            if (ReferenceEquals(differenceObject, View.CurrentObject))
            {
                new ModelXmlReader().ReadFromModel(masterModel.LastLayer, ((ModelApplicationBase)Application.Model).LastLayer);
                ObjectSpace.SetModified(userAspectObjectQuery);
                ObjectSpace.CommitChanges();
            }
        }
        public override void SaveDifference(ModelApplicationBase model)
        {
            if (model != null)
            {
                _objectSpace = _application.CreateObjectSpace(typeof(ModelDifferenceObject)) as XPObjectSpace;
                ModelDifferenceObject modelDifferenceObject =
                    GetActiveDifferenceObject(model.Id) ??
                    GetNewDifferenceObject(_objectSpace)
                    .InitializeMembers(model.Id == "Application" ? Application.Title : model.Id, Application.Title, Application.GetType().FullName);

                OnDifferenceObjectSaving(modelDifferenceObject, model);
            }
        }
Exemple #8
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            string name    = typeof(ExistentAssemblyMasterDetailModelStore).Name;
            var    session = ((XPObjectSpace)ObjectSpace).Session;

            if (new QueryModelDifferenceObject(session).GetActiveModelDifference(name, ApplicationHelper.Instance.Application) == null)
            {
                ModelDifferenceObject modelDifferenceObject =
                    new ModelDifferenceObject(session).InitializeMembers(name, ApplicationHelper.Instance.Application);
                modelDifferenceObject.Name = name;
                ObjectSpace.CommitChanges();
            }
        }
Exemple #9
0
 void CombineModelFromPermission(ModelApplicationBase model)
 {
     if (SecuritySystem.Instance is ISecurityComplex && IsGranted())
     {
         var space = Application.CreateObjectSpace();
         ModelDifferenceObject difference = GetDifferenceFromPermission((XPObjectSpace)space);
         var master     = new ModelLoader(difference.PersistentApplication.ExecutableName).GetMasterModel(true);
         var diffsModel = difference.GetModel(master);
         new ModelXmlReader().ReadFromModel(diffsModel, model);
         difference.CreateAspectsCore(diffsModel);
         space.SetModified(difference);
         space.CommitChanges();
     }
 }
Exemple #10
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
//            return;
            string modelId = typeof(MasterDetailStore).Name;

            if (new QueryModelDifferenceObject(Session).GetActiveModelDifference(modelId) == null)
            {
                ModelDifferenceObject modelDifferenceObject =
                    new ModelDifferenceObject(Session).InitializeMembers(modelId);
                modelDifferenceObject.Name = modelId;
                modelDifferenceObject.Save();
            }
        }
Exemple #11
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();
            string name = typeof(WCCalculatedFieldModelStore).Name;

            var session = ((XPObjectSpace)ObjectSpace).Session;

            if (new QueryModelDifferenceObject(session).GetActiveModelDifference(name, FeatureCenterModule.Application) == null)
            {
                ModelDifferenceObject modelDifferenceObject =
                    new ModelDifferenceObject(session).InitializeMembers(name, FeatureCenterModule.Application);
                modelDifferenceObject.Name = name;
                ObjectSpace.CommitChanges();
            }
        }
Exemple #12
0
        public override void UpdateDatabaseAfterUpdateSchema()
        {
            base.UpdateDatabaseAfterUpdateSchema();

            var uniqueName = new ExternalApplicationModelStore().Name;
            var session    = ((XPObjectSpace)ObjectSpace).Session;

            if (new QueryModelDifferenceObject(session).GetActiveModelDifference(uniqueName, "ExternalApplication") == null)
            {
                var modelDifferenceObject = new ModelDifferenceObject(session).InitializeMembers("ExternalApplication", "ExternalApplication.Win", uniqueName);
                modelDifferenceObject.PersistentApplication.ExecutableName = "ExternalApplication.Win.exe";
                var modelApplicationBuilder = new ModelLoader(modelDifferenceObject.PersistentApplication.ExecutableName);
                var model = modelApplicationBuilder.GetLayer(typeof(ExternalApplicationModelStore), false);
                modelDifferenceObject.CreateAspects(model);
                ObjectSpace.CommitChanges();
            }
        }
 void CombineModelFromPermission(ModelApplicationBase model)
 {
     if (SecuritySystem.Instance is ISecurityComplex && IsGranted())
     {
         var space = Application.CreateObjectSpace(typeof(ModelDifferenceObject));
         ModelDifferenceObject difference = GetDifferenceFromPermission((XPObjectSpace)space);
         if (difference != null)
         {
             InterfaceBuilder.SkipAssemblyCleanup = true;
             var master = new ModelLoader(difference.PersistentApplication.ExecutableName, XafTypesInfo.Instance).GetMasterModel(true, info => info.AssignAsInstance());
             InterfaceBuilder.SkipAssemblyCleanup = false;
             var diffsModel = difference.GetModel(master);
             new ModelXmlReader().ReadFromModel(diffsModel, model);
             difference.CreateAspectsCore(diffsModel);
             space.SetModified(difference);
             space.CommitChanges();
         }
     }
 }
Exemple #14
0
 protected internal virtual void OnDifferenceObjectSaving(ModelDifferenceObject modelDifferenceObject, ModelApplicationBase model)
 {
     ObjectSpace.CommitChanges();
 }
Exemple #15
0
 public static void SetUp(ModelDifferenceObject modelDifferenceObject, string applicationTypeName)
 {
     SetUp(modelDifferenceObject);
 }
Exemple #16
0
 private static void SetUp(ModelDifferenceObject modelDifferenceObject)
 {
     modelDifferenceObject.DateCreated = DateTime.Now;
     modelDifferenceObject.Name        = "AutoCreated " + DateTime.Now;
 }
Exemple #17
0
 public ModelDifferenceObjectInfo(ModelDifferenceObject modelDifferenceObject, ModelApplicationBase model)
 {
     ModelDifferenceObject = modelDifferenceObject;
     Model = model;
 }