private List <object[]> ExecuteInnerJoin(int rowIndex, RowHash rowHash, IEnumerable <object[]> smallDatastoreRows)
        {
            List <object[]> joinedRows = new List <object[]>();

            if (rowHash.ContainsNullColumns)
            {
                return(joinedRows);
            }

            foreach (var row in smallDatastoreRows)
            {
                object[] resultRow = new object[this.Configuration.OutputColumns.Count];
                foreach (var outputColumn in this.Configuration.OutputColumns)
                {
                    object value = null;
                    if (outputColumn.DataStream == DataStreamSource.Left)
                    {
                        value = largeDatastore[rowIndex][largeDatastore.Metadata[outputColumn.Column.ColumnName].ColumnIndex];
                    }
                    else
                    {
                        value = row[smallDatastore.Metadata[outputColumn.Column.ColumnName].ColumnIndex];
                    }

                    resultRow[outputColumn.Column.ColumnIndex] = value;
                }
                joinedRows.Add(resultRow);
            }

            return(joinedRows);
        }
        private void JoinDatastoreRecords(IDatastore resultDatastore)
        {
            IDatastoreColumnHashBuilder smallDataStoreHashBuilder = new DatastoreColumnHashBuilder(smallDatastore, smallDatastoreKeys);

            smallDataStoreHashBuilder.BuildHashes();

            int[] largeDatastoreColumnIndexes = GetColumnIndexes();
            for (int rowIndex = 0; rowIndex < largeDatastore.Count; rowIndex++)
            {
                RowHash rowHash            = smallDataStoreHashBuilder.GetRowHash(largeDatastore[rowIndex], largeDatastoreColumnIndexes);
                var     smallDatastoreRows = smallDataStoreHashBuilder.GetRowsByHash(rowHash.Value);

                List <object[]> joinedRows = null;
                switch (this.Configuration.JoinType)
                {
                case JoinRecordsJoinType.LeftJoin:
                    joinedRows = ExecuteLeftJoin(rowIndex, rowHash, smallDatastoreRows);
                    break;

                case JoinRecordsJoinType.InnerJoin:
                    joinedRows = ExecuteInnerJoin(rowIndex, rowHash, smallDatastoreRows);
                    break;
                }

                AddJoinedRowsToDatastore(resultDatastore, joinedRows);
            }
        }
        protected override PvpTier MapEntity(PvpTierSheetDto dto, RowHash rowHash, PvpTier pvpTier = null)
        {
            pvpTier ??= new PvpTier();

            pvpTier.IdHash        = rowHash.IdHash;
            pvpTier.Hash          = rowHash.ContentHash;
            pvpTier.ImportSheetId = rowHash.ImportSheetId;
            pvpTier.Name          = dto.Name;
            pvpTier.SortIndex     = dto.SortIndex;

            return(pvpTier);
        }
        protected override ElementalType MapEntity(ElementalTypeSheetDto dto, RowHash rowHash, ElementalType elementalType = null)
        {
            elementalType ??= new ElementalType();

            elementalType.IdHash        = rowHash.IdHash;
            elementalType.Hash          = rowHash.ContentHash;
            elementalType.ImportSheetId = rowHash.ImportSheetId;
            elementalType.Name          = dto.Name;
            elementalType.PokeApiName   = dto.PokeApiName;

            return(elementalType);
        }
        protected override BagCategory MapEntity(BagCategorySheetDto dto, RowHash rowHash, BagCategory bagCategory = null)
        {
            bagCategory ??= new BagCategory();

            bagCategory.IdHash        = rowHash.IdHash;
            bagCategory.Hash          = rowHash.ContentHash;
            bagCategory.ImportSheetId = rowHash.ImportSheetId;
            bagCategory.Name          = dto.Name;
            bagCategory.SortIndex     = dto.SortIndex;

            return(bagCategory);
        }
示例#6
0
        protected override Event MapEntity(EventSheetDto dto, RowHash rowHash, Event eventEntity = null)
        {
            eventEntity ??= new Event();

            eventEntity.IdHash        = rowHash.IdHash;
            eventEntity.Hash          = rowHash.ContentHash;
            eventEntity.ImportSheetId = rowHash.ImportSheetId;
            eventEntity.Name          = dto.Name;
            eventEntity.StartDate     = dto.StartDate;
            eventEntity.EndDate       = dto.EndDate;

            return(eventEntity);
        }
        protected override Currency MapEntity(CurrencySheetDto dto, RowHash rowHash, Currency currency = null)
        {
            currency ??= new Currency();

            currency.IdHash        = rowHash.IdHash;
            currency.Hash          = rowHash.ContentHash;
            currency.ImportSheetId = rowHash.ImportSheetId;
            currency.Item          = new Item {
                Name = dto.ItemName
            };

            return(currency);
        }
        protected override MoveDamageClass MapEntity(
            MoveDamageClassSheetDto dto,
            RowHash rowHash,
            MoveDamageClass moveDamageClass = null)
        {
            moveDamageClass ??= new MoveDamageClass();

            moveDamageClass.IdHash        = rowHash.IdHash;
            moveDamageClass.Hash          = rowHash.ContentHash;
            moveDamageClass.ImportSheetId = rowHash.ImportSheetId;
            moveDamageClass.Name          = dto.Name;

            return(moveDamageClass);
        }
        protected override TimeOfDay MapEntity(TimeOfDaySheetDto dto, RowHash rowHash, TimeOfDay timeOfDay = null)
        {
            timeOfDay ??= new TimeOfDay();

            timeOfDay.IdHash        = rowHash.IdHash;
            timeOfDay.Hash          = rowHash.ContentHash;
            timeOfDay.ImportSheetId = rowHash.ImportSheetId;
            timeOfDay.SortIndex     = dto.SortIndex;
            timeOfDay.Name          = dto.Name;
            timeOfDay.Abbreviation  = dto.Abbreviation;
            timeOfDay.Color         = dto.Color;

            return(timeOfDay);
        }
