public static XPBaseObject GetXpObjectByKeyValue(XPObjectSpace oSpace, string value, Type type) { if (string.IsNullOrEmpty(value)) return null; if (!type.IsSubclassOf(typeof(XPBaseObject))) return null; var defaultMember = GetDefaultMember(type); object result; value.TryToChange(defaultMember.MemberType, out result); var criteriaOperator = GetDefaultCriteria(defaultMember, result); var item = (XPBaseObject)oSpace.FindObject(type,criteriaOperator,true); if (item != null) return item; var nestedObjectSpace = oSpace.CreateNestedObjectSpace(); item = (XPBaseObject)nestedObjectSpace.CreateObject(type); defaultMember.SetValue(item, value); item.Save(); nestedObjectSpace.CommitChanges(); return oSpace.GetObject(item); }
void CreateMappedAssemblyInfo(XPObjectSpace objectSpace, IPersistentAssemblyInfo persistentAssemblyInfo, LogonObject logonObject, string[] selectedTables) { var assemblyInfo = objectSpace.GetObject(persistentAssemblyInfo); new AssemblyGenerator(logonObject, assemblyInfo, selectedTables).Create(); objectSpace.CommitChanges(); }
public static XPBaseObject GetXpObjectByKeyValue(XPObjectSpace oSpace, string value, Type type) { if (string.IsNullOrEmpty(value)) { return(null); } if (!type.IsSubclassOf(typeof(XPBaseObject))) { return(null); } var defaultMember = GetDefaultMember(type); object result; value.TryToChange(defaultMember.MemberType, out result); var criteriaOperator = GetDefaultCriteria(defaultMember, result); var item = (XPBaseObject)oSpace.FindObject(type, criteriaOperator, true); if (item != null) { return(item); } var nestedObjectSpace = oSpace.CreateNestedObjectSpace(); item = (XPBaseObject)nestedObjectSpace.CreateObject(type); defaultMember.SetValue(item, value); item.Save(); nestedObjectSpace.CommitChanges(); return(oSpace.GetObject(item)); }
private void LeaderboardAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e) { XPObjectSpace os = (XPObjectSpace)Application.CreateObjectSpace(typeof(Leaderboard)); Leaderboard obj = new Leaderboard(os.Session); obj.SetDecathalon(os.GetObject(ThisCurrentObject)); obj.UpdateLeaderBoard(os); e.View = Application.CreateDetailView(os, obj, true); }
private void CreateScoreAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e) { XPObjectSpace os = (XPObjectSpace)Application.CreateObjectSpace(typeof(EnterEventScores)); EnterEventScores obj = new EnterEventScores(os.Session); obj.SetEvent(os.GetObject((DecathalonEvent)View.CurrentObject)); obj.UpdateScoreParameters(); e.View = Application.CreateDetailView(os, obj, true); }
public static XPBaseObject GetXpObjectByKeyValue(XPObjectSpace oSpace, string value, Type type) { if (string.IsNullOrEmpty(value)) { return(null); } if (!type.IsSubclassOf(typeof(XPBaseObject))) { return(null); } var keyPropertyName = oSpace.Session.GetClassInfo(type). PersistentProperties. OfType <XPMemberInfo>(). Where(p => p.HasAttribute(typeof(KeyPropertyAttribute))). Select(p => p.Name). FirstOrDefault() ?? oSpace.Session.GetClassInfo(type). PersistentProperties. OfType <XPMemberInfo>(). Where(p => p.Name == "Name" || p.Name == "Code") .Select(p => p.Name) .FirstOrDefault() ?? "Oid"; var item = (XPBaseObject)oSpace.FindObject( type, new BinaryOperator(keyPropertyName, value), true); if (item != null) { return(item); } var nestedObjectSpace = oSpace.CreateNestedObjectSpace(); item = (XPBaseObject)nestedObjectSpace.CreateObject(type); var firstOrDefault = item.ClassInfo .PersistentProperties .OfType <XPMemberInfo>() .FirstOrDefault(p => p.Name == keyPropertyName); if (firstOrDefault != null) { firstOrDefault.SetValue(item, value); } item.Save(); nestedObjectSpace.CommitChanges(); return(oSpace.GetObject(item)); }
void CreateMappedAssemblyInfo(XPObjectSpace objectSpace, IPersistentAssemblyInfo persistentAssemblyInfo, ISqlMapperInfo sqlMapperInfo) { string connectionString = sqlMapperInfo.GetConnectionString(); var sqlConnection = (SqlConnection) new SimpleDataLayer(XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.None)).Connection; var server = new Server(new ServerConnection(sqlConnection)); Database database = server.Databases[sqlConnection.Database]; database.Refresh(); IPersistentAssemblyInfo assemblyInfo = objectSpace.GetObject(persistentAssemblyInfo); var dbMapper = new DbMapper(objectSpace, assemblyInfo, sqlMapperInfo); dbMapper.Map(database, sqlMapperInfo.MapperInfo); objectSpace.CommitChanges(); }
/// <summary> /// Specifies the rules and actions how to convert string to a referenced type /// </summary> /// <param name="objectSpace">OS used to lookup refecenced object</param> /// <param name="prop">property that needs the converted value</param> /// <param name="value">string value to be converted</param> protected virtual object MapStringToReferenceType(XPObjectSpace objectSpace, XPMemberInfo prop, string value) { //if other referenced type if (prop.MemberType.IsSubclassOf(typeof(XPBaseObject))) { string text = value; Type type = prop.MemberType; try{ XPBaseObject mval = Helper.GetXpObjectByKeyValue(objectSpace, text, type); return(objectSpace.GetObject(mval)); } catch (Exception e) { Trace.TraceWarning(Resources.RefTypeConversionError, value, prop.MemberType.Name, e); } } return(null); }
public static XPBaseObject GetXpObjectByKeyValue(XPObjectSpace oSpace, string value, Type type) { if (string.IsNullOrEmpty(value)) return null; if (!type.IsSubclassOf(typeof(XPBaseObject))) return null; var keyPropertyName = oSpace.Session.GetClassInfo(type). PersistentProperties. OfType<XPMemberInfo>(). Where(p => p.HasAttribute(typeof(KeyAttribute))). Select(p => p.Name). FirstOrDefault() ?? oSpace.Session.GetClassInfo(type). PersistentProperties. OfType<XPMemberInfo>(). Where(p => p.Name == "Name" || p.Name == "Code") .Select(p => p.Name) .FirstOrDefault() ?? "Oid"; var item = (XPBaseObject)oSpace.FindObject( type, new BinaryOperator(keyPropertyName, value), true); if (item != null) return item; var nestedObjectSpace = oSpace.CreateNestedObjectSpace(); item = (XPBaseObject)nestedObjectSpace.CreateObject(type); var firstOrDefault = item.ClassInfo .PersistentProperties .OfType<XPMemberInfo>() .FirstOrDefault(p => p.Name == keyPropertyName); if (firstOrDefault != null) firstOrDefault.SetValue(item, value); item.Save(); nestedObjectSpace.CommitChanges(); return oSpace.GetObject(item); }
private T createController <T>(ViewType viewType, PersistentBase currentObject, bool activate, HandleInfo handleInfo) where T : ViewController, new() { if (currentObject.Session.IsNewObject(currentObject)) { currentObject.Session.Save(currentObject); } var XPObjectSpace = new XPObjectSpace(new UnitOfWork(currentObject.Session.DataLayer), XafTypesInfo.Instance); var persistentBase = XPObjectSpace.GetObject(currentObject); T controller = viewType == ViewType.ListView ? createListViewController <T>(persistentBase, activate, XPObjectSpace, handleInfo) : createDetailViewController <T>(XPObjectSpace, persistentBase, activate, handleInfo); var frame = new Frame(controller.Application, TemplateContext.View); frame.SetView(controller.View); Isolate.WhenCalled(() => controller.Frame).WillReturn(frame); if (activate) { controller.View.CurrentObject = persistentBase; } return(controller); }
private void AddNewObjectToCollectionSource(CollectionSourceBase currentCollectionSource, object newObject, XPObjectSpace objectSpace) { var newObjectTypeInfo = XafTypesInfo.Instance.FindTypeInfo(newObject.GetType()); if ((currentCollectionSource == null) || !currentCollectionSource.ObjectTypeInfo.IsAssignableFrom(newObjectTypeInfo)) return; if (objectSpace == currentCollectionSource.ObjectSpace) currentCollectionSource.Add(newObject); else { var propertyCollectionSource = (currentCollectionSource as PropertyCollectionSource); if ((propertyCollectionSource != null) && (propertyCollectionSource.MasterObject != null)) { Object collectionOwner; IMemberInfo memberInfo = null; if (propertyCollectionSource.MemberInfo.GetPath().Count > 1) { collectionOwner = ImportUtils.GetCollectionOwner(propertyCollectionSource.MasterObject, propertyCollectionSource.MemberInfo); if (collectionOwner != null) memberInfo = XafTypesInfo.Instance.FindTypeInfo(collectionOwner.GetType()) .FindMember(propertyCollectionSource.MemberInfo.LastMember.Name); } else { collectionOwner = propertyCollectionSource.MasterObject; memberInfo = propertyCollectionSource.MemberInfo; } if ((collectionOwner != null) && XafTypesInfo.Instance.FindTypeInfo(collectionOwner.GetType()).IsPersistent) { var collectionSource = _application.CreatePropertyCollectionSource(objectSpace, null, objectSpace.GetObject(collectionOwner), memberInfo, "", CollectionSourceMode.Normal); collectionSource.Add(newObject); } } } }
private void AddNewObjectToCollectionSource(CollectionSourceBase currentCollectionSource, object newObject, XPObjectSpace objectSpace) { var newObjectTypeInfo = XafTypesInfo.Instance.FindTypeInfo(newObject.GetType()); if ((currentCollectionSource == null) || !currentCollectionSource.ObjectTypeInfo.IsAssignableFrom(newObjectTypeInfo)) { return; } if (objectSpace == currentCollectionSource.ObjectSpace) { currentCollectionSource.Add(newObject); } else { var propertyCollectionSource = (currentCollectionSource as PropertyCollectionSource); if ((propertyCollectionSource != null) && (propertyCollectionSource.MasterObject != null)) { Object collectionOwner; IMemberInfo memberInfo = null; if (propertyCollectionSource.MemberInfo.GetPath().Count > 1) { collectionOwner = ImportUtils.GetCollectionOwner(propertyCollectionSource.MasterObject, propertyCollectionSource.MemberInfo); if (collectionOwner != null) { memberInfo = XafTypesInfo.Instance.FindTypeInfo(collectionOwner.GetType()) .FindMember(propertyCollectionSource.MemberInfo.LastMember.Name); } } else { collectionOwner = propertyCollectionSource.MasterObject; memberInfo = propertyCollectionSource.MemberInfo; } if ((collectionOwner != null) && XafTypesInfo.Instance.FindTypeInfo(collectionOwner.GetType()).IsPersistent) { var collectionSource = _application.CreatePropertyCollectionSource(objectSpace, null, objectSpace.GetObject(collectionOwner), memberInfo, "", CollectionSourceMode.Normal); collectionSource.Add(newObject); } } } }
/// <summary> /// Specifies the rules and actions how to convert string to a referenced type /// </summary> /// <param name="objectSpace">OS used to lookup refecenced object</param> /// <param name="prop">property that needs the converted value</param> /// <param name="value">string value to be converted</param> protected virtual object MapStringToReferenceType(XPObjectSpace objectSpace, XPMemberInfo prop, string value){ //if other referenced type if (prop.MemberType.IsSubclassOf(typeof (XPBaseObject))){ string text = value; Type type = prop.MemberType; try{ XPBaseObject mval = Helper.GetXpObjectByKeyValue(objectSpace, text, type); return objectSpace.GetObject(mval); } catch (Exception e){ Trace.TraceWarning(Resources.RefTypeConversionError, value, prop.MemberType.Name, e); } } return null; }
public void ProccesExcellRows(IEnumerable records, XPObjectSpace objectSpace, DoWorkEventArgs e) { var i = 0; //for every row in excell sheet foreach (Row record in records) { ++i; if (i == 1) continue; if (_BgWorker.CancellationPending) { e.Cancel = true; break; } //var os = new ObjectSpace(objectSpace, XafTypesInfo.Instance); object newObj = null; //chech if row contains Oid //get key property name of the object type being imported var kp = objectSpace.GetKeyPropertyName(Type); //check if it exists in excel and is mapped ? var idMapping = ImportMap.Mappings.FirstOrDefault(p => p.MapedTo == kp); if (idMapping != null && GetQString(record[idMapping.Column].Value) != string.Empty) { try { //find existing object var val = record[idMapping.Column]; var gwid = new Guid(GetQString(val.Value)); newObj = objectSpace.FindObject(Type, new BinaryOperator(kp, gwid), true); } catch { } } if (newObj == null) //create a new instance newObj = objectSpace.CreateObject(Type) as IXPSimpleObject; string message; if (newObj != null) { var props = ((IXPSimpleObject)newObj).ClassInfo.PersistentProperties .OfType<XPMemberInfo>().ToList(); foreach (var mapping in ImportMap.Mappings) { if (_BgWorker.CancellationPending) { e.Cancel = true; break; } Application.DoEvents(); var mapping1 = mapping; var prop = props.FirstOrDefault(p => p.Name == mapping1.MapedTo); try { var val = record[mapping.Column]; // continue; if (val != null) { //if simple property if (prop.ReferenceType == null && !prop.MemberType.IsEnum) { var isNullable = prop.MemberType.IsGenericType && prop.MemberType.GetGenericTypeDefinition() == typeof(Nullable<>); object convertedValue = null; if (prop.MemberType == null) return; if (isNullable) { if (prop.StorageType == typeof(int)) { int number; if (val.Value != String.Empty && Int32.TryParse(val.Value, out number)) convertedValue = number; } else if (prop.StorageType == typeof(DateTime)) { if (val.Value != string.Empty) { //Include validate var dt = DateTime.FromOADate(Convert.ToDouble(val.Value)); convertedValue = dt; } } else if (prop.StorageType == typeof(double)) { double number; var rez = Double.TryParse(val.Value, out number); if (rez) convertedValue = number; } } else { if (prop.MemberType.IsEnum) { prop.SetValue(newObj, Enum.Parse(prop.MemberType, val.Value)); } else if (prop.MemberType == typeof(char)) convertedValue = Convert.ChangeType(GetQString(val.Value), prop.MemberType); else if (prop.StorageType == typeof(int)) { int number; if (val.Value != String.Empty && Int32.TryParse(val.Value, out number)) convertedValue = number; else convertedValue = 0; } else if (prop.MemberType == typeof(Guid)) convertedValue = new Guid(GetQString(val.Value)); else if (prop.StorageType == typeof(DateTime)) { if (val.Value != string.Empty) { //Include validate var dt = DateTime.FromOADate(Convert.ToDouble(val.Value)); convertedValue = dt; } } else if (prop.MemberType == typeof(double)) { double number; // Application.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."; var rez = Double.TryParse(val.Value, NumberStyles.Number, new NumberFormatInfo { NumberDecimalSeparator = "." }, out number); if (rez) convertedValue = number; } else if (prop.MemberType == typeof(bool)) { if (val.Value != string.Empty && (val.Value.Length == 1 || val.Value.ToLower() == "true" || val.Value.ToLower() == "false")) { bool truefalse; if (val.Value.ToLower() == "true" || val.Value.ToLower() == "false") truefalse = Convert.ToBoolean(val.Value); else truefalse = Convert.ToBoolean(Convert.ToInt32(val.Value)); convertedValue = truefalse; } } else convertedValue = Convert.ChangeType(val.Value, prop.MemberType); } if (convertedValue != null) { if (convertedValue is double) convertedValue = Math.Round((double)convertedValue, 2, MidpointRounding.ToEven); prop.SetValue(newObj, convertedValue); } } //if referenced property if (prop.ReferenceType != null) { //if other referenced type if (prop.MemberType.IsSubclassOf(typeof(XPBaseObject))) { var text = val.Value; var typ = prop.MemberType; var mval = ImportWizard.Helper.GetXpObjectByKeyValue(objectSpace, text, typ); prop.SetValue(newObj, objectSpace.GetObject(mval)); } } } } catch (Exception ee) { message = string.Format(Resources.ExcelImportWizard_ProccesExcellRows_Error_processing_record__0____1_, i - 1, ee); _BgWorker.ReportProgress(0, message); } if (CurrentCollectionSource != null) AddNewObjectToCollectionSource(CurrentCollectionSource, newObj, ObjectSpace); ObjectSpace.Session.Save(newObj); } } objectSpace.CommitChanges(); message = string.Format(Resources.ExcelImportWizard_ProccesExcellRows_Importing_record__0__succesfull_, i - 1); _BgWorker.ReportProgress(1, message); Application.DoEvents(); } }
public void ProccesExcellRows(IEnumerable records, XPObjectSpace objectSpace, DoWorkEventArgs e) { var i = 0; //for every row in excell sheet foreach (Row record in records) { ++i; if (i == 1) { continue; } if (_BgWorker.CancellationPending) { e.Cancel = true; break; } //var os = new ObjectSpace(objectSpace, XafTypesInfo.Instance); object newObj = null; //chech if row contains Oid //get key property name of the object type being imported var kp = objectSpace.GetKeyPropertyName(Type); //check if it exists in excel and is mapped ? var idMapping = ImportMap.Mappings.FirstOrDefault(p => p.MapedTo == kp); if (idMapping != null && GetQString(record[idMapping.Column].Value) != string.Empty) { try { //find existing object var val = record[idMapping.Column]; var gwid = new Guid(GetQString(val.Value)); newObj = objectSpace.FindObject(Type, new BinaryOperator(kp, gwid), true); } catch { } } if (newObj == null) //create a new instance { newObj = objectSpace.CreateObject(Type) as IXPSimpleObject; } string message; if (newObj != null) { var props = ((IXPSimpleObject)newObj).ClassInfo.PersistentProperties .OfType <XPMemberInfo>().ToList(); foreach (var mapping in ImportMap.Mappings) { if (_BgWorker.CancellationPending) { e.Cancel = true; break; } Application.DoEvents(); var mapping1 = mapping; var prop = props.FirstOrDefault(p => p.Name == mapping1.MapedTo); try { var val = record[mapping.Column]; // continue; if (val != null) { //if simple property if (prop.ReferenceType == null && !prop.MemberType.IsEnum) { var isNullable = prop.MemberType.IsGenericType && prop.MemberType.GetGenericTypeDefinition() == typeof(Nullable <>); object convertedValue = null; if (prop.MemberType == null) { return; } if (isNullable) { if (prop.StorageType == typeof(int)) { int number; if (val.Value != String.Empty && Int32.TryParse(val.Value, out number)) { convertedValue = number; } } else if (prop.StorageType == typeof(DateTime)) { if (val.Value != string.Empty) { //Include validate var dt = DateTime.FromOADate(Convert.ToDouble(val.Value)); convertedValue = dt; } } else if (prop.StorageType == typeof(double)) { double number; var rez = Double.TryParse(val.Value, out number); if (rez) { convertedValue = number; } } } else { if (prop.MemberType.IsEnum) { prop.SetValue(newObj, Enum.Parse(prop.MemberType, val.Value)); } else if (prop.MemberType == typeof(char)) { convertedValue = Convert.ChangeType(GetQString(val.Value), prop.MemberType); } else if (prop.StorageType == typeof(int)) { int number; if (val.Value != String.Empty && Int32.TryParse(val.Value, out number)) { convertedValue = number; } else { convertedValue = 0; } } else if (prop.MemberType == typeof(Guid)) { convertedValue = new Guid(GetQString(val.Value)); } else if (prop.StorageType == typeof(DateTime)) { if (val.Value != string.Empty) { //Include validate var dt = DateTime.FromOADate(Convert.ToDouble(val.Value)); convertedValue = dt; } } else if (prop.MemberType == typeof(double)) { double number; // Application.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."; var rez = Double.TryParse(val.Value, NumberStyles.Number, new NumberFormatInfo { NumberDecimalSeparator = "." }, out number); if (rez) { convertedValue = number; } } else if (prop.MemberType == typeof(bool)) { if (val.Value != string.Empty && (val.Value.Length == 1 || val.Value.ToLower() == "true" || val.Value.ToLower() == "false")) { bool truefalse; if (val.Value.ToLower() == "true" || val.Value.ToLower() == "false") { truefalse = Convert.ToBoolean(val.Value); } else { truefalse = Convert.ToBoolean(Convert.ToInt32(val.Value)); } convertedValue = truefalse; } } else { convertedValue = Convert.ChangeType(val.Value, prop.MemberType); } } if (convertedValue != null) { if (convertedValue is double) { convertedValue = Math.Round((double)convertedValue, 2, MidpointRounding.ToEven); } prop.SetValue(newObj, convertedValue); } } //if referenced property if (prop.ReferenceType != null) { //if other referenced type if (prop.MemberType.IsSubclassOf(typeof(XPBaseObject))) { var text = val.Value; var typ = prop.MemberType; var mval = ImportWizard.Helper.GetXpObjectByKeyValue(objectSpace, text, typ); prop.SetValue(newObj, objectSpace.GetObject(mval)); } } } } catch (Exception ee) { message = string.Format(Resources.ExcelImportWizard_ProccesExcellRows_Error_processing_record__0____1_, i - 1, ee); _BgWorker.ReportProgress(0, message); } if (CurrentCollectionSource != null) { AddNewObjectToCollectionSource(CurrentCollectionSource, newObj, ObjectSpace); } ObjectSpace.Session.Save(newObj); } } objectSpace.CommitChanges(); message = string.Format(Resources.ExcelImportWizard_ProccesExcellRows_Importing_record__0__succesfull_, i - 1); _BgWorker.ReportProgress(1, message); Application.DoEvents(); } }