Profiles.Activity.Utilities.DataIO.GetActivity C# (CSharp) Method

GetActivity() public method

public GetActivity ( System.Int64 lastActivityLogID, int count, bool declump ) : List
lastActivityLogID System.Int64
count int
declump bool
return List
        public List<Activity> GetActivity(Int64 lastActivityLogID, int count, bool declump)
        {
            List<Activity> activities = new List<Activity>();
            SortedList<Int64, Activity> cache = GetFreshCache();
            // grab as many as you can from the cache
            if (lastActivityLogID == -1)
            {
                activities.AddRange(cache.Values);
            }
            else if (cache.IndexOfKey(lastActivityLogID) != -1)
            {
                activities.AddRange(cache.Values);
                activities.RemoveRange(0, cache.IndexOfKey(lastActivityLogID) + 1);
            }

            List<Activity> retval = activities;
            if (declump)
            {
                retval = GetUnclumpedSubset(activities, count);
            }
            else if (count < retval.Count)
            {
                retval.RemoveRange(count, activities.Count - count);
            }

            if (count > retval.Count && retval.Count > 0)
            {
                // we need to go to the DB to get more. If we are declumping, we don't know exacly how many more we need but we make a good guess
                // and loop as needed
                if (declump)
                {
                    while (count > retval.Count)
                    {
                        SortedList<Int64, Activity> newActivities = GetRecentActivity(activities[activities.Count-1].Id, 10 * (count - retval.Count), true);
                        if (newActivities.Count == 0)
                        {
                            // nothing more to load, time to bail
                            break;
                        }
                        else
                        {
                            activities.AddRange(newActivities.Values);
                            retval = GetUnclumpedSubset(activities, count);
                        }
                    }
                }
                else
                {
                    retval.AddRange(GetRecentActivity(retval[retval.Count - 1].Id, count - retval.Count, true).Values);
                }
            }
            return retval;
        }

Usage Example

Example #1
0
        public static string GetActivities(Int64 referenceActivityId, int count, bool newActivities)
        {
            Profiles.Activity.Utilities.DataIO data = new Profiles.Activity.Utilities.DataIO();
            JavaScriptSerializer serializer         = new JavaScriptSerializer();
            List <Profiles.Activity.Utilities.Activity> activities = null;

            if (newActivities)
            {
                // get the latest and remove any that we already have
                activities = new List <Profiles.Activity.Utilities.Activity>();
                // we should probably make the data function smart enough to not return a bunch we already have
                // to save the loop
                foreach (Profiles.Activity.Utilities.Activity activity in data.GetActivity(-1, count, true))
                {
                    if (activity.Id > referenceActivityId)
                    {
                        activities.Add(activity);
                    }
                }
            }
            else
            {
                activities = data.GetActivity(referenceActivityId, count, true);
            }
            return(serializer.Serialize(activities));
        }
All Usage Examples Of Profiles.Activity.Utilities.DataIO::GetActivity