예제 #1
0
        public EventSynchronizationContextFactory(
            OutlookEventRepository outlookRepository,
            IEntityRepository <WebResourceName, string, IICalendar, IEventSynchronizationContext> btypeRepository,
            IEntityRelationDataAccess <AppointmentId, DateTime, WebResourceName, string> entityRelationDataAccess,
            bool cleanupDuplicateEvents,
            IEqualityComparer <AppointmentId> idComparer)
        {
            if (outlookRepository == null)
            {
                throw new ArgumentNullException(nameof(outlookRepository));
            }
            if (btypeRepository == null)
            {
                throw new ArgumentNullException(nameof(btypeRepository));
            }
            if (entityRelationDataAccess == null)
            {
                throw new ArgumentNullException(nameof(entityRelationDataAccess));
            }
            if (idComparer == null)
            {
                throw new ArgumentNullException(nameof(idComparer));
            }

            _outlookRepository        = outlookRepository;
            _btypeRepository          = btypeRepository;
            _entityRelationDataAccess = entityRelationDataAccess;
            _cleanupDuplicateEvents   = cleanupDuplicateEvents;
            _idComparer = idComparer;
        }
        public DuplicateEventCleaner(
            OutlookEventRepository outlookRepository,
            IEntityRepository <WebResourceName, string, IICalendar, IEventSynchronizationContext> btypeRepository,
            IEntityRelationDataAccess <AppointmentId, DateTime, WebResourceName, string> entityRelationDataAccess,
            IEqualityComparer <AppointmentId> idComparer)
        {
            if (outlookRepository == null)
            {
                throw new ArgumentNullException(nameof(outlookRepository));
            }
            if (btypeRepository == null)
            {
                throw new ArgumentNullException(nameof(btypeRepository));
            }
            if (entityRelationDataAccess == null)
            {
                throw new ArgumentNullException(nameof(entityRelationDataAccess));
            }
            if (idComparer == null)
            {
                throw new ArgumentNullException(nameof(idComparer));
            }

            _outlookRepository        = outlookRepository;
            _btypeRepository          = btypeRepository;
            _entityRelationDataAccess = entityRelationDataAccess;
            _hashesById = new Dictionary <AppointmentId, int>(idComparer);
        }
        public EventSynchronizationContext(NameSpace outlookSession, IEntityRelationDataAccess <string, DateTime, Uri, string> storageDataAccess, Options options, string outlookEmailAddress, TimeSpan connectTimeout, TimeSpan readWriteTimeout, bool disableCertValidation, bool useSsl3, bool useTls12, IEqualityComparer <Uri> btypeIdEqualityComparer)
        {
            if (outlookSession == null)
            {
                throw new ArgumentNullException("outlookSession");
            }

            SynchronizationMode = options.SynchronizationMode;
            From = DateTime.Now.AddDays(-options.DaysToSynchronizeInThePast);
            To   = DateTime.Now.AddDays(options.DaysToSynchronizeInTheFuture);

            _entityRelationDataFactory = new OutlookEventRelationDataFactory();

            _entityMapper = new EventEntityMapper(outlookEmailAddress, new Uri("mailto:" + options.EmailAddress), outlookSession.Application.TimeZones.CurrentTimeZone.ID, outlookSession.Application.Version);

            _atypeRepository = new OutlookEventRepository(outlookSession, options.OutlookFolderEntryId, options.OutlookFolderStoreId);

            _btypeRepository = new CalDavRepository(
                new CalDavDataAccess(
                    new Uri(options.CalenderUrl),
                    new CalDavWebClient(
                        options.UserName,
                        options.Password,
                        connectTimeout,
                        readWriteTimeout,
                        disableCertValidation,
                        useSsl3,
                        useTls12)
                    ),
                new iCalendarSerializer(),
                CalDavRepository.EntityType.Event);

            if (StringComparer.InvariantCultureIgnoreCase.Compare(new Uri(options.CalenderUrl).Host, "www.google.com") == 0)
            {
                _btypeRepository = new EntityRepositoryDeleteCreateInstaedOfUpdateWrapper <IICalendar, Uri, string> (_btypeRepository);
            }

            _storageDataAccess = storageDataAccess;

            InitialEntityMatcher = new InitialEventEntityMatcher(btypeIdEqualityComparer);
        }
        public DuplicateEventCleaner(
            OutlookEventRepository outlookRepository,
            IEntityRepository <IICalendar, WebResourceName, string, IEventSynchronizationContext> btypeRepository,
            IEntityRelationDataAccess <string, DateTime, WebResourceName, string> entityRelationDataAccess)
        {
            if (outlookRepository == null)
            {
                throw new ArgumentNullException(nameof(outlookRepository));
            }
            if (btypeRepository == null)
            {
                throw new ArgumentNullException(nameof(btypeRepository));
            }
            if (entityRelationDataAccess == null)
            {
                throw new ArgumentNullException(nameof(entityRelationDataAccess));
            }

            _outlookRepository        = outlookRepository;
            _btypeRepository          = btypeRepository;
            _entityRelationDataAccess = entityRelationDataAccess;
        }