Ejemplo n.º 1
0
        public void SetMemberValues(IXPObject targetObject)
        {
            var typesInfo = XafTypesInfo.Instance.FindTypeInfo(targetObject.GetType());

            SetMemberValues(targetObject,
                            FieldMapsUtil.GetTargetMembers(fieldMaps, typesInfo));
        }
Ejemplo n.º 2
0
        protected void SetupViewController(ViewController controller, IXPObject currentObject)
        {
            controller.Application = Application;
            var view = Application.CreateDetailView(ObjectSpace, currentObject);

            controller.SetView(view);
        }
Ejemplo n.º 3
0
        public void Process(IXPObject obj)
        {
            var objs = new object[1];

            objs[0] = obj;
            Process(objs);
        }
Ejemplo n.º 4
0
 public static object GetObjectInSession(IXPObject obj, Session session)
 {
     if (obj == null)
     {
         return(obj);
     }
     return(session.GetObjectByKey(obj.GetType(), obj.ClassInfo.GetId(obj)));
 }
Ejemplo n.º 5
0
        public void Process(IXPObject obj)
        {
            BeforeProcess();

            var clauses   = CreateSqlParameters();
            var sqlParams = CreateParameters(clauses);

            mapper.SqlParameters = sqlParams;
            mapper.Process(obj);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Sets the value of the member of targetObj
        /// </summary>
        /// <param name="targetObj">Main object whose members are to be assigned a value</param>
        /// <param name="memberInfo">Information about the member used to determine how the value is converted to the member type</param>
        /// <param name="value">Value to assigned to the member</param>
        public void SetMemberValue(IXPObject targetObj, IMemberInfo memberInfo, string value, bool createMember = false, bool cacheObject = false)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return;
            }

            object newValue = GetMemberValue(targetObj.Session, memberInfo, value, createMember, cacheObject);

            memberInfo.SetValue(targetObj, newValue);
        }
