private OutlookSynchronizer CreateContactSynchronizer(Options options)
        {
            var atypeRepository = new OutlookContactRepository(
                _outlookSession,
                options.OutlookFolderEntryId,
                options.OutlookFolderStoreId);


            IEntityRepository <vCard, Uri, string> btypeRepository = new CardDavRepository(
                new CardDavDataAccess(
                    new Uri(options.CalenderUrl),
                    CreateWebDavClient(
                        options.UserName,
                        options.Password,
                        _calDavConnectTimeout,
                        options.ServerAdapterType,
                        options.CloseAfterEachRequest,
                        options.ProxyOptions)));

            var mappingParameters = GetMappingParameters <ContactMappingConfiguration> (options);

            var entityMapper = new ContactEntityMapper(mappingParameters);

            var entityRelationDataFactory = new OutlookContactRelationDataFactory();

            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, ContactItemWrapper, Uri, string, vCard> (
                entityMapper,
                atypeRepository,
                btypeRepository,
                entityRelationDataFactory,
                ExceptionHandler.Instance);

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

            var storageDataDirectory = _profileDataDirectoryFactory(options.Id);

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

            var synchronizer = new Synchronizer <string, DateTime, ContactItemWrapper, Uri, string, vCard> (
                atypeRepository,
                btypeRepository,
                InitialContactSyncStateCreationStrategyFactory.Create(
                    syncStateFactory,
                    syncStateFactory.Environment,
                    options.SynchronizationMode,
                    options.ConflictResolution),
                storageDataAccess,
                entityRelationDataFactory,
                new InitialContactEntityMatcher(btypeIdEqualityComparer),
                atypeIdEqulityComparer,
                btypeIdEqualityComparer,
                _totalProgressFactory,
                ExceptionHandler.Instance);

            return(new OutlookSynchronizer(synchronizer, atypeRepository));
        }
        private ISynchronizer CreateContactSynchronizer(Options options)
        {
            var atypeRepository = new OutlookContactRepository(
                _outlookSession,
                options.OutlookFolderEntryId,
                options.OutlookFolderStoreId);


            IEntityRepository <vCard, Uri, string> btypeRepository = new CardDavRepository(
                CreateCardDavDataAccess(
                    options.CalenderUrl,
                    options.UserName,
                    options.Password,
                    _calDavConnectTimeout,
                    options.ServerAdapterType));

            var entityRelationDataFactory = new OutlookContactRelationDataFactory();

            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, GenericComObjectWrapper <ContactItem>, Uri, string, vCard> (
                new ContactEntityMapper(),
                atypeRepository,
                btypeRepository,
                entityRelationDataFactory,
                ExceptionHandler.Instance);

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

            var storageDataDirectory = Path.Combine(
                _applicationDataDirectory,
                options.Id.ToString()
                );

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

            return(new Synchronizer <string, DateTime, GenericComObjectWrapper <ContactItem>, Uri, string, vCard> (
                       atypeRepository,
                       btypeRepository,
                       InitialContactSyncStateCreationStrategyFactory.Create(
                           syncStateFactory,
                           syncStateFactory.Environment,
                           options.SynchronizationMode,
                           options.ConflictResolution),
                       storageDataAccess,
                       entityRelationDataFactory,
                       new InitialContactEntityMatcher(btypeIdEqualityComparer),
                       atypeIdEqulityComparer,
                       btypeIdEqualityComparer,
                       _totalProgressFactory,
                       ExceptionHandler.Instance));
        }
示例#3
0
        private IOutlookSynchronizer CreateContactSynchronizer(Options options, AvailableSynchronizerComponents componentsToFill)
        {
            var atypeRepository = new OutlookContactRepository(
                _outlookSession,
                options.OutlookFolderEntryId,
                options.OutlookFolderStoreId,
                _daslFilterProvider);


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

            componentsToFill.CardDavDataAccess = cardDavDataAccess;

            IEntityRepository <vCard, WebResourceName, string> btypeRepository = new CardDavRepository(
                cardDavDataAccess);

            var mappingParameters = GetMappingParameters <ContactMappingConfiguration> (options);

            var entityMapper = new ContactEntityMapper(mappingParameters);

            var entityRelationDataFactory = new OutlookContactRelationDataFactory();

            var syncStateFactory = new EntitySyncStateFactory <string, DateTime, ContactItemWrapper, WebResourceName, string, vCard> (
                entityMapper,
                atypeRepository,
                btypeRepository,
                entityRelationDataFactory,
                ExceptionHandler.Instance);

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

            var storageDataDirectory = _profileDataDirectoryFactory(options.Id);

            var storageDataAccess = new EntityRelationDataAccess <string, DateTime, OutlookContactRelationData, WebResourceName, string> (storageDataDirectory);

            var synchronizer = new Synchronizer <string, DateTime, ContactItemWrapper, WebResourceName, string, vCard> (
                atypeRepository,
                btypeRepository,
                InitialContactSyncStateCreationStrategyFactory.Create(
                    syncStateFactory,
                    syncStateFactory.Environment,
                    options.SynchronizationMode,
                    options.ConflictResolution),
                storageDataAccess,
                entityRelationDataFactory,
                new InitialContactEntityMatcher(btypeIdEqualityComparer),
                atypeIdEqulityComparer,
                btypeIdEqualityComparer,
                _totalProgressFactory,
                ExceptionHandler.Instance);

            return(new OutlookSynchronizer <WebResourceName, string> (synchronizer));
        }