예제 #1
0
        private IDetailParameterEnhancer hack_GetDetail(IGeneratorBuilder builder, IDetailParameterEnhancer detail)
        {
            if (builder.GetType().Name == "CombinerBuilder" && ((CombinerBuilder)builder).BuilderCount != 1)
            {
                // in the current version it uniquely identifies the mountain builder
                return(detail);
            }

            switch (detail.GetType().Name)
            {
            case "LowDetail":
                return(new DetailEnhancer(1, 4, .40f, 2));

            case "MediumDetail":
                return(new DetailEnhancer(1, 5, .45f, 2));

            case "HighDetail":
                return(new DetailEnhancer(1, 6, .50f, 2));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #2
0
 public FlatProfile(IGeneratorBuilder builder)
 {
     _builder = builder;
 }
예제 #3
0
 public CanyonProfile(IGeneratorBuilder builder)
 {
     _builder = builder;
 }
예제 #4
0
        public Column GenerateDataForColumn(Column column, object[] data, HashSet <string> existingColumnData)
        {
            if (column.GeneratorType != null && column.GeneratorType != SystemConstants.DefaultGuid)
            {
                List <IGeneratorInfo>    infos    = ObjectLocator.GetAllInstances <IGeneratorInfo>();
                List <IGeneratorBuilder> builders = ObjectLocator.GetAllInstances <IGeneratorBuilder>();
                Type generatorType        = infos.Where(x => x.Id == column.GeneratorType.Value).First().Type;
                IGeneratorBuilder builder = builders.Where(x => x.GeneratorId == column.GeneratorType.Value).First();

                var           generator     = ObjectLocator.GetInstance(generatorType);
                List <string> generatedData = null;

                if (generator != null)
                {
                    generatedData = builder.BuildGenerator(generator, data, existingColumnData);
                }

                #region Old Swtich Based Code

                //switch (column.GeneratorType)
                //{
                //  case GeneratorTypes.AccountNumber:
                //    generatedData = ObjectLocator.GetInstance<IAccountNumberGenerator>().GenerateAccountNumbers((double)data[0]);
                //    break;
                //  case GeneratorTypes.Address:
                //    generatedData = ObjectLocator.GetInstance<IAddressGenerator>().GenerateAddressLine1s((double)data[0]);
                //    break;
                //  case GeneratorTypes.Character:

                //    bool charBool = false;

                //    try
                //    {
                //      charBool = (bool)data[1];
                //    }
                //    catch { }

                //    var characters = ObjectLocator.GetInstance<ICharacterGenerator>().GenerateRandomCharacters((double)data[0], charBool);
                //    generatedData = new List<string>();
                //    foreach (var c in characters)
                //    {
                //      generatedData.Add(c.ToString());
                //    }
                //    break;
                //  case GeneratorTypes.City:
                //    generatedData = ObjectLocator.GetInstance<ICityGenerator>().GenerateCityNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.CompanyName:
                //    generatedData = ObjectLocator.GetInstance<ICompanyNameGenerator>().GenerateCompanyNames((double)data[0], existingColumnData);
                //    break;
                //  case GeneratorTypes.Country:
                //    generatedData = ObjectLocator.GetInstance<ICountryGenerator>().GenerateCountryNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.Date:
                //    var dates = ObjectLocator.GetInstance<IDateGenerator>().GenerateDate((double)data[0], (DateTime)data[1], (DateTime)data[2]);
                //    generatedData = new List<string>();
                //    foreach (var d in dates)
                //    {
                //      generatedData.Add(d.ToString());
                //    }
                //    break;
                //  case GeneratorTypes.EmailAddress:
                //    generatedData = ObjectLocator.GetInstance<IEmailAddressGenerator>().GenerateEmailAddresses((double)data[0], existingColumnData);
                //    break;
                //  case GeneratorTypes.FirstName:
                //    generatedData = ObjectLocator.GetInstance<IFirstNameGenerator>().GenerateFirstNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.LastName:
                //    generatedData = ObjectLocator.GetInstance<ILastNameGenerator>().GenerateLastNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.Login:
                //    generatedData = ObjectLocator.GetInstance<ILoginNameGenerator>().GenerateLoginNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.Number:
                //    var numbers = ObjectLocator.GetInstance<INumberGenerator>().GenerateRandomNumbers(double.Parse(data[0].ToString()), int.Parse(data[1].ToString()), int.Parse(data[2].ToString()));
                //    generatedData = new List<string>();
                //    foreach (var n in numbers)
                //    {
                //      generatedData.Add(n.ToString());
                //    }
                //    break;
                //  case GeneratorTypes.PhoneNumber:

                //    bool phoneBool = false;

                //    try
                //    {
                //      phoneBool = (bool)data[1];
                //    }
                //    catch { }

                //    generatedData = ObjectLocator.GetInstance<IPhoneNumberGenerator>().GeneratePhoneNumbers((double)data[0], phoneBool);
                //    break;
                //  case GeneratorTypes.SSN:
                //    generatedData = ObjectLocator.GetInstance<ISsnGenerator>().GenerateSocialSecurityNumbers((double)data[0]);
                //    break;
                //  case GeneratorTypes.State:
                //    generatedData = ObjectLocator.GetInstance<IStateGenerator>().GenerateStateNames((double)data[0]);
                //    break;
                //  case GeneratorTypes.String:

                //    bool stringBool1 = false;

                //    try
                //    {
                //      stringBool1 = (bool)data[3];
                //    }
                //    catch { }

                //    bool stringBool2 = false;

                //    try
                //    {
                //      stringBool2 = (bool)data[4];
                //    }
                //    catch { }

                //    generatedData = ObjectLocator.GetInstance<IStringGenerator>().GenerateRandomStrings(double.Parse(data[0].ToString()), int.Parse(data[1].ToString()), int.Parse(data[2].ToString()), stringBool1, stringBool2, existingColumnData);
                //    break;
                //  case GeneratorTypes.Url:

                //    bool data2 = false;

                //    try
                //    {
                //      data2 = (bool)data[1];
                //    }
                //    catch { }

                //    generatedData = ObjectLocator.GetInstance<IUrlGenerator>().GenerateUrls((double)data[0], data2, existingColumnData);
                //    break;
                //  case GeneratorTypes.ZipCode:

                //    bool data1 = false;

                //    try
                //    {
                //      data1 = (bool)data[1];
                //    }
                //    catch { }

                //    generatedData = ObjectLocator.GetInstance<IZipCodeGenerator>().GenerateZipCodes((double)data[0], data1);
                //    break;
                //  case GeneratorTypes.Clear:
                //    generatedData = new List<string>();
                //    break;
                //  case GeneratorTypes.FullName:


                //    bool fullNameBool1 = false;

                //    try
                //    {
                //      fullNameBool1 = (bool)data[1];
                //    }
                //    catch { }

                //    bool fullNameBool2 = false;

                //    try
                //    {
                //      fullNameBool2 = (bool)data[2];
                //    }
                //    catch { }

                //    generatedData = ObjectLocator.GetInstance<IFullNameGenerator>().GenerateFullNames((double)data[0], fullNameBool1, fullNameBool2);
                //    break;
                //  case GeneratorTypes.Symbol:
                //    generatedData = ObjectLocator.GetInstance<ISymbolGenerator>().GenerateSymbols((double)data[0], existingColumnData);
                //    break;
                //  case GeneratorTypes.SecurityName:
                //    generatedData = ObjectLocator.GetInstance<ISecurityNameGenerator>().GenerateSecurityNames((double)data[0], existingColumnData);
                //    break;
                //  case GeneratorTypes.Hex:
                //    generatedData = ObjectLocator.GetInstance<IHexGenerator>().GenerateHexNumbers((double)data[0]);
                //    break;
                //  case GeneratorTypes.Guid:
                //    generatedData = ObjectLocator.GetInstance<IGuidGenerator>().GenerateGuids((double)data[0]);
                //    break;
                //  case GeneratorTypes.Token:
                //    generatedData = ObjectLocator.GetInstance<ITokenReplacementGenerator>().GenerateReplacedStrings((double)data[0], (string)data[1], existingColumnData);
                //    break;

                //  default:
                //    throw new InvalidOperationException(string.Format("Cannot generate data for type {0}", column.GeneratorType));
                //}
                #endregion Old Swtich Based Code

                column.Data = generatedData;
            }

            return(column);
        }
예제 #5
0
        public string GeneratePart(System.Random random, string type = null)
        {
            var availableTypes = Source.Keys.ToList();

            if (type == null || !availableTypes.Contains(type))
            {
                type = availableTypes[random.Next(availableTypes.Count)];
            }

            var selectedMode = Mode;

            if (selectedMode == Mode.MarkovOrItem)
            {
                selectedMode = (Mode)random.Next(2);
            }

            IGenerator generator;

            if (!m_generators.TryGetValue(selectedMode + type, out generator))
            {
                IGeneratorBuilder generatorBuilder = null;
                switch (selectedMode)
                {
                case Mode.Item:
                {
                    generatorBuilder = new ItemGeneratorBuilder(random);
                    break;
                }

                case Mode.Markov:
                {
                    generatorBuilder = new MarkovGeneratorBuilder(MarkovOrder ?? 2, random);
                    break;
                }
                }

                generatorBuilder.Teach(Source[type]);
                generator = generatorBuilder.ToGenerator();
                m_generators[selectedMode + type] = generator;
            }

            switch (selectedMode)
            {
            case Mode.Item:
            {
                return(generator.Generate());
            }

            case Mode.Markov:
            {
                string result = null;

                // Try 10 times for a reasonable length.
                for (var x = 0; x < 10; x++)
                {
                    result = generator.Generate();
                    if (result.Length < (MaxLength ?? 10) && result.Length > 2)
                    {
                        break;
                    }
                }

                return(result);
            }
            }
            return(null);
        }
예제 #6
0
 public GeneratorDirector(IGeneratorBuilder builder)
 {
     Builder = builder;
 }
예제 #7
0
 public RockyMountainProfile(IGeneratorBuilder builder)
 {
     _builder = builder;
 }
예제 #8
0
 public HillProfile(IGeneratorBuilder builder)
 {
     _builder = builder;
 }
예제 #9
0
 public CombinerBuilder Add(IGeneratorBuilder generatorBuilder)
 {
     builders.Add(generatorBuilder);
     return(this);
 }