private void GetProfileDataFromTable(SettingsPropertyCollection properties, SettingsPropertyValueCollection svc, string username, OleDbConnection conn) { List<ProfileColumnData> columnData = new List<ProfileColumnData>(properties.Count); StringBuilder commandText = new StringBuilder("SELECT u.MEMBER_ID"); OleDbCommand cmd = new OleDbCommand(String.Empty, conn); int columnCount = 0; foreach (SettingsProperty prop in properties) { SettingsPropertyValue value = new SettingsPropertyValue(prop); if (prop.PropertyType == typeof(List<SnitzLink>)) { prop.ThrowOnErrorDeserializing = true; prop.SerializeAs = SettingsSerializeAs.Xml; value.Deserialized = false; } svc.Add(value); string persistenceData = prop.Attributes["CustomProviderData"] as string; // If we can't find the table/column info we will ignore this data if (String.IsNullOrEmpty(persistenceData)) { // REVIEW: Perhaps we should throw instead? continue; } string[] chunk = persistenceData.Split(new char[] { ';' }); if (chunk.Length != 2) { // REVIEW: Perhaps we should throw instead? continue; } if (chunk[1].ToLower() == "int") chunk[1] = "integer"; string columnName = chunk[0]; // REVIEW: Should we ignore case? OleDbType datatype = (OleDbType)Enum.Parse(typeof(OleDbType), chunk[1], true); columnData.Add(new ProfileColumnData(columnName, prop, null /* not needed for get */, datatype)); commandText.Append(", "); commandText.Append("t." + columnName); ++columnCount; } commandText.AppendFormat(" FROM {0} t, {1}MEMBERS u WHERE ",TableName,Config.MemberTablePrefix).AppendLine(); commandText.Append("u.M_NAME = @Username AND t.UserID = u.MEMBER_ID"); cmd.CommandText = commandText.ToString(); cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@Username", username); OleDbDataReader reader = null; try { reader = cmd.ExecuteReader(); //If no row exists in the database, then the default Profile values //from configuration are used. if (reader.Read()) { svc.Clear(); int userId = reader.GetInt32(0); for (int i = 0; i < columnData.Count; ++i) { object val = reader.GetValue(i + 1); ProfileColumnData colData = columnData[i]; SettingsPropertyValue propValue = new SettingsPropertyValue(colData.PropertyValue); //Only initialize a SettingsPropertyValue for non-null values //if (!(val is DBNull || val == null)) //{ propValue.IsDirty = false; if (propValue.Property.SerializeAs == SettingsSerializeAs.Xml) { propValue.Deserialized = false; object test = ""; if (!val.Equals(test)) propValue.SerializedValue = val; } else { propValue.PropertyValue = val; propValue.Deserialized = true; } svc.Add(propValue); //} } // need to close reader before we try to update the user if (reader != null) { reader.Close(); reader = null; } //UpdateLastActivityDate(conn, userId); } else { object val = GetBookMarkModValues(username); ProfileColumnData colData = columnData.Find(c => c.ColumnName == "BookMarks"); SettingsPropertyValue propValue = new SettingsPropertyValue(colData.PropertyValue); propValue.IsDirty = false; if (propValue.Property.SerializeAs == SettingsSerializeAs.Xml) { if (propValue.Name == "BookMarks") { svc.Remove("BookMarks"); propValue.Deserialized = false; object test = ""; if (!val.Equals(test)) propValue.SerializedValue = val; svc.Add(propValue); } } } } finally { if (reader != null) { reader.Close(); } } }
public void ReadOnly_Clear () { SettingsPropertyValueCollection col = new SettingsPropertyValueCollection (); SettingsProperty test_prop = new SettingsProperty ("test_prop"); SettingsPropertyValue val = new SettingsPropertyValue (test_prop); col.Add (val); col.SetReadOnly (); col.Clear (); }
public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection) { OnDebug(this, name + ".GetPropertyValues()"); SettingsPropertyValueCollection output = new SettingsPropertyValueCollection(); try { IWcfProfileProvider remoteProvider = RemoteProvider(); List<WcfSettingsProperty> properties = new List<WcfSettingsProperty>(); foreach (SettingsProperty property in collection) { properties.Add(new WcfSettingsProperty(property)); } foreach (WcfSettingsPropertyValue propertyValue in remoteProvider.GetPropertyValues(context, properties)) { output.Add(propertyValue.ToSettingsPropertyValue(this)); } DisposeRemoteProvider(remoteProvider); } catch (Exception ex) { if (!OnError(this, ex)) { throw; } output.Clear(); } return output; }
public void Clear () { SettingsPropertyValueCollection col = new SettingsPropertyValueCollection (); SettingsProperty test_prop = new SettingsProperty ("test_prop"); SettingsPropertyValue val = new SettingsPropertyValue (test_prop); col.Add (val); Assert.AreEqual (1, col.Count, "A1"); col.Clear (); Assert.AreEqual (0, col.Count, "A2"); }