コード例 #1
0
        private IOutlookSynchronizer CreateTaskSynchronizer(Options options, AvailableSynchronizerComponents componentsToFill)
        {
            var mappingParameters = GetMappingParameters <TaskMappingConfiguration> (options);

            var atypeRepository = new OutlookTaskRepository(_outlookSession, options.OutlookFolderEntryId, options.OutlookFolderStoreId, _daslFilterProvider);

            var calDavDataAccess = new CalDavDataAccess(
                new Uri(options.CalenderUrl),
                CreateWebDavClient(
                    options.UserName,
                    options.GetEffectivePassword(_outlookAccountPasswordProvider),
                    options.CalenderUrl,
                    _calDavConnectTimeout,
                    options.ServerAdapterType,
                    options.CloseAfterEachRequest,
                    options.PreemptiveAuthentication,
                    options.ForceBasicAuthentication,
                    options.ProxyOptions));

            componentsToFill.CalDavDataAccess = calDavDataAccess;

            var btypeRepository = new CalDavRepository(
                calDavDataAccess,
                new iCalendarSerializer(),
                CalDavRepository.EntityType.Todo,
                NullDateTimeRangeProvider.Instance,
                false);

            var outlookEventRelationDataFactory = new OutlookEventRelationDataFactory();
            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, TaskItemWrapper, WebResourceName, string, IICalendar> (
                new TaskMapper(_outlookSession.Application.TimeZones.CurrentTimeZone.ID, mappingParameters),
                atypeRepository,
                btypeRepository,
                outlookEventRelationDataFactory,
                ExceptionHandler.Instance);

            var storageDataDirectory = _profileDataDirectoryFactory(options.Id);

            var btypeIdEqualityComparer = WebResourceName.Comparer;
            var atypeIdEqualityComparer = EqualityComparer <string> .Default;

            var synchronizer = new Synchronizer <string, DateTime, TaskItemWrapper, WebResourceName, string, IICalendar> (
                atypeRepository,
                btypeRepository,
                InitialTaskSyncStateCreationStrategyFactory.Create(
                    syncStateFactory,
                    syncStateFactory.Environment,
                    options.SynchronizationMode,
                    options.ConflictResolution),
                new EntityRelationDataAccess <string, DateTime, OutlookEventRelationData, WebResourceName, string> (storageDataDirectory),
                outlookEventRelationDataFactory,
                new InitialTaskEntityMatcher(btypeIdEqualityComparer),
                atypeIdEqualityComparer,
                btypeIdEqualityComparer,
                _totalProgressFactory,
                ExceptionHandler.Instance);

            return(new OutlookSynchronizer <WebResourceName, string> (synchronizer));
        }
コード例 #2
0
        private OutlookSynchronizer CreateTaskSynchronizer(Options options)
        {
            // TODO: dispose folder like it is done for events
            var calendarFolder  = (Folder)_outlookSession.GetFolderFromID(options.OutlookFolderEntryId, options.OutlookFolderStoreId);
            var atypeRepository = new OutlookTaskRepository(calendarFolder, _outlookSession);

            var btypeRepository = new CalDavRepository(
                new CalDavDataAccess(
                    new Uri(options.CalenderUrl),
                    CreateWebDavClient(
                        options.UserName,
                        options.Password,
                        _calDavConnectTimeout,
                        options.ServerAdapterType,
                        options.CloseAfterEachRequest,
                        options.ProxyOptions)),
                new iCalendarSerializer(),
                CalDavRepository.EntityType.Todo,
                NullDateTimeRangeProvider.Instance);

            var outlookEventRelationDataFactory = new OutlookEventRelationDataFactory();
            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, TaskItemWrapper, Uri, string, IICalendar> (
                new TaskMapper(_outlookSession.Application.TimeZones.CurrentTimeZone.ID),
                atypeRepository,
                btypeRepository,
                outlookEventRelationDataFactory,
                ExceptionHandler.Instance);

            var storageDataDirectory = _profileDataDirectoryFactory(options.Id);

            var btypeIdEqualityComparer = EqualityComparer <Uri> .Default;
            var atypeIdEqualityComparer = EqualityComparer <string> .Default;

            var synchronizer = new Synchronizer <string, DateTime, TaskItemWrapper, Uri, string, IICalendar> (
                atypeRepository,
                btypeRepository,
                InitialTaskSyncStateCreationStrategyFactory.Create(
                    syncStateFactory,
                    syncStateFactory.Environment,
                    options.SynchronizationMode,
                    options.ConflictResolution),
                new EntityRelationDataAccess <string, DateTime, OutlookEventRelationData, Uri, string> (storageDataDirectory),
                outlookEventRelationDataFactory,
                new InitialTaskEntityMatcher(btypeIdEqualityComparer),
                atypeIdEqualityComparer,
                btypeIdEqualityComparer,
                _totalProgressFactory,
                ExceptionHandler.Instance);

            return(new OutlookSynchronizer(synchronizer, atypeRepository));
        }
コード例 #3
0
        private ISynchronizer CreateTaskSynchronizer(Options options)
        {
            var storageDataDirectory = Path.Combine(
                _applicationDataDirectory,
                options.Id.ToString()
                );

            var storageDataAccess = new EntityRelationDataAccess <string, DateTime, OutlookEventRelationData, Uri, string> (storageDataDirectory);

            var btypeIdEqualityComparer = EqualityComparer <Uri> .Default;
            var atypeIdComparer         = EqualityComparer <string> .Default;

            var synchronizationContext = new TaskSynchronizationContext(
                _outlookSession,
                storageDataAccess,
                options,
                TimeSpan.Parse(ConfigurationManager.AppSettings["calDavConnectTimeout"]),
                TimeSpan.Parse(ConfigurationManager.AppSettings["calDavReadWriteTimeout"]),
                Boolean.Parse(ConfigurationManager.AppSettings["disableCertificateValidation"]),
                Boolean.Parse(ConfigurationManager.AppSettings["enableSsl3"]),
                Boolean.Parse(ConfigurationManager.AppSettings["enableTls12"]),
                btypeIdEqualityComparer);

            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, TaskItemWrapper, Uri, string, IICalendar> (
                synchronizationContext.EntityMapper,
                synchronizationContext.AtypeRepository,
                synchronizationContext.BtypeRepository,
                synchronizationContext.EntityRelationDataFactory,
                ExceptionHandler.Instance);

            return(new Synchronizer <string, DateTime, TaskItemWrapper, Uri, string, IICalendar> (
                       synchronizationContext,
                       InitialTaskSyncStateCreationStrategyFactory.Create(
                           syncStateFactory,
                           syncStateFactory.Environment,
                           options.SynchronizationMode,
                           options.ConflictResolution),
                       _totalProgressFactory,
                       atypeIdComparer,
                       btypeIdEqualityComparer,
                       ExceptionHandler.Instance));
        }