コード例 #1
0
        private IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity, TContext> CreateInitialSyncState(
            IEntityRelationData <TAtypeEntityId, TAtypeEntityVersion, TBtypeEntityId, TBtypeEntityVersion> knownEntityRelation,
            EntityState aState,
            EntityState bState,
            TAtypeEntityVersion aRepositoryVersion,
            TBtypeEntityVersion bRepositoryVersion,
            VersionDeltaLoginInformation aLogInfo,
            VersionDeltaLoginInformation bLogInfo)
        {
            IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity, TContext> state;

            switch (aState)
            {
            case EntityState.ChangedOrAdded:
                aLogInfo.IncChanged();
                switch (bState)
                {
                case EntityState.ChangedOrAdded:
                    bLogInfo.IncChanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Changed_Changed(knownEntityRelation, aRepositoryVersion, bRepositoryVersion);
                    break;

                case EntityState.Unchanged:
                    bLogInfo.IncUnchanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Changed_Unchanged(knownEntityRelation, aRepositoryVersion);
                    break;

                case EntityState.Deleted:
                    bLogInfo.IncDeleted();
                    state = _initialSyncStateCreationStrategy.CreateFor_Changed_Deleted(knownEntityRelation, aRepositoryVersion);
                    break;

                default:
                    throw new NotImplementedException($"'{bState}' not implemented");
                }
                break;

            case EntityState.Unchanged:
                aLogInfo.IncUnchanged();
                switch (bState)
                {
                case EntityState.ChangedOrAdded:
                    bLogInfo.IncChanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Changed(knownEntityRelation, bRepositoryVersion);
                    break;

                case EntityState.Unchanged:
                    bLogInfo.IncUnchanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Unchanged(knownEntityRelation);
                    break;

                case EntityState.Deleted:
                    bLogInfo.IncDeleted();
                    state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Deleted(knownEntityRelation);
                    break;

                default:
                    throw new NotImplementedException($"'{bState}' not implemented");
                }
                break;

            case EntityState.Deleted:
                aLogInfo.IncDeleted();
                switch (bState)
                {
                case EntityState.ChangedOrAdded:
                    bLogInfo.IncChanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Changed(knownEntityRelation, bRepositoryVersion);
                    break;

                case EntityState.Unchanged:
                    bLogInfo.IncUnchanged();
                    state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Unchanged(knownEntityRelation);
                    break;

                case EntityState.Deleted:
                    bLogInfo.IncDeleted();
                    state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Deleted(knownEntityRelation);
                    break;

                default:
                    throw new NotImplementedException($"'{bState}' not implemented");
                }
                break;

            default:
                throw new NotImplementedException($"'{aState}' not implemented");
            }

            return(state);
        }
コード例 #2
0
        private IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity> CreateInitialSyncState(
            IEntityRelationData <TAtypeEntityId, TAtypeEntityVersion, TBtypeEntityId, TBtypeEntityVersion> knownEntityRelation,
            bool newAVersionAvailable,
            TAtypeEntityVersion newAVersion,
            bool newBVersionAvailable,
            TBtypeEntityVersion newBVersion,
            VersionDeltaLoginInformation aLogInfo,
            VersionDeltaLoginInformation bLogInfo)
        {
            IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity> state;

            if (newAVersionAvailable)
            {
                var aChanged = !_atypeVersionComparer.Equals(newAVersion, knownEntityRelation.AtypeVersion);
                if (aChanged)
                {
                    aLogInfo.IncChanged();
                    if (newBVersionAvailable)
                    {
                        var bChanged = !_btypeVersionComparer.Equals(newBVersion, knownEntityRelation.BtypeVersion);
                        if (bChanged)
                        {
                            bLogInfo.IncChanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Changed_Changed(knownEntityRelation, newAVersion, newBVersion);
                        }
                        else
                        {
                            bLogInfo.IncUnchanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Changed_Unchanged(knownEntityRelation, newAVersion);
                        }
                    }
                    else
                    {
                        bLogInfo.IncDeleted();
                        state = _initialSyncStateCreationStrategy.CreateFor_Changed_Deleted(knownEntityRelation, newAVersion);
                    }
                }
                else
                {
                    aLogInfo.IncUnchanged();
                    if (newBVersionAvailable)
                    {
                        var bChanged = !_btypeVersionComparer.Equals(newBVersion, knownEntityRelation.BtypeVersion);
                        if (bChanged)
                        {
                            bLogInfo.IncChanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Changed(knownEntityRelation, newBVersion);
                        }
                        else
                        {
                            bLogInfo.IncUnchanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Unchanged(knownEntityRelation);
                        }
                    }
                    else
                    {
                        bLogInfo.IncDeleted();
                        state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Deleted(knownEntityRelation);
                    }
                }
            }
            else
            {
                aLogInfo.IncDeleted();
                if (newBVersionAvailable)
                {
                    var bChanged = !_btypeVersionComparer.Equals(newBVersion, knownEntityRelation.BtypeVersion);
                    if (bChanged)
                    {
                        bLogInfo.IncChanged();
                        state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Changed(knownEntityRelation, newBVersion);
                    }
                    else
                    {
                        bLogInfo.IncUnchanged();
                        state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Unchanged(knownEntityRelation);
                    }
                }
                else
                {
                    bLogInfo.IncDeleted();
                    state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Deleted(knownEntityRelation);
                }
            }
            return(state);
        }