Ejemplo n.º 7
0
        public void SetMemberValues(IXPObject targetObject, IEnumerable <IMemberInfo> targetMembers)
        {
            foreach (var targetMember in targetMembers)
            {
                // find corresponding map for target member
                var map = fieldMaps
                          .FirstOrDefault(x => x.TargetName == targetMember.Name);

                xpoFieldMapper.SetMemberValue(targetObject, targetMember,
                                              csvReader[map.SourceName], map.CreateMember, map.CacheObject);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Gets the oid maps.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>Oid maps</returns>
        public static IEnumerable <OidMap> GetOidMaps(IXPObject source)
        {
            var className  = source.ClassInfo.FullName;
            var modelClass = XafDeltaModule.XafApp.FindModelClass(source.GetType());

            if (modelClass != null)
            {
                className = modelClass.Name;
            }

            var criteria = CriteriaOperator.Parse("ClassName = ? And Not IsNull(Target) And Target.TargetKey_ = ?",
                                                  className /*source.ClassInfo.FullName*/,
                                                  XPWeakReference.KeyToString(source.Session.GetKeyValue(source)));
            var result = new XPCollection <OidMap>(PersistentCriteriaEvaluationBehavior.InTransaction,
                                                   source.Session, criteria);

            return(result);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates the oid map.
        /// </summary>
        /// <param name="objectSpace">The object space.</param>
        /// <param name="objectId">The object id.</param>
        /// <param name="nodeId">The node id.</param>
        /// <param name="appObject">The app object.</param>
        /// <returns>Oid map</returns>
        public static OidMap CreateOidMap(IObjectSpace objectSpace, string objectId, string nodeId, IXPObject appObject)
        {
            if (objectSpace == null)
            {
                throw new ArgumentNullException("objectSpace");
            }
            if (nodeId == null)
            {
                throw new ArgumentNullException("nodeId");
            }
            if (appObject == null)
            {
                throw new ArgumentNullException("appObject");
            }

            var result = objectSpace.CreateObject <OidMap>();

            result.NodeId                = nodeId;
            result.ObjectId              = objectId;
            result.ClassName             = appObject.ClassInfo.FullName;
            result.AssemblyName          = appObject.ClassInfo.AssemblyName;
            result.AssemblyQualifiedName = appObject.ClassInfo.ClassType.AssemblyQualifiedName;
            result.NewObject             = appObject;
            result.Save();
            return(result);
        }
Ejemplo n.º 10
0
        public void PasteColumnsToRow(string[] copiedRowValues, IXPObject obj, ListView view, PasteParam pasteParam, int startColumnIndex)
        {
            var listEditor = ((ListView)view).Editor as GridListEditor;
            var objSpace   = ((ListView)view).ObjectSpace;
            var gridView   = listEditor.GridView;

            // iterate through columns in listview
            int gridColumnIndex   = startColumnIndex;
            int copiedColumnIndex = 0;

            var hasGroups = gridView.Columns.Where(x => x.GroupIndex != -1).Count() > 0;

            if (hasGroups)
            {
                throw new UserFriendlyException("Please ungroup columns before pasting rows");
            }

            var gridColumns = gridView.Columns
                              .Where(x => x.Visible && x.GroupIndex == -1 &&
                                     x.VisibleIndex >= startColumnIndex)
                              .OrderBy(x => x.VisibleIndex)
                              .Select(x => x);

            foreach (var gridColumn in gridColumns)
            {
                if (copiedColumnIndex >= copiedRowValues.Length)
                {
                    break;
                }

                var member   = listEditor.Model.Columns[gridColumn.Name];
                var isLookup = typeof(IXPObject).IsAssignableFrom(member.ModelMember.MemberInfo.MemberType);

                var copiedValue = copiedRowValues[copiedColumnIndex];

                // if column is visible in grid, then increment the copiedValue column counter
                if (gridColumn.Visible)
                {
                    gridColumnIndex++;
                    copiedColumnIndex++;
                }
                // skip non-editable, key column, invisible column or blank values
                // otherwise paste values

                var memberInfo = member.ModelMember.MemberInfo;
                if (member.AllowEdit &&
                    member.PropertyName != listEditor.Model.ModelClass.KeyProperty &&
                    !string.IsNullOrEmpty(copiedValue) &&
                    !string.IsNullOrWhiteSpace(copiedValue)
                    )
                {
                    PasteFieldMap fieldMap = null;
                    if (pasteParam != null)
                    {
                        fieldMap = pasteParam.FieldMaps.Where(m => m.TargetName.ToLower() == gridColumn.Name.ToLower()).FirstOrDefault();
                    }

                    #region Core Logic
                    if (fieldMap == null)
                    {
                        xpoFieldMapper.SetMemberValue(obj, memberInfo, copiedValue, true, true);
                    }
                    else
                    {
                        xpoFieldMapper.SetMemberValue(obj, memberInfo, copiedValue,
                                                      fieldMap.CreateMember, fieldMap.CacheObject);
                    }
                    #endregion
                }
            }
        }
Ejemplo n.º 11
0
 public void PasteColumnsToRow(string[] copiedRowValues, IXPObject obj, ListView view)
 {
     PasteColumnsToRow(copiedRowValues, obj, view, null);
 }
Ejemplo n.º 12
0
 public void PasteColumnsToRow(string[] copiedRowValues, IXPObject obj, ListView view, PasteParam pasteParam)
 {
     PasteColumnsToRow(copiedRowValues, obj, view, pasteParam, 0);
 }
Ejemplo n.º 13
0
        public static void SetupDetailViewController(XafApplication application, XPObjectSpace objSpace, ViewController controller, IXPObject currentObject)
        {
            controller.Application = application;
            var view = application.CreateDetailView(objSpace, currentObject);

            controller.SetView(view);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Gets the oid maps.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>Oid maps</returns>
        public static IEnumerable<OidMap> GetOidMaps(IXPObject source)
        {
            var className = source.ClassInfo.FullName;
            var modelClass = XafDeltaModule.XafApp.FindModelClass(source.GetType());
            if (modelClass != null)
                className = modelClass.Name;

            var criteria = CriteriaOperator.Parse("ClassName = ? And Not IsNull(Target) And Target.TargetKey_ = ?",
                className /*source.ClassInfo.FullName*/,
                XPWeakReference.KeyToString(source.Session.GetKeyValue(source)));
            var result = new XPCollection<OidMap>(PersistentCriteriaEvaluationBehavior.InTransaction,
                source.Session, criteria);
            return result;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Restores the state of the snapshot object.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="snapshotObject">The snapshot object.</param>
        /// <param name="appObject">The app object.</param>
        private void restoreSnapshotObjectState(SnapLoadContext context, IXPObject snapshotObject,
                                                IXPObject appObject)
        {
            if (context.RestoredObjects.Contains(snapshotObject)) return;
            context.RestoredObjects.Add(snapshotObject);

            var snapClassInfo = snapshotObject.ClassInfo;
            var modelClass = XafDeltaModule.XafApp.FindModelClass(snapClassInfo.ClassType);
            var members = from m in snapClassInfo.Members select m;

            // restore non collection properties
            foreach (var snapMemberInfo in members.Where(x => x.IsPersistent && !x.IsReadOnly && !(x is ServiceField) && !x.IsKey))
            {
                // skip non snapshot members
                if (modelClass != null)
                {
                    var modelMember = modelClass.FindMember(snapMemberInfo.Name);
                    if (modelMember != null && modelMember.NonSnapshot())
                        continue;
                }

                var appMemberInfo = appObject.ClassInfo.GetMember(snapMemberInfo.Name);
                // skip unknown and readonly properties
                if (appMemberInfo == null || appMemberInfo.IsReadOnly) continue;

                // new value grom snapshot
                var snapValue = snapMemberInfo.GetValue(snapshotObject);
                var memberIsRestored = false;

                // XPO references
                if (snapMemberInfo.ReferenceType != null)
                {
                    // aggregated objects
                    if (snapMemberInfo.IsAggregated && snapValue != null)
                    {
                        // app current aggregate value
                        var aggrObj = appMemberInfo.GetValue(appObject);
                        // if aggregated object in app is not null
                        // then link it to snapshot object and restore state
                        if (aggrObj != null)
                        {
                            updateObjectMapping(context, context.Maps[snapValue], aggrObj);
                            restoreSnapshotObjectState(context, (IXPObject) snapValue, (IXPObject) aggrObj);
                            memberIsRestored = true;
                        }
                    }

                    if (snapValue != null && !memberIsRestored)
                    {
                        var snapOidMap = context.Maps[snapValue];
                        appMemberInfo.SetValue(appObject, loadSnapshotObject(context, snapOidMap));
                        memberIsRestored = true;
                    }
                }

                if (!memberIsRestored)
                    appMemberInfo.SetValue(appObject, snapValue);
            }

            // restore collections state
            foreach (var snapMemberInfo in snapClassInfo.Members.Where(x => !x.Name.EndsWith("__Links")
                                                                            &&
                                                                            (x.IsManyToMany || x.IsManyToManyAlias ||
                                                                             x.IsCollection || x.IsAssociationList)))
            {
                // skip non snapshot members
                if (modelClass != null)
                {
                    var modelMember = modelClass.FindMember(snapMemberInfo.Name);
                    if (modelMember != null && modelMember.MemberInfo.FindAttribute<NonSnapshotAttribute>() != null)
                        continue;
                }

                var snapCollection = snapMemberInfo.GetValue(snapshotObject) as IList;
                var appMemberInfo = appObject.ClassInfo.GetMember(snapMemberInfo.Name);
                var appCollection = appMemberInfo.GetValue(appObject) as IList;
                if (snapCollection != null && appCollection != null)
                    foreach (var snapElement in snapCollection)
                    {
                        if (context.Maps.ContainsKey(snapElement))
                        {
                            var appElement = loadSnapshotObject(context, context.Maps[snapElement]);
                            if (!appCollection.Contains(appElement))
                                appCollection.Add(appElement);
                        }
                    }
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Restores the state of the snapshot object.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="snapshotObject">The snapshot object.</param>
        /// <param name="appObject">The app object.</param>
        private void restoreSnapshotObjectState(SnapshotLoadContext context, IXPObject snapshotObject, IXPObject appObject)
        {
            if (context.RestoredObjects.Contains(snapshotObject))
            {
                return;
            }
            context.RestoredObjects.Add(snapshotObject);

            var snapClassInfo = snapshotObject.ClassInfo;
            var modelClass    = XafDeltaModule.XafApp.FindModelClass(snapClassInfo.ClassType);

            // restore non collection properties
            foreach (var snapMemberInfo in snapClassInfo.Members.Where(x => x.IsPersistent &&
                                                                       !x.IsReadOnly && !(x is ServiceField) && !x.IsKey))
            {
                // skip non snapshot members
                if (modelClass != null)
                {
                    var modelMember = modelClass.FindMember(snapMemberInfo.Name);
                    if (modelMember != null && modelMember.NonSnapshot())
                    {
                        continue;
                    }
                }

                var appMemberInfo = appObject.ClassInfo.GetMember(snapMemberInfo.Name);
                // skip unknown and readonly properties
                if (appMemberInfo == null || appMemberInfo.IsReadOnly)
                {
                    continue;
                }

                // new value grom snapshot
                var snapValue        = snapMemberInfo.GetValue(snapshotObject);
                var memberIsRestored = false;

                // XPO references
                if (snapMemberInfo.ReferenceType != null)
                {
                    // aggregated objects
                    if (snapMemberInfo.IsAggregated && snapValue != null)
                    {
                        // app current aggregate value
                        var aggrObj = appMemberInfo.GetValue(appObject);
                        // if aggregated object in app is not null
                        // then link it to snapshot object and restore state
                        if (aggrObj != null)
                        {
                            updateObjectMapping(context, context.Maps[snapValue], aggrObj);
                            restoreSnapshotObjectState(context, (IXPObject)snapValue, (IXPObject)aggrObj);
                            memberIsRestored = true;
                        }
                    }

                    if (snapValue != null && !memberIsRestored)
                    {
                        var snapOidMap = context.Maps[snapValue];
                        appMemberInfo.SetValue(appObject, loadSnapshotObject(context, snapOidMap));
                        memberIsRestored = true;
                    }
                }

                if (!memberIsRestored)
                {
                    appMemberInfo.SetValue(appObject, snapValue);
                }
            }

            // restore collections state
            foreach (var snapMemberInfo in snapClassInfo.Members.Where(x => !x.Name.EndsWith("__Links") &&
                                                                       (x.IsManyToMany || x.IsManyToManyAlias || x.IsCollection || x.IsAssociationList)))
            {
                // skip non snapshot members
                if (modelClass != null)
                {
                    var modelMember = modelClass.FindMember(snapMemberInfo.Name);
                    if (modelMember != null && modelMember.MemberInfo.FindAttribute <NonSnapshotAttribute>() != null)
                    {
                        continue;
                    }
                }

                var snapCollection = snapMemberInfo.GetValue(snapshotObject) as IList;
                var appMemberInfo  = appObject.ClassInfo.GetMember(snapMemberInfo.Name);
                var appCollection  = appMemberInfo.GetValue(appObject) as IList;
                if (snapCollection != null && appCollection != null)
                {
                    foreach (var snapElement in snapCollection)
                    {
                        if (context.Maps.ContainsKey(snapElement))
                        {
                            var appElement = loadSnapshotObject(context, context.Maps[snapElement]);
                            if (!appCollection.Contains(appElement))
                            {
                                appCollection.Add(appElement);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Creates the oid map.
        /// </summary>
        /// <param name="objectSpace">The object space.</param>
        /// <param name="objectId">The object id.</param>
        /// <param name="nodeId">The node id.</param>
        /// <param name="appObject">The app object.</param>
        /// <returns>Oid map</returns>
        public static OidMap CreateOidMap(IObjectSpace objectSpace, string objectId, string nodeId, IXPObject appObject)
        {
            if (objectSpace == null) throw new ArgumentNullException("objectSpace");
            if (nodeId == null) throw new ArgumentNullException("nodeId");
            if (appObject == null) throw new ArgumentNullException("appObject");

            var result = objectSpace.CreateObject<OidMap>();
            result.NodeId = nodeId;
            result.ObjectId = objectId;
            result.ClassName = appObject.ClassInfo.FullName;
            result.AssemblyName = appObject.ClassInfo.AssemblyName;
            result.AssemblyQualifiedName = appObject.ClassInfo.ClassType.AssemblyQualifiedName;
            result.NewObject = appObject;
            result.Save();
            return result;
        }