示例#10
0
        protected override Season MapEntity(SeasonSheetDto dto, RowHash rowHash, Season season = null)
        {
            season ??= new Season();

            season.IdHash        = rowHash.IdHash;
            season.Hash          = rowHash.ContentHash;
            season.ImportSheetId = rowHash.ImportSheetId;
            season.SortIndex     = dto.SortIndex;
            season.Name          = dto.Name;
            season.Abbreviation  = dto.Abbreviation;
            season.Color         = dto.Color;

            return(season);
        }
示例#11
0
        protected override PokemonAvailability MapEntity(
            AvailabilitySheetDto dto,
            RowHash rowHash,
            PokemonAvailability availability = null)
        {
            availability ??= new PokemonAvailability();

            availability.IdHash        = rowHash.IdHash;
            availability.Hash          = rowHash.ContentHash;
            availability.ImportSheetId = rowHash.ImportSheetId;
            availability.Name          = dto.Name;
            availability.Description   = dto.Description;

            return(availability);
        }
        protected override SpawnType MapEntity(SpawnTypeSheetDto dto, RowHash rowHash, SpawnType spawnType = null)
        {
            spawnType ??= new SpawnType();

            spawnType.IdHash        = rowHash.IdHash;
            spawnType.Hash          = rowHash.ContentHash;
            spawnType.ImportSheetId = rowHash.ImportSheetId;
            spawnType.Name          = dto.Name;
            spawnType.SortIndex     = dto.SortIndex;
            spawnType.IsSyncable    = dto.IsSyncable;
            spawnType.IsInfinite    = dto.IsInfinite;
            spawnType.Color         = dto.Color;

            return(spawnType);
        }
示例#13
0
        protected override Nature MapEntity(NatureSheetDto dto, RowHash rowHash, Nature nature = null)
        {
            nature ??= new Nature();

            nature.IdHash         = rowHash.IdHash;
            nature.Hash           = rowHash.ContentHash;
            nature.ImportSheetId  = rowHash.ImportSheetId;
            nature.Name           = dto.Name;
            nature.Attack         = dto.Attack;
            nature.SpecialAttack  = dto.SpecialAttack;
            nature.Defense        = dto.Defense;
            nature.SpecialDefense = dto.SpecialDefense;
            nature.Speed          = dto.Speed;

            return(nature);
        }
        private List <object[]> ExecuteLeftJoin(int rowIndex, RowHash rowHash, IEnumerable <object[]> smallDatastoreRows)
        {
            var innerJoinResult = ExecuteInnerJoin(rowIndex, rowHash, smallDatastoreRows);

            if (innerJoinResult.Count == 0)
            {
                object [] leftJoinRow = new object[this.Configuration.OutputColumns.Count];
                foreach (var outputColumn in this.Configuration.OutputColumns.Where(t => t.DataStream == DataStreamSource.Left))
                {
                    object value = largeDatastore[rowIndex][largeDatastore.Metadata[outputColumn.Column.ColumnName].ColumnIndex];
                    leftJoinRow[outputColumn.Column.ColumnIndex] = value;
                }
                innerJoinResult.Add(leftJoinRow);
            }

            return(innerJoinResult);
        }
示例#15
0
        protected override Ability MapEntity(AbilitySheetDto dto, RowHash rowHash, Ability ability = null)
        {
            ability ??= new Ability();

            ability.IdHash                 = rowHash.IdHash;
            ability.Hash                   = rowHash.ContentHash;
            ability.ImportSheetId          = rowHash.ImportSheetId;
            ability.PokeApiName            = dto.PokeApiName;
            ability.Name                   = dto.Name;
            ability.EffectDescription      = dto.Effect;
            ability.EffectShortDescription = dto.ShortEffect;

            ability.AttackBoost         = dto.AtkBoost;
            ability.SpecialAttackBoost  = dto.SpaBoost;
            ability.DefenseBoost        = dto.DefBoost;
            ability.SpecialDefenseBoost = dto.SpdBoost;
            ability.SpeedBoost          = dto.SpeBoost;
            ability.HitPointsBoost      = dto.HpBoost;
            ability.BoostConditions     = dto.BoostConditions;

            return(ability);
        }