Exemplo n.º 1
0
        private static void StoreActivity(MonthActivities activities)
        {
            var key      = (activities.Year * 100) + activities.Month;
            var filename = Path.Combine(Program.SettingsDirectory, "Acts" + key + ".bin");

            switch (ActivityFileFormatVersion)
            {
            case 1: activities.WriteToFile(filename); break;

            case 2: activities.WriteToFileV2(filename); break;

            default:
                throw new ConfigurationErrorsException($"Unknown file format version '{ActivityFileFormatVersion}'");
            }
            ActivityCache[key] = activities;

            var sharedFolder = SharedPath;

            if (string.IsNullOrWhiteSpace(sharedFolder) || !Directory.Exists(sharedFolder))
            {
                return;
            }
            try
            {
                var sharedFilename = $"{Environment.MachineName}_Acts{key}.bin";
                File.Copy(filename, Path.Combine(sharedFolder, sharedFilename), true);
            }
            catch (Exception e)
            {
                // Non-critical exception
                Trace.TraceWarning($"Could not copy activities file to shared directory: {e}");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get activities for given month for the specified <paramref name="computers"/>
        /// </summary>
        /// <param name="year"></param>
        /// <param name="month"></param>
        /// <param name="computers"> Name of computers to get. '*' means all computers </param>
        /// <returns></returns>
        public static Dictionary <string, MonthActivities> GetSharedMonthActivities(short year, byte month, string computers)
        {
            if (computers.Equals(Environment.MachineName, StringComparison.OrdinalIgnoreCase))
            {
                return new Dictionary <string, MonthActivities> {
                           [ThisComputer] = GetLocalComputerMonthActivity(year, month)
                }
            }
            ;
            var key = $"{computers ?? "*"}_Acts{year * 100 + month}.bin";

            if (SharedActivityCache.ContainsKey(key))
            {
                return(SharedActivityCache[key]);
            }

            var sharedPath = SharedPath;

            foreach (var file in Directory.EnumerateFiles(sharedPath, key, SearchOption.TopDirectoryOnly))
            {
                var monthActivities = new MonthActivities(file);
                var computerInFile  = Path.GetFileName(file).Split('_')[0];
                if (!SharedActivityCache.ContainsKey(key))
                {
                    SharedActivityCache.Add(key, new Dictionary <string, MonthActivities>(StringComparer.OrdinalIgnoreCase));
                }
                SharedActivityCache[key].Add(computerInFile, monthActivities);
            }

            if (SharedActivityCache.ContainsKey(key))
            {
                return(SharedActivityCache[key]);
            }
            return(new Dictionary <string, MonthActivities>());
        }
Exemplo n.º 3
0
 /// <summary>
 /// Copy constructor
 /// </summary>
 /// <param name="toCopy"></param>
 public MonthActivities(MonthActivities toCopy)
 {
     Year             = toCopy.Year;
     Month            = toCopy.Month;
     ComputerName     = toCopy.ComputerName;
     ApplicationNames = new List <string>(toCopy.ApplicationNames);
     WindowTitles     = new  List <string>(toCopy.WindowTitles);
     foreach (var day in toCopy.Days)
     {
         var activityList = new DayActivityList(this, day.Value.DayNumber);
         foreach (var act in day.Value)
         {
             var copy = new ActivitySpan(activityList, act.StartSecond, act.EndSecond, act.WasActive,
                                         act.ApplicationName(), act.WindowTitle());
             copy.Classify(act.Classification, act.ClassificationFrom);
             activityList.Add(copy);
         }
         this.Days[day.Key] = activityList;
     }
 }
Exemplo n.º 4
0
        private static MonthActivities GetLocalComputerMonthActivity(short year, byte month)
        {
            var key = (year * 100) + month;

            if (ActivityCache.ContainsKey(key))
            {
                return(ActivityCache[key]);
            }

            var filepath = Path.Combine(Program.SettingsDirectory, "Acts" + key + ".bin");

            if (File.Exists(filepath))
            {
                var monthActivities = new MonthActivities(filepath);
                ActivityCache.Add(key, monthActivities);
                return(monthActivities);
            }

            var newMonth = new MonthActivities(year, month);

            ActivityCache.Add(key, newMonth);
            return(newMonth);
        }
Exemplo n.º 5
0
 public ActivitySpan(MonthActivities owner, byte day)
 {
     Owner = owner;
     Day   = owner.Days[day];
 }
Exemplo n.º 6
0
 public ActivitySpan(MonthActivities owner, DayActivityList day)
 {
     Owner = owner;
     Day   = day;
 }
Exemplo n.º 7
0
 public DayActivityList(MonthActivities owner, int dayNumber)
 {
     Owner     = owner;
     DayNumber = dayNumber;
 }