/// <summary> /// Fills the {0} from a OleIDataReader. /// </summary> public static void FillFromReader(DojoOrganization dojoOrganization, IDataReader r, int idOffset, int dataOffset) { dojoOrganization.iD = r.GetInt32(idOffset); dojoOrganization.isSynced = true; dojoOrganization.isPlaceHolder = false; dojoOrganization.name = r.GetString(0 + dataOffset); dojoOrganization.description = r.GetString(1 + dataOffset); if (!r.IsDBNull(2 + dataOffset) && r.GetInt32(2 + dataOffset) > 0) { dojoOrganization.location = GreyFoxContact.NewPlaceHolder("kitTessen_Locations", r.GetInt32(2 + dataOffset)); } if (!r.IsDBNull(3 + dataOffset) && r.GetInt32(3 + dataOffset) > 0) { dojoOrganization.administrativeContact = GreyFoxContact.NewPlaceHolder("sysGlobal_Contacts", r.GetInt32(3 + dataOffset)); } dojoOrganization.webServiceUrl = r.GetString(4 + dataOffset); dojoOrganization.refreshTime = TimeSpan.FromTicks((long)r.GetDouble(5 + dataOffset)); dojoOrganization.isPrimary = r.GetBoolean(6 + dataOffset); if (!r.IsDBNull(7 + dataOffset) && r.GetInt32(7 + dataOffset) > 0) { dojoOrganization.defaultMemberType = DojoMemberType.NewPlaceHolder(r.GetInt32(7 + dataOffset)); } dojoOrganization.promotionFlagEnabled = r.GetBoolean(8 + dataOffset); }
/// <summary> /// Makes a deep copy of the current DojoOrganization. /// </summary> /// <returns> A new DojoOrganization object reflecting the cloned DojoOrganization object.</returns> public DojoOrganization Copy() { DojoOrganization dojoOrganization = new DojoOrganization(); CopyTo(dojoOrganization); return(dojoOrganization); }
public static DojoOrganization ParseFromReader(IDataReader r, int idOffset, int dataOffset) { DojoOrganization dojoOrganization = new DojoOrganization(); FillFromReader(dojoOrganization, r, idOffset, dataOffset); return(dojoOrganization); }
/// <summary> /// Makes a deep copy of the current DojoOrganization. /// </summary> /// <returns> A new DojoOrganization object reflecting the cloned DojoOrganization object.</returns> /// <param name="isolation">Placeholders are used to isolate the DojoOrganization from its children.</param> public DojoOrganization Copy(bool isolation) { DojoOrganization dojoOrganization = new DojoOrganization(); CopyTo(dojoOrganization, isolation); return(dojoOrganization); }
/// <summary> /// Duplicates DojoOrganization object into a database; may or may not be the same database /// as the parent object. /// </summary> /// <returns> A new DojoOrganization object reflecting the replicated DojoOrganization object.</returns> public DojoOrganization Duplicate() { DojoOrganization clonedDojoOrganization = this.Clone(); // Insert must be called after children are replicated! clonedDojoOrganization.iD = DojoOrganizationManager._insert(clonedDojoOrganization); clonedDojoOrganization.isSynced = true; return(clonedDojoOrganization); }
public static DojoOrganization NewPlaceHolder(int iD) { DojoOrganization dojoOrganization = new DojoOrganization(); dojoOrganization.iD = iD; dojoOrganization.isPlaceHolder = true; dojoOrganization.isSynced = true; return(dojoOrganization); }
/// <summary> /// Deep copies the current DojoOrganization to another instance of DojoOrganization. /// </summary> /// <param name="DojoOrganization">The DojoOrganization to copy to.</param> /// <param name="isolation">Placeholders are used to isolate the DojoOrganization from its children.</param> public void CopyTo(DojoOrganization dojoOrganization, bool isolation) { dojoOrganization.iD = iD; dojoOrganization.isPlaceHolder = isPlaceHolder; dojoOrganization.isSynced = isSynced; dojoOrganization.name = name; dojoOrganization.description = description; if (location != null) { if (isolation) { dojoOrganization.location = location.NewPlaceHolder(); } else { dojoOrganization.location = location.Copy(false); } } if (classLocations != null) { if (isolation) { dojoOrganization.classLocations = classLocations.Copy(true); } else { dojoOrganization.classLocations = classLocations.Copy(false); } } if (administrativeContact != null) { if (isolation) { dojoOrganization.administrativeContact = administrativeContact.NewPlaceHolder(); } else { dojoOrganization.administrativeContact = administrativeContact.Copy(false); } } dojoOrganization.webServiceUrl = webServiceUrl; dojoOrganization.refreshTime = refreshTime; dojoOrganization.isPrimary = isPrimary; if (defaultMemberType != null) { if (isolation) { dojoOrganization.defaultMemberType = defaultMemberType.NewPlaceHolder(); } else { dojoOrganization.defaultMemberType = defaultMemberType.Copy(false); } } dojoOrganization.promotionFlagEnabled = promotionFlagEnabled; }
public void Remove(DojoOrganization value) { OnCollectionChanged(EventArgs.Empty); int index = IndexOf(value); if (index == -1) { throw(new Exception("DojoOrganization not found in collection.")); } RemoveAt(index); }
private static void fillParameters(Database database, DbCommand dbCommand, DojoOrganization dojoOrganization) { #region Default addParameter(database, dbCommand, "@Name", DbType.String, dojoOrganization.name); addParameter(database, dbCommand, "@Description", DbType.String, dojoOrganization.description); if (dojoOrganization.location == null) { addParameter(database, dbCommand, "@LocationID", DbType.Int32, DBNull.Value); } else { addParameter(database, dbCommand, "@LocationID", DbType.Int32, dojoOrganization.location.ID); } if (dojoOrganization.administrativeContact == null) { addParameter(database, dbCommand, "@AdministrativeContactID", DbType.Int32, DBNull.Value); } else { addParameter(database, dbCommand, "@AdministrativeContactID", DbType.Int32, dojoOrganization.administrativeContact.ID); } #endregion #region Web Services addParameter(database, dbCommand, "@WebServiceUrl", DbType.String, dojoOrganization.webServiceUrl); addParameter(database, dbCommand, "@RefreshTime", DbType.Double, dojoOrganization.refreshTime.Ticks); #endregion #region System addParameter(database, dbCommand, "@IsPrimary", DbType.Boolean, dojoOrganization.isPrimary); #endregion #region Membership if (dojoOrganization.defaultMemberType == null) { addParameter(database, dbCommand, "@DefaultMemberTypeID", DbType.Int32, DBNull.Value); } else { addParameter(database, dbCommand, "@DefaultMemberTypeID", DbType.Int32, dojoOrganization.defaultMemberType.ID); } addParameter(database, dbCommand, "@PromotionFlagEnabled", DbType.Boolean, dojoOrganization.promotionFlagEnabled); #endregion }
public int IndexOf(DojoOrganization value) { lock (this) { for (int x = 0; x < count; x++) { if (DojoOrganizationArray[x].Equals(value)) { return(x); } } return(-1); } }
internal static bool _fill(DojoOrganization dojoOrganization) { // Clone item from cache. if (cacheEnabled) { object cachedObject = cacheFind(dojoOrganization.iD); if (cachedObject != null) { ((DojoOrganization)cachedObject).CopyTo(dojoOrganization, true); return(dojoOrganization.isSynced); } } StringBuilder query; Database database; DbCommand dbCommand; query = new StringBuilder("SELECT "); query.Append(string.Join(",", InnerJoinFields)); query.Append(" FROM kitTessen_Organizations WHERE DojoOrganizationID="); query.Append(dojoOrganization.iD); query.Append(";"); database = DatabaseFactory.CreateDatabase(); dbCommand = database.GetSqlStringCommand(query.ToString()); IDataReader r = database.ExecuteReader(dbCommand); if (!r.Read()) { throw(new Exception(string.Format("Cannot find DojoOrganizationID '{0}'.", dojoOrganization.iD))); } FillFromReader(dojoOrganization, r, 0, 1); // Microsoft DAAB still needs to have the reader closed. r.Close(); // Store dojoOrganization in cache. if (cacheEnabled) { cacheStore(dojoOrganization); } return(true); }
public int Add(DojoOrganization value) { OnCollectionChanged(EventArgs.Empty); lock (this) { count++; // Resize the array if the count is greater than the length // of the array. if (count > DojoOrganizationArray.GetUpperBound(0) + 1) { DojoOrganization[] tempDojoOrganizationArray = new DojoOrganization[count * 2]; Array.Copy(DojoOrganizationArray, tempDojoOrganizationArray, count - 1); DojoOrganizationArray = tempDojoOrganizationArray; } DojoOrganizationArray[count - 1] = value; } return(count - 1); }
public static void FillClassLocations(DojoOrganization dojoOrganization) { StringBuilder s; Database database; DbCommand dbCommand; IDataReader r; s = new StringBuilder("SELECT GreyFoxContactID FROM kitTessen_OrganizationsChildren_ClassLocations "); s.Append("WHERE DojoOrganizationID="); s.Append(dojoOrganization.iD); s.Append(";"); database = DatabaseFactory.CreateDatabase(); dbCommand = database.GetSqlStringCommand(s.ToString()); r = database.ExecuteReader(dbCommand); GreyFoxContactCollection classLocations; if (dojoOrganization.classLocations != null) { classLocations = dojoOrganization.classLocations; classLocations.Clear(); } else { classLocations = new GreyFoxContactCollection(); dojoOrganization.classLocations = classLocations; } while (r.Read()) { classLocations.Add(GreyFoxContact.NewPlaceHolder("kitTessen_Locations", r.GetInt32(0))); } dojoOrganization.ClassLocations = classLocations; // Store DojoOrganization in cache. if (cacheEnabled) { cacheStore(dojoOrganization); } }
public void Insert(int index, DojoOrganization value) { OnCollectionChanged(EventArgs.Empty); lock (this) { count++; // Resize the array if the count is greater than the length // of the array. if (count > DojoOrganizationArray.GetUpperBound(0) + 1) { DojoOrganization[] tempDojoOrganizationArray = new DojoOrganization[count * 2]; Array.Copy(DojoOrganizationArray, tempDojoOrganizationArray, count - 1); DojoOrganizationArray = tempDojoOrganizationArray; } for (int x = index + 1; x == count - 2; x++) { DojoOrganizationArray[x] = DojoOrganizationArray[x - 1]; } DojoOrganizationArray[index] = value; } }
/// <summary> /// Clones DojoOrganization object and clones child objects with cloning or replication. /// as the parent object. /// </summary> /// <returns> A new DojoOrganization object reflecting the replicated DojoOrganization object.</returns> public DojoOrganization Clone() { DojoOrganization clonedDojoOrganization = new DojoOrganization(); clonedDojoOrganization.iD = iD; clonedDojoOrganization.isSynced = isSynced; clonedDojoOrganization.name = name; clonedDojoOrganization.description = description; clonedDojoOrganization.webServiceUrl = webServiceUrl; clonedDojoOrganization.refreshTime = refreshTime; clonedDojoOrganization.isPrimary = isPrimary; clonedDojoOrganization.promotionFlagEnabled = promotionFlagEnabled; if (location != null) { clonedDojoOrganization.location = location; } if (classLocations != null) { clonedDojoOrganization.classLocations = classLocations.Clone(); } if (administrativeContact != null) { clonedDojoOrganization.administrativeContact = administrativeContact; } if (defaultMemberType != null) { clonedDojoOrganization.defaultMemberType = defaultMemberType; } return(clonedDojoOrganization); }
internal static int _update(DojoOrganization dojoOrganization) { Database database; DbCommand dbCommand; database = DatabaseFactory.CreateDatabase(); dbCommand = database.GetSqlStringCommand("UPDATE kitTessen_Organizations SET Name=@Name," + "Description=@Description," + "LocationID=@LocationID," + "AdministrativeContactID=@AdministrativeContactID," + "WebServiceUrl=@WebServiceUrl," + "RefreshTime=@RefreshTime," + "IsPrimary=@IsPrimary," + "DefaultMemberTypeID=@DefaultMemberTypeID," + "PromotionFlagEnabled=@PromotionFlagEnabled WHERE DojoOrganizationID=@DojoOrganizationID;"); fillParameters(database, dbCommand, dojoOrganization); database.AddInParameter(dbCommand, "DojoOrganizationID", DbType.Int32, dojoOrganization.iD); // Abandon remaining updates if no rows have been updated by returning false immediately. if (database.ExecuteNonQuery(dbCommand) == 0) { return(-1); } if (dojoOrganization.classLocations != null) { // Delete child relationships for ClassLocations. dbCommand = database.GetSqlStringCommand("DELETE FROM kitTessen_OrganizationsChildren_ClassLocations WHERE DojoOrganizationID=@DojoOrganizationID;"); database.AddInParameter(dbCommand, "@DojoOrganizationID", DbType.Int32, dojoOrganization.iD); database.ExecuteNonQuery(dbCommand); // Save child relationships for ClassLocations. dbCommand = database.GetSqlStringCommand("INSERT INTO kitTessen_OrganizationsChildren_ClassLocations (DojoOrganizationID, GreyFoxContactID) VALUES (@DojoOrganizationID, @GreyFoxContactID);"); database.AddInParameter(dbCommand, "@DojoOrganizationID", DbType.Int32, dojoOrganization.iD); database.AddInParameter(dbCommand, "@GreyFoxContactID", DbType.Int32); foreach (GreyFoxContact greyFoxContact in dojoOrganization.classLocations) { dbCommand.Parameters["@GreyFoxContactID"].Value = greyFoxContact.ID; database.ExecuteNonQuery(dbCommand); } } // Store dojoOrganization in cache. if (cacheEnabled) { cacheStore(dojoOrganization); } // ************************* WARNING **************************** // Update operations must invalidate the cached collections. // Invalidation MUST invalidate any foreign cached collections that // with children objects this manager provides or else the foreign // caches retain invalidated and potentially corrupt data! // NOTE: // NitroCast only allows collection caching on objects that do not // have any children objects to minimize potential corruption. // ************************* WARNING **************************** invalidateCachedCollections(); return(dojoOrganization.iD); }
/// <summary> /// Deep copies the current DojoOrganization to another instance of DojoOrganization. /// This method does not provide isolated copies; use overriden method for this feature. /// </summary> /// <param name="DojoOrganization">The DojoOrganization to copy to.</param> public void CopyTo(DojoOrganization dojoOrganization) { CopyTo(dojoOrganization, false); }
public DojoOrganizationCollection GetCollection(int topCount, string whereClause, string sortClause, params DojoOrganizationFlags[] optionFlags) { StringBuilder query; Database database; DbCommand dbCommand; IDataReader r; DojoOrganizationCollection dojoOrganizationCollection; int hashcode; // Cache Handling hashcode = 0; if (cacheEnabled) { hashcode = topCount.GetHashCode() + whereClause.GetHashCode() + sortClause.GetHashCode() + tableName.GetHashCode(); DojoOrganizationCollection collection = cacheFindCollection(hashcode); if (collection != null) { return(collection); } } int innerJoinOffset; query = new StringBuilder("SELECT "); if (topCount > 0) { query.Append("TOP "); query.Append(topCount); query.Append(" "); } foreach (string columnName in InnerJoinFields) { query.Append("DojoOrganization."); query.Append(columnName); query.Append(","); } innerJoinOffset = InnerJoinFields.GetUpperBound(0) + 1; int locationOffset = -1; int administrativeContactOffset = -1; int defaultMemberTypeOffset = -1; // // Append Option Flag Fields // if (optionFlags != null) { for (int x = 0; x < optionFlags.Length; x++) { switch (optionFlags[x]) { case DojoOrganizationFlags.Location: for (int i = 0; i <= GreyFoxContactManager.InnerJoinFields.GetUpperBound(0); i++) { query.Append("Location."); query.Append(GreyFoxContactManager.InnerJoinFields[i]); query.Append(","); } locationOffset = innerJoinOffset; innerJoinOffset = locationOffset + GreyFoxContactManager.InnerJoinFields.GetUpperBound(0) + 1; break; case DojoOrganizationFlags.AdministrativeContact: for (int i = 0; i <= GreyFoxContactManager.InnerJoinFields.GetUpperBound(0); i++) { query.Append("AdministrativeContact."); query.Append(GreyFoxContactManager.InnerJoinFields[i]); query.Append(","); } administrativeContactOffset = innerJoinOffset; innerJoinOffset = administrativeContactOffset + GreyFoxContactManager.InnerJoinFields.GetUpperBound(0) + 1; break; case DojoOrganizationFlags.DefaultMemberType: for (int i = 0; i <= DojoMemberTypeManager.InnerJoinFields.GetUpperBound(0); i++) { query.Append("DefaultMemberType."); query.Append(DojoMemberTypeManager.InnerJoinFields[i]); query.Append(","); } defaultMemberTypeOffset = innerJoinOffset; innerJoinOffset = defaultMemberTypeOffset + DojoMemberTypeManager.InnerJoinFields.GetUpperBound(0) + 1; break; } } } // // Remove trailing comma // query.Length--; if (optionFlags != null) { query.Append(" FROM "); // // Start INNER JOIN expressions // for (int x = 0; x < optionFlags.Length; x++) { query.Append("("); } query.Append("kitTessen_Organizations AS DojoOrganization"); } else { query.Append(" FROM kitTessen_Organizations AS DojoOrganization"); } // // Finish INNER JOIN expressions // if (optionFlags != null) { for (int x = 0; x < optionFlags.Length; x++) { switch (optionFlags[x]) { case DojoOrganizationFlags.Location: query.Append(" LEFT JOIN kitTessen_Locations AS Location ON DojoOrganization.LocationID = Location.GreyFoxContactID)"); break; case DojoOrganizationFlags.AdministrativeContact: query.Append(" LEFT JOIN sysGlobal_Contacts AS AdministrativeContact ON DojoOrganization.AdministrativeContactID = AdministrativeContact.GreyFoxContactID)"); break; case DojoOrganizationFlags.DefaultMemberType: query.Append(" LEFT JOIN kitTessen_MemberTypes AS DefaultMemberType ON DojoOrganization.DefaultMemberTypeID = DefaultMemberType.DojoMemberTypeID)"); break; } } } // // Render where clause // if (whereClause != string.Empty) { query.Append(" WHERE "); query.Append(whereClause); } // // Render sort clause // if (sortClause != string.Empty) { query.Append(" ORDER BY "); query.Append(sortClause); } // // Render final semicolon // query.Append(";"); database = DatabaseFactory.CreateDatabase(); dbCommand = database.GetSqlStringCommand(query.ToString()); #if DEBUG try { r = database.ExecuteReader(dbCommand); } catch (Exception e) { string msg = e.Message; throw(new Exception(msg + " --- Query: " + query.ToString())); } #else r = database.ExecuteReader(dbCommand); #endif dojoOrganizationCollection = new DojoOrganizationCollection(); while (r.Read()) { DojoOrganization dojoOrganization = ParseFromReader(r, 0, 1); // Fill Location if (locationOffset != -1 && !r.IsDBNull(locationOffset)) { GreyFoxContactManager.FillFromReader(dojoOrganization.location, "kitTessen_Locations", r, locationOffset, locationOffset + 1); } // Fill AdministrativeContact if (administrativeContactOffset != -1 && !r.IsDBNull(administrativeContactOffset)) { GreyFoxContactManager.FillFromReader(dojoOrganization.administrativeContact, "sysGlobal_Contacts", r, administrativeContactOffset, administrativeContactOffset + 1); } // Fill DefaultMemberType if (defaultMemberTypeOffset != -1 && !r.IsDBNull(defaultMemberTypeOffset)) { DojoMemberTypeManager.FillFromReader(dojoOrganization.defaultMemberType, r, defaultMemberTypeOffset, defaultMemberTypeOffset + 1); } dojoOrganizationCollection.Add(dojoOrganization); } // Microsoft DAAB still needs to close readers. r.Close(); if (cacheEnabled) { cacheStoreCollection(hashcode, dojoOrganizationCollection); } return(dojoOrganizationCollection); }
public bool Contains(DojoOrganization value) { return(IndexOf(value) != -1); }
/// <summary> /// Inserts a DojoOrganization into the database. All children should have been /// saved to the database before insertion. New children will not be /// related to this object in the database. /// </summary> /// <param name="_DojoOrganization">The DojoOrganization to insert into the database.</param> internal static int _insert(DojoOrganization dojoOrganization) { int id; string query; Database database; DbCommand dbCommand; database = DatabaseFactory.CreateDatabase(); query = "INSERT INTO kitTessen_Organizations " + "(" + "Name," + "Description," + "LocationID," + "AdministrativeContactID," + "WebServiceUrl," + "RefreshTime," + "IsPrimary," + "DefaultMemberTypeID," + "PromotionFlagEnabled) VALUES (" + "@Name," + "@Description," + "@LocationID," + "@AdministrativeContactID," + "@WebServiceUrl," + "@RefreshTime," + "@IsPrimary," + "@DefaultMemberTypeID," + "@PromotionFlagEnabled);"; if (database.ConnectionStringWithoutCredentials.StartsWith("provider=microsoft.jet.oledb.4.0")) { // Microsoft Access // Connection must remain open for IDENTITY to return correct value, // therefore use the dbCommand object's Connection directly to control // connection state. dbCommand = database.GetSqlStringCommand(query); fillParameters(database, dbCommand, dojoOrganization); dbCommand.Connection = database.CreateConnection(); dbCommand.Connection.Open(); dbCommand.ExecuteNonQuery(); dbCommand.CommandText = "SELECT @@IDENTITY AS LastID"; id = (int)dbCommand.ExecuteScalar(); dbCommand.Connection.Close(); } else { //// Microsoft SQL Server dbCommand = database.GetSqlStringCommand(query + " SELECT @LastID = SCOPE_IDENTITY();"); fillParameters(database, dbCommand, dojoOrganization); database.AddOutParameter(dbCommand, "@LastID", DbType.Int32, 10); database.ExecuteNonQuery(dbCommand); id = (int)dbCommand.Parameters["@LastID"].Value; } // Save child relationships for ClassLocations. if (dojoOrganization.classLocations != null) { dbCommand = database.GetSqlStringCommand("INSERT INTO kitTessen_OrganizationsChildren_ClassLocations " + "(DojoOrganizationID, GreyFoxContactID)" + " VALUES (@DojoOrganizationID, @GreyFoxContactID);"); addParameter(database, dbCommand, "@DojoOrganizationID", DbType.Int32); addParameter(database, dbCommand, "@GreyFoxContactID", DbType.Int32); foreach (GreyFoxContact item in dojoOrganization.classLocations) { dbCommand.Parameters["@DojoOrganizationID"].Value = id; dbCommand.Parameters["@GreyFoxContactID"].Value = item.ID; database.ExecuteNonQuery(dbCommand); } } // Store dojoOrganization in cache. if (cacheEnabled) { cacheStore(dojoOrganization); } // ************************* WARNING **************************** // Insert operations must invalidate the cached collections. // Invalidation MUST invalidate any foreign cached collections that // with children objects this manager provides or else the foreign // caches retain invalidated and potentially corrupt data! // NOTE: // NitroCast only allows collection caching on objects that do not // have any children objects to minimize potential corruption. invalidateCachedCollections(); return(id); }
/// <summary> /// Compares the object's ID to another object's ID. /// </summary> int IComparable.CompareTo(object obj) { DojoOrganization dojoOrganization = (DojoOrganization)obj; return(this.iD - dojoOrganization.iD); }
/// <summary> /// Compares the object's ID to another object's ID. /// </summary> public int CompareTo(DojoOrganization dojoOrganization) { return(this.iD - dojoOrganization.iD); }
private static void cacheStore(DojoOrganization dojoOrganization) { CacheManager cache = CacheFactory.GetCacheManager(); cache.Add("kitTessen_Organizations_" + dojoOrganization.iD.ToString(), dojoOrganization); }