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)); }
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)); }
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)); }