/// <summary> /// Initalises the engine. /// </summary> private void InitaliseEngine() { LicenseManagement(); _heartbeatTimer = new System.Timers.Timer(); _heartbeatTimer.Enabled = false; _heartbeatTimer.Interval = int.Parse(Properties.Resources.HeartbeatInterval); _heartbeatTimer.Elapsed += InternalHeartbeatTimerElapsed; _nagTimer = new System.Timers.Timer(); _nagTimer.Enabled = false; _nagTimer.Elapsed += InternalNagTimerElapsed; _appFolder = (new FileInfo(Assembly.GetExecutingAssembly().Location)).Directory; _dataFolder = new DirectoryInfo(System.Windows.Forms.Application.UserAppDataPath); if (_dataFolder.Exists == false) { _dataFolder.Create(); _dataFolder.Refresh(); } //Read Provider Configuration ConfigurationSection config = ConfigurationManager.GetSection(ConfigurationSection.SectionName) as ConfigurationSection; if (config != null) { if (config.Providers.Count == 0) { Trace.TraceError(Properties.Resources.NoProvidersFoundInConfigurationFile); throw new InvalidOperationException(Properties.Resources.NoProvidersFoundInConfigurationFile); } // The providers are created and initalised in a special order, // first is the // identity provider (work out who is using this application) _identityProvider = InitializeProvider(config, "IdentityProvider") as IdentityProvider; _identityProvider.DiscoverIdentity(); if(!_identityProvider.Principal.Identity.IsAuthenticated) { Trace.TraceError(Properties.Resources.IdentityCouldNotBeEstablished); throw new InvalidOperationException(Properties.Resources.IdentityCouldNotBeEstablished); } // Then comes the plugin provider _pluginsProvider = InitializeProvider(config, "PluginsProvider") as PluginsProvider; _pluginsProvider.DiscoverPlugins(); // then comes the TaskDescription and Task Activity providers _taskDescriptionsProvider = InitializeProvider(config, "TaskDescriptionsProvider") as TaskDescriptionsProvider; _taskActivitiesProvider = InitializeProvider(config, "TaskActivitiesProvider") as TaskActivitiesProvider; // The UI provider then gets created and initalised _uiProvider = InitializeProvider(config, "UIProvider") as UIProvider; // Finnaly the Users memory provider _userMemoryProvider = InitializeProvider(config, "UserMemoryProvider") as UserMemoryProvider; } else { Trace.TraceError(Properties.Resources.ConfigurationFileInvalid); throw new InvalidOperationException(Properties.Resources.ConfigurationFileInvalid); } Trace.TraceInformation("TaskClerkSDK:InitaliseEngine"); }
/// <summary> /// When overridden in a provider, it discovers the date metrics stored in the users data area. /// </summary> /// <param name="question">The question.</param> /// <returns></returns> protected override Collection<DateTime> ProviderDiscoverDateMetrics( TaskActivitiesProvider.MetricQuestion question) { // This provider does not understand any question and alwys returns the dates // where data has been stored. Collection<DateTime> dateMetrics = new Collection<DateTime>(); string message = "Hackers change this code."; message += " I loose."; bool registered = (Engine.SettingsProvider.Get("CurrentUserRegistrationKey", "").ToString().Length == 50 ? true : false); bool purchased = (bool) Engine.SettingsProvider.Get("CurrentUserRegistrationKeyPurchased", false); List<DateTime> storedDays = new List<DateTime>(); FileInfo[] files = _dataFolder.GetFiles("*" + STRING_FILEPATTERN); foreach (FileInfo fileInfo in files) { // remove the file from the list if (fileInfo.Length == 0) { fileInfo.MoveTo(fileInfo.FullName + "_err"); continue; } // process the file using (FileStream fileStream = fileInfo.Open(FileMode.Open, FileAccess.Read)) { XmlSerializer s = new XmlSerializer(typeof (List<TaskActivity>)); foreach (TaskActivity ta in (List<TaskActivity>) s.Deserialize(fileStream)) { if (storedDays.Contains(ta.StartDate) == false) { storedDays.Add(ta.StartDate); } } } } foreach (DateTime dt in storedDays) { dateMetrics.Add(dt); } return dateMetrics; }