public void SetMemberValues(IXPObject targetObject) { var typesInfo = XafTypesInfo.Instance.FindTypeInfo(targetObject.GetType()); SetMemberValues(targetObject, FieldMapsUtil.GetTargetMembers(fieldMaps, typesInfo)); }
protected void SetupViewController(ViewController controller, IXPObject currentObject) { controller.Application = Application; var view = Application.CreateDetailView(ObjectSpace, currentObject); controller.SetView(view); }
public void Process(IXPObject obj) { var objs = new object[1]; objs[0] = obj; Process(objs); }
public static object GetObjectInSession(IXPObject obj, Session session) { if (obj == null) { return(obj); } return(session.GetObjectByKey(obj.GetType(), obj.ClassInfo.GetId(obj))); }
public void Process(IXPObject obj) { BeforeProcess(); var clauses = CreateSqlParameters(); var sqlParams = CreateParameters(clauses); mapper.SqlParameters = sqlParams; mapper.Process(obj); }
/// <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); }
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); } }
/// <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); }
/// <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); }
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 } } }
public void PasteColumnsToRow(string[] copiedRowValues, IXPObject obj, ListView view) { PasteColumnsToRow(copiedRowValues, obj, view, null); }
public void PasteColumnsToRow(string[] copiedRowValues, IXPObject obj, ListView view, PasteParam pasteParam) { PasteColumnsToRow(copiedRowValues, obj, view, pasteParam, 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); }
/// <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; }
/// <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); } } } }
/// <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); } } } } } }
/// <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; }