コード例 #3
0
        private IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity> CreateInitialSyncState(
            IEntityRelationData <TAtypeEntityId, TAtypeEntityVersion, TBtypeEntityId, TBtypeEntityVersion> cachedData,
            bool repositoryAVersionAvailable,
            TAtypeEntityVersion repositoryAVersion,
            bool repositoryBVersionAvailable,
            TBtypeEntityVersion repositoryBVersion,
            VersionDeltaLoginInformation aLogInfo,
            VersionDeltaLoginInformation bLogInfo)
        {
            IEntitySyncState <TAtypeEntityId, TAtypeEntityVersion, TAtypeEntity, TBtypeEntityId, TBtypeEntityVersion, TBtypeEntity> state;

            if (repositoryAVersionAvailable)
            {
                var aChanged = !_atypeVersionComparer.Equals(repositoryAVersion, cachedData.AtypeVersion);
                if (aChanged)
                {
                    aLogInfo.IncChanged();
                    if (repositoryBVersionAvailable)
                    {
                        var bChanged = !_btypeVersionComparer.Equals(repositoryBVersion, cachedData.BtypeVersion);
                        if (bChanged)
                        {
                            bLogInfo.IncChanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Changed_Changed(cachedData, repositoryAVersion, repositoryBVersion);
                        }
                        else
                        {
                            bLogInfo.IncUnchanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Changed_Unchanged(cachedData, repositoryAVersion);
                        }
                    }
                    else
                    {
                        bLogInfo.IncDeleted();
                        state = _initialSyncStateCreationStrategy.CreateFor_Changed_Deleted(cachedData, repositoryAVersion);
                    }
                }
                else
                {
                    aLogInfo.IncUnchanged();
                    if (repositoryBVersionAvailable)
                    {
                        var bChanged = !_btypeVersionComparer.Equals(repositoryBVersion, cachedData.BtypeVersion);
                        if (bChanged)
                        {
                            bLogInfo.IncChanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Changed(cachedData, repositoryBVersion);
                        }
                        else
                        {
                            bLogInfo.IncUnchanged();
                            state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Unchanged(cachedData);
                        }
                    }
                    else
                    {
                        bLogInfo.IncDeleted();
                        state = _initialSyncStateCreationStrategy.CreateFor_Unchanged_Deleted(cachedData);
                    }
                }
            }
            else
            {
                aLogInfo.IncDeleted();
                if (repositoryBVersionAvailable)
                {
                    var bChanged = !_btypeVersionComparer.Equals(repositoryBVersion, cachedData.BtypeVersion);
                    if (bChanged)
                    {
                        bLogInfo.IncChanged();
                        state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Changed(cachedData, repositoryBVersion);
                    }
                    else
                    {
                        bLogInfo.IncUnchanged();
                        state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Unchanged(cachedData);
                    }
                }
                else
                {
                    bLogInfo.IncDeleted();
                    state = _initialSyncStateCreationStrategy.CreateFor_Deleted_Deleted(cachedData);
                }
            }
            return(state);
        }