/// <remarks> /// Public because it is being used by integration tests /// </remarks> public ISynchronizer CreateEventSynchronizer( Options options, ICalDavDataAccess calDavDataAccess, IEntityRelationDataAccess <string, DateTime, Uri, string> entityRelationDataAccess) { var dateTimeRangeProvider = options.IgnoreSynchronizationTimeRange ? NullDateTimeRangeProvider.Instance : new DateTimeRangeProvider(options.DaysToSynchronizeInThePast, options.DaysToSynchronizeInTheFuture); var atypeRepository = new OutlookEventRepository( _outlookSession, options.OutlookFolderEntryId, options.OutlookFolderStoreId, dateTimeRangeProvider); IEntityRepository <IICalendar, Uri, string> btypeRepository = new CalDavRepository( calDavDataAccess, new iCalendarSerializer(), CalDavRepository.EntityType.Event, dateTimeRangeProvider); var entityMapper = new EventEntityMapper( _outlookEmailAddress, new Uri("mailto:" + options.EmailAddress), _outlookSession.Application.TimeZones.CurrentTimeZone.ID, _outlookSession.Application.Version); var outlookEventRelationDataFactory = new OutlookEventRelationDataFactory(); var syncStateFactory = new EntitySyncStateFactory <string, DateTime, AppointmentItemWrapper, Uri, string, IICalendar> ( entityMapper, atypeRepository, btypeRepository, outlookEventRelationDataFactory, ExceptionHandler.Instance ); var btypeIdEqualityComparer = EqualityComparer <Uri> .Default; var atypeIdEqualityComparer = EqualityComparer <string> .Default; return(new Synchronizer <string, DateTime, AppointmentItemWrapper, Uri, string, IICalendar> ( atypeRepository, btypeRepository, InitialEventSyncStateCreationStrategyFactory.Create( syncStateFactory, syncStateFactory.Environment, options.SynchronizationMode, options.ConflictResolution), entityRelationDataAccess, outlookEventRelationDataFactory, new InitialEventEntityMatcher(btypeIdEqualityComparer), atypeIdEqualityComparer, btypeIdEqualityComparer, _totalProgressFactory, ExceptionHandler.Instance)); }
private ISynchronizer CreateEventSynchronizer(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 EventSynchronizationContext( _outlookSession, storageDataAccess, options, _outlookEmailAddress, 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, AppointmentItemWrapper, Uri, string, IICalendar> ( synchronizationContext.EntityMapper, synchronizationContext.AtypeRepository, synchronizationContext.BtypeRepository, synchronizationContext.EntityRelationDataFactory, ExceptionHandler.Instance ); return(new Synchronizer <string, DateTime, AppointmentItemWrapper, Uri, string, IICalendar> ( synchronizationContext, InitialEventSyncStateCreationStrategyFactory.Create( syncStateFactory, syncStateFactory.Environment, options.SynchronizationMode, options.ConflictResolution), _totalProgressFactory, atypeIdComparer, btypeIdEqualityComparer, ExceptionHandler.Instance)); }
/// <remarks> /// Public because it is being used by integration tests /// </remarks> public IOutlookSynchronizer CreateEventSynchronizer( Options options, ICalDavDataAccess calDavDataAccess, IEntityRelationDataAccess <string, DateTime, WebResourceName, string> entityRelationDataAccess) { var dateTimeRangeProvider = options.IgnoreSynchronizationTimeRange ? NullDateTimeRangeProvider.Instance : new DateTimeRangeProvider(options.DaysToSynchronizeInThePast, options.DaysToSynchronizeInTheFuture); var mappingParameters = GetMappingParameters <EventMappingConfiguration> (options); var atypeRepository = new OutlookEventRepository( _outlookSession, options.OutlookFolderEntryId, options.OutlookFolderStoreId, dateTimeRangeProvider, mappingParameters, _daslFilterProvider); IEntityRepository <IICalendar, WebResourceName, string> btypeRepository = new CalDavRepository( calDavDataAccess, new iCalendarSerializer(), CalDavRepository.EntityType.Event, dateTimeRangeProvider, options.ServerAdapterType == ServerAdapterType.WebDavHttpClientBasedWithGoogleOAuth); var entityMapper = new EventEntityMapper( _outlookEmailAddress, new Uri("mailto:" + options.EmailAddress), _outlookSession.Application.TimeZones.CurrentTimeZone.ID, _outlookSession.Application.Version, mappingParameters); var outlookEventRelationDataFactory = new OutlookEventRelationDataFactory(); var syncStateFactory = new EntitySyncStateFactory <string, DateTime, AppointmentItemWrapper, WebResourceName, string, IICalendar> ( entityMapper, atypeRepository, btypeRepository, outlookEventRelationDataFactory, ExceptionHandler.Instance ); var btypeIdEqualityComparer = WebResourceName.Comparer; var atypeIdEqualityComparer = EqualityComparer <string> .Default; var synchronizer = new Synchronizer <string, DateTime, AppointmentItemWrapper, WebResourceName, string, IICalendar> ( atypeRepository, btypeRepository, InitialEventSyncStateCreationStrategyFactory.Create( syncStateFactory, syncStateFactory.Environment, options.SynchronizationMode, options.ConflictResolution), entityRelationDataAccess, outlookEventRelationDataFactory, new InitialEventEntityMatcher(btypeIdEqualityComparer), atypeIdEqualityComparer, btypeIdEqualityComparer, _totalProgressFactory, ExceptionHandler.Instance); return(new OutlookSynchronizer <WebResourceName, string> (synchronizer)); }