Ejemplo n.º 1
0
        /// <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;
        }