From 04dcdf8dcdb3c8230ae3c7061a484bf137b71a65 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Wed, 26 Oct 2011 22:29:25 +0100 Subject: [PATCH 01/14] Dummy data - longer lists of male and female names (from 1990s US census data), alphabetised (to spot duplicates) and in separate files (to compare length). Over 100 of each, should be enough. --- .../Data/FemaleNames.cs | 133 ++++++++++++++++++ .../Data/MaleNames.cs | 126 +++++++++++++++++ .../Data/NameData.cs | 93 ------------ .../Generation/CampaignGenerator.cs | 2 +- .../Generation/MemberGenerator.cs | 4 +- .../GiveCRM.DummyDataGenerator.csproj | 2 + 6 files changed, 264 insertions(+), 96 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs create mode 100644 src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs new file mode 100644 index 00000000..e76e64d9 --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -0,0 +1,133 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + internal static class FemaleNames + { + internal static List Data = new List + { + "Alice", + "Amanda", + "Amelia", + "Amy", + "Andrea", + "Angela", + "Ann", + "Anna", + "Anne", + "Annie", + "Ashley", + "Ava", + "Barbara", + "Betty", + "Beverly", + "Bonnie", + "Brenda", + "Cara", + "Carol", + "Carolyn", + "Catherine", + "Charlotte", + "Cheryl", + "Chloe", + "Christina", + "Christine", + "Cynthia", + "Daniella", + "Deborah", + "Debra", + "Denise", + "Diana", + "Diane", + "Donna", + "Doris", + "Dorothy", + "Elizabeth", + "Ella", + "Ellie", + "Emily", + "Eve", + "Evelyn", + "Evie", + "Frances", + "Gloria", + "Grace", + "Hannah", + "Heather", + "Helen", + "Irene", + "Jacqueline", + "Jade", + "Jane", + "Janet", + "Janice", + "Jean", + "Jennifer", + "Jessica", + "Joan", + "Joyce", + "Judith", + "Judy", + "Julia", + "Julie", + "Karen", + "Kate", + "Katherine", + "Kathleen", + "Kathryn", + "Kathy", + "Katie", + "Kelly", + "Kimberly", + "Laura", + "Lillian", + "Lily", + "Linda", + "Lisa", + "Liz", + "Lois", + "Louise", + "Lucy", + "Margaret", + "Maria", + "Marie", + "Marilyn", + "Martha", + "Mary", + "Megan", + "Melissa", + "Mia", + "Michelle", + "Mildred", + "Nancy", + "Nicole", + "Norma", + "Olivia", + "Pamela", + "Patricia", + "Paula", + "Peggy", + "Phyllis", + "Rachel", + "Rebecca", + "Robin", + "Rose", + "Ruby", + "Ruth", + "Sally", + "Sandra", + "Sara", + "Sarah", + "Sharon", + "Shirley", + "Sophie", + "Stephanie", + "Susan", + "Tammy", + "Teresa", + "Tina", + "Virginia", + "Wanda" + }; + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs new file mode 100644 index 00000000..d6052701 --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -0,0 +1,126 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + internal static class MaleNames + { + internal static List Data = new List + { + "Aaron", + "Abraham", + "Adam", + "Alan", + "Albert", + "Anders", + "Andrew", + "Anthony", + "Arthur", + "Ben", + "Benjamin", + "Bert", + "Bill", + "Bob", + "Brandon", + "Brian", + "Bruce", + "Bryan", + "Carl", + "Carlos", + "Charles", + "Chris", + "Christopher", + "Craig", + "Dan", + "Daniel", + "Dave", + "David", + "Dennis", + "Donald", + "Doug", + "Douglas", + "Dylan", + "Edward", + "Ernest", + "Ethan", + "Eugene", + "Ewan", + "Frank", + "Fred", + "Gary", + "George", + "Gerald", + "Giles", + "Gregory", + "Harold", + "Harry", + "Henry", + "Howard", + "Jack", + "Jacob", + "James", + "Jason", + "Jeffrey", + "Jeremy", + "Jerry", + "Joe", + "John", + "Johnathan", + "Joseph", + "Joshua", + "Justin", + "Keith", + "Ken", + "Kendall", + "Kennith", + "Kevin", + "Larry", + "Lawrence", + "Lewis", + "Liam", + "Louis", + "Luke", + "Mark", + "Martin", + "Matthew", + "Max", + "Michael", + "Nathan", + "Nicholas", + "Oliver", + "Patrick", + "Paul", + "Peter", + "Phil", + "Philip", + "Ralph", + "Ray", + "Raymond", + "Richard", + "Rob", + "Robert", + "Robin", + "Ronald", + "Roy", + "Russell", + "Ryan", + "Samuel", + "Scott", + "Sean", + "Simon", + "Stephen", + "Steve", + "Steven", + "Terry", + "Terrence", + "Thomas", + "Timothy", + "Todd", + "Tom", + "Tony", + "Victor", + "Walter", + "William", + "Zachary", + }; + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Data/NameData.cs b/src/GiveCRM.DummyDataGenerator/Data/NameData.cs index ecca38d9..76804ee5 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/NameData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/NameData.cs @@ -4,99 +4,6 @@ internal static class NameData { - internal static List MaleFirstNames = new List - { - "John", - "Peter", - "Paul", - "Mathew", - "Mark", - "Liam", - "Giles", - "David", - "Simon", - "Ben", - "Jack", - "Oliver", - "Harry", - "Charles", - "Thomas", - "Joshua", - "Daniel", - "James", - "William", - "Lewis", - "George", - "Ryan", - "Ethan", - "Dylan", - "Samuel", - "Joseph", - "Jacob", - "Max", - "Robin", - "Anthony", - "Andrew", - "Kendall", - "Ken", - "Philip", - "Phil", - "Bill", - "William", - "Anders", - "Steven", - "Stephen", - "Thomas", - "Tom", - "Nathan", - "Abraham", - "Adam", - "Luke", - "Scott", - "Ewan", - "Robert", - "Bob" - }; - - internal static List FemaleFirstNames = new List - { - "Ruth", - "Sarah", - "Ann", - "Anna", - "Elizabeth", - "Liz", - "Sally", - "Olivia", - "Catherine", - "Ruby", - "Cara", - "Robin", - "Grace", - "Emily", - "Jessica", - "Sophie", - "Chloe", - "Lily", - "Mia", - "Lucy", - "Amelia", - "Evie", - "Ella", - "Daniella", - "Katie", - "Kate", - "Charlotte", - "Ellie", - "Megan", - "Ava", - "Hannah", - "Eve", - "Rachel", - "Rebecca", - "Jade" - }; - internal static List Surnames = new List { "Smith", diff --git a/src/GiveCRM.DummyDataGenerator/Generation/CampaignGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/CampaignGenerator.cs index d8b24d35..84ce488b 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/CampaignGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/CampaignGenerator.cs @@ -12,7 +12,7 @@ internal class CampaignGenerator public Campaign Generate() { - string campaignName = random.PickFromList(NameData.FemaleFirstNames) + " " + + string campaignName = random.PickFromList(FemaleNames.Data) + " " + random.PickFromList(CampaignNames.CampaignSuffix); return new Campaign { diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index ec275c2a..15e552b3 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -186,12 +186,12 @@ private TitleData MakeTitleSalutation(bool isFemale) private string RandomMaleFirstName() { - return random.PickFromList(NameData.MaleFirstNames); + return random.PickFromList(MaleNames.Data); } private string RandomFemaleFirstName() { - return random.PickFromList(NameData.FemaleFirstNames); + return random.PickFromList(FemaleNames.Data); } } } \ No newline at end of file diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 6602004e..54833547 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -70,6 +70,8 @@ App.xaml Code + + From ac9ee63b836428a1d2cc06e3ecc1e2d3dfcd67bd Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Wed, 26 Oct 2011 22:55:13 +0100 Subject: [PATCH 02/14] Dummy data - longer lists of family names, alphabetised (to spot duplicates) - now over 100. --- .../Data/{NameData.cs => FamilyNames.cs} | 229 ++++++++++-------- .../Data/FemaleNames.cs | 4 +- .../Generation/MemberGenerator.cs | 10 +- .../GiveCRM.DummyDataGenerator.csproj | 2 +- 4 files changed, 134 insertions(+), 111 deletions(-) rename src/GiveCRM.DummyDataGenerator/Data/{NameData.cs => FamilyNames.cs} (84%) diff --git a/src/GiveCRM.DummyDataGenerator/Data/NameData.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs similarity index 84% rename from src/GiveCRM.DummyDataGenerator/Data/NameData.cs rename to src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 76804ee5..2bbbdb2a 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/NameData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -2,129 +2,150 @@ { using System.Collections.Generic; - internal static class NameData + internal static class FamilyNames { - internal static List Surnames = new List + internal static List Data = new List { - "Smith", - "Jones", - "Taylor", - "Williams", + "Adams", + "Ali", + "Anderson", + "Bailey", + "Baker", + "Barnes", + "Barnwell", + "Bell", + "Bennett", + "Berry", + "Booth", "Brown", + "Butler", + "Cameron", + "Campbell", + "Carter", + "Chapman", + "Clark", + "Clarke", + "Clegg", + "Cole", + "Collins", + "Cook", + "Cooper", + "Cox", "Davies", + "Davis", + "Dean", + "Dixon", + "Diver", + "Doherty", + "Dorrans", + "Edwards", + "Ellis", "Evans", - "Wilson", - "Thomas", - "Roberts", - "Johnson", - "Lewis", - "Walker", - "Robinson", - "Wood", - "Thompson", - "White", - "Watson", - "Jackson", - "Wright", + "Fisher", + "Foster", + "Fox", + "Gibson", + "Gordon", + "Graham", + "Grant", + "Gray", "Green", + "Griffiths", + "Hall", + "Hamilton", + "Harper", "Harris", - "Cooper", + "Harrison", + "Hart", + "Harvey", + "Hill", + "Holmes", + "Hudson", + "Hughes", + "Hunt", + "Hunter", + "Jackson", + "James", + "Jenkins", + "Johnson", + "Jones", + "Kaur", + "Kelly", + "Kennedy", + "Khan", "King", + "Knight", + "Lane", "Lee", + "Lewis", + "Lloyd", + "MacDonald", + "Marshall", "Martin", - "Clarke", - "James", - "Morgan", - "Hughes", - "Edwards", - "Hill", + "Mason", + "Matthews", + "McLaughlin", + "Miller", + "Mills", + "Mitchell", "Moore", - "Clarke", - "Harrison", - "Scott", - "Young", + "Morgan", "Morris", - "Hall", - "Ward", - "Turner", - "Carter", - "Phillips", - "Mitchell", - "Patel", - "Adams", - "Campbell", - "Anderson", - "Cook", - "Bailey", - "Parker", - "Miller", - "Davis", + "Morrison", "Murphy", + "Murray", + "O'Neill", + "Owen", + "Palmer", + "Parker", + "Patel", + "Paterson", + "Pearce", + "Pearson", + "Phillips", + "Powell", "Price", - "Bell", - "Baker", - "Griffiths", - "Kelly", - "Simpson", - "Marshall", - "Collins", - "Bennett", - "Cox", + "Quinn", + "Rees", + "Rendle", + "Reid", + "Reynolds", + "Richards", "Richardson", - "Fox", - "Gray", - "Rose", - "Chapman", - "Hunt", + "Roberts", "Robertson", - "Shaw", - "Reynolds", - "Lloyd", - "Ellis", - "Richards", - "Russel", - "Wilkinson", - "Khan", - "Graham", - "Stewart", - "Reid", - "Marray", - "Powell", - "Palmer", - "Holmes", + "Robinson", "Rogers", - "Stevens", - "Walsh", - "Hunter", - "Thompson", - "Matthews", + "Rose", "Ross", - "Owen", - "Mason", - "Knight", - "Kennedy", - "Butler", + "Russel", "Saunders", - "Cole", - "Pearce", - "Dean", - "Foster", - "Harvey", - "Hudson", - "Gibson", - "Mills", - "Berry", - "Barnes", - "Pearson", - "Kaur", - "Booth", - "Dixon", - "Grant", - "Gordon", - "Lane", - "Harper", - "Ali", - "Hart" + "Scott", + "Shaw", + "Simpson", + "Smith", + "Smyth", + "Stack", + "Stevens", + "Stewart", + "Steele", + "Taylor", + "Thomas", + "Thompson", + "Thomson", + "Turner", + "Walker", + "Walsh", + "Ward", + "Webb", + "Watson", + "White", + "Wilkinson", + "Williams", + "Wilson", + "Wood", + "Wright", + "Young" }; internal static List MaleTitles = new List diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index e76e64d9..7dd309c8 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -127,7 +127,9 @@ internal static class FemaleNames "Teresa", "Tina", "Virginia", - "Wanda" + "Wanda", + "Zara", + "Zaza" }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index 15e552b3..6628ed48 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -37,7 +37,7 @@ private Member GenerateMember() var newMember = new Member { FirstName = firstName, - LastName = random.PickFromList(NameData.Surnames), + LastName = random.PickFromList(FamilyNames.Data), Title = titleSalutation.Title, Salutation = titleSalutation.Salutation, City = random.PickFromList(AddressData.Cities), @@ -151,11 +151,11 @@ private void MakeEmailAddress(Member member) private string GenerateEmailAddress(Member member) { - string sep = random.PickFromList(NameData.EmailSeparators); + string sep = random.PickFromList(FamilyNames.EmailSeparators); if (random.Percent(30)) { - sep += random.Letter() + random.PickFromList(NameData.EmailSeparators); + sep += random.Letter() + random.PickFromList(FamilyNames.EmailSeparators); } string name; @@ -174,14 +174,14 @@ private string GenerateEmailAddress(Member member) name += this.random.Next(100).ToString(); } - string domain = random.PickFromList(NameData.EmailDomains); + string domain = random.PickFromList(FamilyNames.EmailDomains); return name + "@" + domain; } private TitleData MakeTitleSalutation(bool isFemale) { - return isFemale ? random.PickFromList(NameData.FemaleTitles) : random.PickFromList(NameData.MaleTitles); + return isFemale ? random.PickFromList(FamilyNames.FemaleTitles) : random.PickFromList(FamilyNames.MaleTitles); } private string RandomMaleFirstName() diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 54833547..6fd65e8c 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -76,7 +76,7 @@ - + From b23036da4e271052551279185a4c724bbcebae12 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Wed, 26 Oct 2011 22:57:45 +0100 Subject: [PATCH 03/14] refactor to email & title data --- .../Data/EmailData.cs | 28 +++++++ .../Data/FamilyNames.cs | 79 +++++++------------ .../Data/{TitleData.cs => TitleDataItem.cs} | 4 +- .../Generation/MemberGenerator.cs | 10 +-- .../GiveCRM.DummyDataGenerator.csproj | 3 +- 5 files changed, 66 insertions(+), 58 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/Data/EmailData.cs rename src/GiveCRM.DummyDataGenerator/Data/{TitleData.cs => TitleDataItem.cs} (72%) diff --git a/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs b/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs new file mode 100644 index 00000000..1cf555c5 --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + internal static class EmailData + { + internal static List Separators = new List { "", ".", "_" }; + + internal static List Domains = new List + { + "fakemail.com", + "fakemail.net", + "not.com", + "not.net", + "notmail.com", + "notmail.net", + "coldmail.net", + "voidmail.net", + "voidmail.org", + "pmail.com", + "pmail.net", + "gahoo.com", + "gahoo.org", + "offthe.net", + "notonthe.net", + }; + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 2bbbdb2a..86a3fc69 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -148,60 +148,39 @@ internal static class FamilyNames "Young" }; - internal static List MaleTitles = new List + internal static List MaleTitles = new List { - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Mr.", "Mr."), - new TitleData("Dr.", "Doctor"), - new TitleData("Rev.", "Reverend"), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Dr.", "Doctor"), + new TitleDataItem("Rev.", "Reverend"), }; - internal static List FemaleTitles = new List + internal static List FemaleTitles = new List { - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Ms.", "Ms."), - new TitleData("Mrs.", "Mrs."), - new TitleData("Mrs.", "Mrs."), - new TitleData("Mrs.", "Mrs."), - new TitleData("Mrs.", "Mrs."), - new TitleData("Dr.", "Doctor"), - new TitleData("Rev.", "Reverend"), - }; - - internal static List EmailSeparators = new List { "", ".", "_" }; - - internal static List EmailDomains = new List - { - "fakemail.com", - "fakemail.net", - "not.com", - "not.net", - "notmail.com", - "notmail.net", - "coldmail.net", - "voidmail.net", - "voidmail.org", - "pmail.com", - "pmail.net", - "gahoo.com", - "gahoo.org", - "offthe.net", - "notonthe.net", + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Dr.", "Doctor"), + new TitleDataItem("Rev.", "Reverend"), }; internal static List PhoneTypes = new List { "Home", "Mobile", "Work" }; diff --git a/src/GiveCRM.DummyDataGenerator/Data/TitleData.cs b/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs similarity index 72% rename from src/GiveCRM.DummyDataGenerator/Data/TitleData.cs rename to src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs index 058740de..864da47e 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/TitleData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs @@ -1,12 +1,12 @@ namespace GiveCRM.DummyDataGenerator.Data { - internal class TitleData + internal class TitleDataItem { public string Title { get; set; } public string Salutation { get; set; } - public TitleData(string title, string salutation) + public TitleDataItem(string title, string salutation) { this.Title = title; this.Salutation = salutation; diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index 6628ed48..00e6795b 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -32,7 +32,7 @@ private Member GenerateMember() { bool isFemale = random.Bool(); string firstName = isFemale ? RandomFemaleFirstName() : RandomMaleFirstName(); - TitleData titleSalutation = MakeTitleSalutation(isFemale); + TitleDataItem titleSalutation = MakeTitleSalutation(isFemale); var newMember = new Member { @@ -151,11 +151,11 @@ private void MakeEmailAddress(Member member) private string GenerateEmailAddress(Member member) { - string sep = random.PickFromList(FamilyNames.EmailSeparators); + string sep = random.PickFromList(EmailData.Separators); if (random.Percent(30)) { - sep += random.Letter() + random.PickFromList(FamilyNames.EmailSeparators); + sep += random.Letter() + random.PickFromList(EmailData.Separators); } string name; @@ -174,12 +174,12 @@ private string GenerateEmailAddress(Member member) name += this.random.Next(100).ToString(); } - string domain = random.PickFromList(FamilyNames.EmailDomains); + string domain = random.PickFromList(EmailData.Domains); return name + "@" + domain; } - private TitleData MakeTitleSalutation(bool isFemale) + private TitleDataItem MakeTitleSalutation(bool isFemale) { return isFemale ? random.PickFromList(FamilyNames.FemaleTitles) : random.PickFromList(FamilyNames.MaleTitles); } diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 6fd65e8c..389a9ba9 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -70,6 +70,7 @@ App.xaml Code + @@ -78,7 +79,7 @@ - + MainWindow.xaml From 4e23567f1a65a67b6d047ed524f96e222848042d Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Wed, 26 Oct 2011 23:01:28 +0100 Subject: [PATCH 04/14] Dummy data generation - factored out title data --- .../Data/EmailData.cs | 4 ++ .../Data/FamilyNames.cs | 37 ---------------- .../Data/TitleData.cs | 43 +++++++++++++++++++ .../Generation/MemberGenerator.cs | 2 +- .../GiveCRM.DummyDataGenerator.csproj | 1 + 5 files changed, 49 insertions(+), 38 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/Data/TitleData.cs diff --git a/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs b/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs index 1cf555c5..ffb54d0d 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/EmailData.cs @@ -6,6 +6,10 @@ internal static class EmailData { internal static List Separators = new List { "", ".", "_" }; + /// + /// It's better if these aren't popular emial providers + /// Avoid potential accidents where a real email address is accidentally targeted. + /// internal static List Domains = new List { "fakemail.com", diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 86a3fc69..f0f02f04 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -147,42 +147,5 @@ internal static class FamilyNames "Wright", "Young" }; - - internal static List MaleTitles = new List - { - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Mr.", "Mr."), - new TitleDataItem("Dr.", "Doctor"), - new TitleDataItem("Rev.", "Reverend"), - }; - - internal static List FemaleTitles = new List - { - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Ms.", "Ms."), - new TitleDataItem("Mrs.", "Mrs."), - new TitleDataItem("Mrs.", "Mrs."), - new TitleDataItem("Mrs.", "Mrs."), - new TitleDataItem("Mrs.", "Mrs."), - new TitleDataItem("Dr.", "Doctor"), - new TitleDataItem("Rev.", "Reverend"), - }; - - internal static List PhoneTypes = new List { "Home", "Mobile", "Work" }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/TitleData.cs b/src/GiveCRM.DummyDataGenerator/Data/TitleData.cs new file mode 100644 index 00000000..3265a47d --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/TitleData.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + internal static class TitleData + { + internal static List MaleTitles = new List + { + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Mr.", "Mr."), + new TitleDataItem("Dr.", "Doctor") + }; + + internal static List FemaleTitles = new List + { + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Ms.", "Ms."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Mrs.", "Mrs."), + new TitleDataItem("Dr.", "Doctor") + }; + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index 00e6795b..8a18275d 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -181,7 +181,7 @@ private string GenerateEmailAddress(Member member) private TitleDataItem MakeTitleSalutation(bool isFemale) { - return isFemale ? random.PickFromList(FamilyNames.FemaleTitles) : random.PickFromList(FamilyNames.MaleTitles); + return isFemale ? random.PickFromList(TitleData.FemaleTitles) : random.PickFromList(TitleData.MaleTitles); } private string RandomMaleFirstName() diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 389a9ba9..69c0f281 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -73,6 +73,7 @@ + From 059ad200f500adca3cceab5c2b8fa39da843293d Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Thu, 27 Oct 2011 21:29:44 +0100 Subject: [PATCH 05/14] More names; surnames a-e --- .../Data/FamilyNames.cs | 58 +++++++++++++++++-- .../Data/FemaleNames.cs | 2 + .../Data/MaleNames.cs | 15 ++++- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index f0f02f04..457427ee 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -6,22 +6,53 @@ internal static class FamilyNames { internal static List Data = new List { + "Abbott", "Adams", + "Adamson", + "Addison", + "Ainsworth", + "Aitken", + "Alexander", "Ali", + "Allen", "Anderson", + "Archer", + "Astor", + "Atkins", + "Austin", + "Bacon", "Bailey", + "Baird", "Baker", + "Baldwin", + "Barber", + "Barker", + "Barnes", "Barnes", "Barnwell", + "Barrett", + "Bartlet", + "Beattie", "Bell", "Bennett", "Berry", "Booth", + "Brooke", "Brown", + "Bruce", + "Bryne", + "Butler", "Butler", + "Buxton", + "Calaghan", "Cameron", "Campbell", + "Carlile", "Carter", + "Castle", + "Cave", + "Cavendish", + "Chaplin", "Chapman", "Clark", "Clarke", @@ -30,17 +61,36 @@ internal static class FamilyNames "Collins", "Cook", "Cooper", + "Cowen", + "Cox", "Cox", + "Crosland", + "Cummings", + "Curtis", + "Curzon", + "Davidson", "Davies", "Davis", + "Dawson", + "Dean", "Dean", - "Dixon", "Diver", + "Dixon", + "Dodds", "Doherty", "Dorrans", + "Douglas", + "Dowd", + "Drew", + "Dunlop", + "Dunn", + "Durant", "Edwards", + "Eliot", "Ellis", + "Enright", "Evans", + "Ewing", "Fisher", "Foster", "Fox", @@ -107,8 +157,8 @@ internal static class FamilyNames "Price", "Quinn", "Rees", - "Rendle", "Reid", + "Rendle", "Reynolds", "Richards", "Richardson", @@ -126,9 +176,9 @@ internal static class FamilyNames "Smith", "Smyth", "Stack", + "Steele", "Stevens", "Stewart", - "Steele", "Taylor", "Thomas", "Thompson", @@ -137,8 +187,8 @@ internal static class FamilyNames "Walker", "Walsh", "Ward", - "Webb", "Watson", + "Webb", "White", "Wilkinson", "Williams", diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index 7dd309c8..ea583de1 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -99,6 +99,7 @@ internal static class FemaleNames "Mia", "Michelle", "Mildred", + "Nadine", "Nancy", "Nicole", "Norma", @@ -126,6 +127,7 @@ internal static class FemaleNames "Tammy", "Teresa", "Tina", + "Valerie", "Virginia", "Wanda", "Zara", diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index d6052701..5952d6c6 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -11,6 +11,7 @@ internal static class MaleNames "Adam", "Alan", "Albert", + "Alistair", "Anders", "Andrew", "Anthony", @@ -46,15 +47,21 @@ internal static class MaleNames "Ewan", "Frank", "Fred", + "Gareth", "Gary", "George", "Gerald", + "Gerry", "Giles", + "Greg", "Gregory", "Harold", "Harry", "Henry", "Howard", + "Hugh", + "Isaac", + "Ivor", "Jack", "Jacob", "James", @@ -86,12 +93,15 @@ internal static class MaleNames "Michael", "Nathan", "Nicholas", + "Nick", "Oliver", + "Owen", "Patrick", "Paul", "Peter", "Phil", "Philip", + "Quentin", "Ralph", "Ray", "Raymond", @@ -106,19 +116,22 @@ internal static class MaleNames "Samuel", "Scott", "Sean", + "Sebastian", "Simon", "Stephen", "Steve", "Steven", - "Terry", "Terrence", + "Terry", "Thomas", "Timothy", + "Toby", "Todd", "Tom", "Tony", "Victor", "Walter", + "Wayne", "William", "Zachary", }; From 358daa6f0faa7a163c234380444f60c1f7faf575 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Thu, 27 Oct 2011 22:49:39 +0100 Subject: [PATCH 06/14] Dummy data UI - show connection string, use tab control, better time formatting --- .../Data/FemaleNames.cs | 1 + .../Data/MaleNames.cs | 3 +- src/GiveCRM.DummyDataGenerator/Generator.cs | 14 ++++++- .../GiveCRM.DummyDataGenerator.csproj | 1 + .../MainWindow.xaml | 40 ++++++++++++------- .../MainWindow.xaml.cs | 30 ++++++++++---- 6 files changed, 65 insertions(+), 24 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index ea583de1..ff8260b9 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -7,6 +7,7 @@ internal static class FemaleNames internal static List Data = new List { "Alice", + "Alison", "Amanda", "Amelia", "Amy", diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index 5952d6c6..6bf267f2 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -16,6 +16,7 @@ internal static class MaleNames "Andrew", "Anthony", "Arthur", + "Barry", "Ben", "Benjamin", "Bert", @@ -133,7 +134,7 @@ internal static class MaleNames "Walter", "Wayne", "William", - "Zachary", + "Zachary" }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Generator.cs b/src/GiveCRM.DummyDataGenerator/Generator.cs index 3f99b629..734d6c3d 100644 --- a/src/GiveCRM.DummyDataGenerator/Generator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generator.cs @@ -53,7 +53,7 @@ internal string LoadMembers() DateTime endTime = DateTime.Now; TimeSpan elapsedTime = endTime - startTime; - return string.Format("{0} members loaded in {1}", members.Count, elapsedTime); + return string.Format("{0} members loaded in {1}", members.Count, ShowDuration(elapsedTime)); } internal string GenerateCampaign() @@ -78,7 +78,7 @@ internal string GenerateDonations() DateTime endTime = DateTime.Now; TimeSpan elapsedTime = endTime - startTime; return string.Format("{0} donations inserted on campaign {1} in {2}", - newDonations.Count, campaign.Name, elapsedTime); + newDonations.Count, campaign.Name, ShowDuration(elapsedTime)); } private static void SaveDonations(IEnumerable newDonations) @@ -90,5 +90,15 @@ private static void SaveDonations(IEnumerable newDonations) donationDb.Insert(donation); } } + + private string ShowDuration(TimeSpan timeSpan) + { + TimeSpan oneMinute = new TimeSpan(0, 1, 0); + if (timeSpan >= oneMinute) + { + return timeSpan.ToString(@"m\:ss\.ff") + " minutes"; + } + return timeSpan.ToString(@"s\.ff") + " seconds"; + } } } diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 69c0f281..5fae4db0 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -50,6 +50,7 @@ ..\packages\Simple.Data.SqlServer.0.9.8.2\lib\net40\Simple.Data.SqlServer.dll + diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml index d78bc4e1..cb6ec35c 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml @@ -1,22 +1,34 @@  + Title="GiveCRM Dummy data generator" Height="300" Width="450"> - - - Generate member count: - 10000 - - - - - - - + Database is GiveCRM: + + + + + + Generate member count: + 10000 + + + + + + + + + + + + - Ready + + Ready + + diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs index 2484216f..98f1578b 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs @@ -1,4 +1,6 @@ -namespace GiveCRM.DummyDataGenerator +using System.Configuration; + +namespace GiveCRM.DummyDataGenerator { using System.Windows; @@ -12,6 +14,20 @@ public partial class Main : Window public Main() { InitializeComponent(); + ShowDataseConnection(); + } + + private void ShowDataseConnection() + { + var connection = ConfigurationManager.ConnectionStrings["GiveCrm"]; + if (connection == null) + { + databaseConnectionText.Text = "Database connection for GiveCRM was not found"; + } + else + { + databaseConnectionText.Text = "Database is GiveCRM: " + connection.ConnectionString; + } } private void GenerateMembers(object sender, RoutedEventArgs e) @@ -24,28 +40,28 @@ private void GenerateMembers(object sender, RoutedEventArgs e) } int memberCountValue = int.Parse(memberCount.Text); - generationOutput.Text = generator.GenerateMembers(memberCountValue); + outputStatus.Text = generator.GenerateMembers(memberCountValue); } private void LoadMembers(object sender, RoutedEventArgs e) { - generationOutput.Text = generator.LoadMembers(); + outputStatus.Text = generator.LoadMembers(); } private void GenerateCampaign(object sender, RoutedEventArgs e) { - generationOutput.Text = generator.GenerateCampaign(); + outputStatus.Text = generator.GenerateCampaign(); } private void GenerateCampaignAndDonations(object sender, RoutedEventArgs e) { - generationOutput.Text = generator.GenerateCampaign(); - generationOutput.Text = generator.GenerateDonations(); + outputStatus.Text = generator.GenerateCampaign(); + outputStatus.Text = generator.GenerateDonations(); } private void GenerateDonations(object sender, RoutedEventArgs e) { - generationOutput.Text = generator.GenerateDonations(); + outputStatus.Text = generator.GenerateDonations(); } } } From dd30589d71e1b8f4ae371f5346d8c3b866411521 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Fri, 28 Oct 2011 20:30:35 +0100 Subject: [PATCH 07/14] Dummy data generator - threads and events for progress updates and responsive UI during long-running processes --- src/GiveCRM.DummyDataGenerator/Generator.cs | 67 +++++++++++++++---- .../GenericEventArgs.cs | 19 ++++++ .../GiveCRM.DummyDataGenerator.csproj | 1 + .../MainWindow.xaml | 13 ++-- .../MainWindow.xaml.cs | 50 +++++++++----- 5 files changed, 113 insertions(+), 37 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/GenericEventArgs.cs diff --git a/src/GiveCRM.DummyDataGenerator/Generator.cs b/src/GiveCRM.DummyDataGenerator/Generator.cs index 734d6c3d..00e110b5 100644 --- a/src/GiveCRM.DummyDataGenerator/Generator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generator.cs @@ -9,11 +9,16 @@ namespace GiveCRM.DummyDataGenerator { internal class Generator { + private const int UpdateFromLoopFrequency = 100; + private Campaign campaign; private List members; - internal string GenerateMembers(int countToGenerate) + internal EventHandler> Update; + + internal void GenerateMembers(int countToGenerate) { + OnUpdate("Generating members"); DateTime startTime = DateTime.Now; MemberGenerator generator = new MemberGenerator(); @@ -25,26 +30,36 @@ internal string GenerateMembers(int countToGenerate) members.Capacity = countToGenerate; List newMembers = generator.Generate(countToGenerate); + string generateMessaged = string.Format("{0} members generated", newMembers.Count); + OnUpdate(generateMessaged); SaveMembers(newMembers); DateTime endTime = DateTime.Now; TimeSpan elapsedTime = endTime - startTime; - return string.Format("{0} members saved in {1}", members.Count, elapsedTime); + string finalMessage = string.Format("{0} members saved in {1}", newMembers.Count, ShowDuration(elapsedTime)); + OnUpdate(finalMessage); } - private void SaveMembers(IEnumerable newMembers) + private void SaveMembers(IList newMembers) { Members membersDb = new Members(); - foreach (var member in newMembers) + for (int index = 0; index < newMembers.Count; index++) { - Member saved = membersDb.Insert(member); + Member saved = membersDb.Insert(newMembers[index]); this.members.Add(saved); + + if (index % UpdateFromLoopFrequency == 0) + { + string generateMessaged = string.Format("{0} members saved", index); + OnUpdate(generateMessaged); + } } } - internal string LoadMembers() + internal void LoadMembers() { + OnUpdate("Loading members"); DateTime startTime = DateTime.Now; Members membersDb = new Members(); @@ -53,41 +68,56 @@ internal string LoadMembers() DateTime endTime = DateTime.Now; TimeSpan elapsedTime = endTime - startTime; - return string.Format("{0} members loaded in {1}", members.Count, ShowDuration(elapsedTime)); + string finalMessage = string.Format("{0} members loaded in {1}", members.Count, ShowDuration(elapsedTime)); + OnUpdate(finalMessage); + } - internal string GenerateCampaign() + internal void GenerateCampaign() { + OnUpdate("Generating campaign"); CampaignGenerator generator = new CampaignGenerator(); campaign = generator.Generate(); Campaigns campaignDb = new Campaigns(); campaign = campaignDb.Insert(campaign); - return "Generated campaign " + campaign; + string finalMessage = "Generated campaign " + campaign; + OnUpdate(finalMessage); } - internal string GenerateDonations() + internal void GenerateDonations() { + OnUpdate("Generating donations"); DateTime startTime = DateTime.Now; DonationsGenerator generator = new DonationsGenerator(campaign, members); IList newDonations = generator.Generate(); + string generateMessaged = string.Format("{0} donations generated", newDonations.Count); + OnUpdate(generateMessaged); SaveDonations(newDonations); DateTime endTime = DateTime.Now; TimeSpan elapsedTime = endTime - startTime; - return string.Format("{0} donations inserted on campaign {1} in {2}", + string finalMessage = string.Format("{0} donations inserted on campaign {1} in {2}", newDonations.Count, campaign.Name, ShowDuration(elapsedTime)); + OnUpdate(finalMessage); + } - private static void SaveDonations(IEnumerable newDonations) + private void SaveDonations(IList newDonations) { Donations donationDb = new Donations(); - foreach (var donation in newDonations) + for (int index = 0; index < newDonations.Count; index++) { - donationDb.Insert(donation); + donationDb.Insert(newDonations[index]); + + if (index % UpdateFromLoopFrequency == 0) + { + string generateMessaged = string.Format("{0} donations saved", index); + OnUpdate(generateMessaged); + } } } @@ -100,5 +130,14 @@ private string ShowDuration(TimeSpan timeSpan) } return timeSpan.ToString(@"s\.ff") + " seconds"; } + + private void OnUpdate(string message) + { + var handler = Update; + if (handler != null) + { + handler(this, new EventArgs(message)); + } + } } } diff --git a/src/GiveCRM.DummyDataGenerator/GenericEventArgs.cs b/src/GiveCRM.DummyDataGenerator/GenericEventArgs.cs new file mode 100644 index 00000000..606f872a --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/GenericEventArgs.cs @@ -0,0 +1,19 @@ +using System; + +namespace GiveCRM.DummyDataGenerator +{ + public class EventArgs : EventArgs + { + private readonly T eventData; + + public EventArgs(T data) + { + eventData = data; + } + + public T Data + { + get { return eventData; } + } + } +} diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index 5fae4db0..cfafae04 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -83,6 +83,7 @@ + MainWindow.xaml diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml index cb6ec35c..bb08a743 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml @@ -7,27 +7,26 @@ - + Generate member count: 10000 + Name="memberCountText">10000 - + - - - + + + Ready - diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs index 98f1578b..ee3a4e18 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs @@ -1,4 +1,6 @@ -using System.Configuration; +using System; +using System.Configuration; +using System.Threading; namespace GiveCRM.DummyDataGenerator { @@ -15,6 +17,8 @@ public Main() { InitializeComponent(); ShowDataseConnection(); + + generator.Update += this.ShowUpdateOnUiThread; } private void ShowDataseConnection() @@ -26,42 +30,56 @@ private void ShowDataseConnection() } else { - databaseConnectionText.Text = "Database is GiveCRM: " + connection.ConnectionString; + databaseConnectionText.Text = "Database is GiveCRM: " + connection.ConnectionString; } } private void GenerateMembers(object sender, RoutedEventArgs e) { - // default data size = 100 000 members - const string DefaultCountToGenerate = "10000"; - if (string.IsNullOrEmpty(memberCount.Text)) - { - memberCount.Text = DefaultCountToGenerate; - } - - int memberCountValue = int.Parse(memberCount.Text); - outputStatus.Text = generator.GenerateMembers(memberCountValue); + int memberCountValue = ReadMemberCount(); + ThreadPool.QueueUserWorkItem(o => this.generator.GenerateMembers(memberCountValue)); } private void LoadMembers(object sender, RoutedEventArgs e) { - outputStatus.Text = generator.LoadMembers(); + ThreadPool.QueueUserWorkItem(o => this.generator.LoadMembers()); } private void GenerateCampaign(object sender, RoutedEventArgs e) { - outputStatus.Text = generator.GenerateCampaign(); + ThreadPool.QueueUserWorkItem(o => this.generator.GenerateCampaign()); } private void GenerateCampaignAndDonations(object sender, RoutedEventArgs e) { - outputStatus.Text = generator.GenerateCampaign(); - outputStatus.Text = generator.GenerateDonations(); + ThreadPool.QueueUserWorkItem(o => + { + generator.GenerateCampaign(); + generator.GenerateDonations(); + }); } private void GenerateDonations(object sender, RoutedEventArgs e) { - outputStatus.Text = generator.GenerateDonations(); + ThreadPool.QueueUserWorkItem(o => generator.GenerateDonations()); + } + + private int ReadMemberCount() + { + // default data size = 100 000 members + const string DefaultCountToGenerate = "10000"; + if (string.IsNullOrEmpty(this.memberCountText.Text)) + { + this.memberCountText.Text = DefaultCountToGenerate; + } + + return int.Parse(this.memberCountText.Text); + } + + private void ShowUpdateOnUiThread(object sender, EventArgs e) + { + Action update = () => outputStatus.Text = e.Data; + Dispatcher.Invoke(update); } } } From ad782f53aab8edc75dba07cf2f45e8946a59a4b6 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Fri, 28 Oct 2011 21:13:27 +0100 Subject: [PATCH 08/14] Expanded family names F through to M --- .../Data/FamilyNames.cs | 74 ++++++++++++++++++- .../Data/FemaleNames.cs | 9 ++- .../Data/MaleNames.cs | 5 ++ .../Generation/RandomSource.cs | 2 +- 4 files changed, 84 insertions(+), 6 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 457427ee..20595b71 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -28,7 +28,6 @@ internal static class FamilyNames "Barber", "Barker", "Barnes", - "Barnes", "Barnwell", "Barrett", "Bartlet", @@ -42,7 +41,6 @@ internal static class FamilyNames "Bruce", "Bryne", "Butler", - "Butler", "Buxton", "Calaghan", "Cameron", @@ -63,7 +61,6 @@ internal static class FamilyNames "Cooper", "Cowen", "Cox", - "Cox", "Crosland", "Cummings", "Curtis", @@ -73,7 +70,6 @@ internal static class FamilyNames "Davis", "Dawson", "Dean", - "Dean", "Diver", "Dixon", "Dodds", @@ -91,31 +87,73 @@ internal static class FamilyNames "Enright", "Evans", "Ewing", + "Faber", + "Fallon", + "Fawkes", + "Field", "Fisher", + "Fitzpatrick", + "Fitzsimons", + "Flemming", + "Flint", + "Flynn", + "Foot", + "Forsyth", "Foster", + "Fowler", "Fox", + "Francis", + "Fraser", + "Fremantle", + "Fyfe", + "Gallagher", + "Gardiner", + "Gates", "Gibson", + "Gilmour", + "Gold", "Gordon", + "Gorman", + "Gove", "Graham", "Grant", "Gray", "Green", + "Griffith", "Griffiths", "Hall", "Hamilton", + "Hammond", + "Hancock", "Harper", "Harris", "Harrison", "Hart", "Harvey", + "Healey", + "Henderson", + "Hendrick", + "Hepburn", + "Herbert", + "Hewlett", + "Heyes", "Hill", + "Hodge", "Holmes", + "Hopkins", "Hudson", "Hughes", "Hunt", "Hunter", + "Hurd", + "Hurst", + "Ingram", + "Irvine", + "Irving", + "Isaacs", "Jackson", "James", + "Jamieson", "Jenkins", "Johnson", "Jones", @@ -125,23 +163,51 @@ internal static class FamilyNames "Khan", "King", "Knight", + "Laing", + "Lamb", + "Lancaster", "Lane", + "Law", + "Lawson", "Lee", + "Legg", "Lewis", + "Livingstone", "Lloyd", + "Lucas", + "Lyttelton", "MacDonald", + "MacGregor", + "MacKay", + "Maclean", + "Macleod", + "MacNeil", + "Maguire", + "Major", + "Mann", + "Marsden", "Marshall", "Martin", "Mason", "Matthews", + "Mayhew", + "McAvoy", + "McCabe", + "McCafferty", + "McCartney", + "McDonnell", "McLaughlin", + "McManus", "Miller", "Mills", + "Milton", "Mitchell", + "Moffatt", "Moore", "Morgan", "Morris", "Morrison", + "Munro", "Murphy", "Murray", "O'Neill", diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index ff8260b9..769804ad 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -18,6 +18,7 @@ internal static class FemaleNames "Anne", "Annie", "Ashley", + "Audrey", "Ava", "Barbara", "Betty", @@ -47,7 +48,9 @@ internal static class FemaleNames "Ella", "Ellie", "Emily", + "Esmerelda", "Eve", + "Eva", "Evelyn", "Evie", "Frances", @@ -122,17 +125,21 @@ internal static class FemaleNames "Sarah", "Sharon", "Shirley", + "Siobhain", "Sophie", "Stephanie", "Susan", "Tammy", "Teresa", + "Theresa", "Tina", "Valerie", "Virginia", + "Veronica", "Wanda", "Zara", - "Zaza" + "Zaza", + "Zelda" }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index 6bf267f2..c1011f9b 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -22,15 +22,18 @@ internal static class MaleNames "Bert", "Bill", "Bob", + "Boris", "Brandon", "Brian", "Bruce", "Bryan", + "Calum", "Carl", "Carlos", "Charles", "Chris", "Christopher", + "Clifford", "Craig", "Dan", "Daniel", @@ -83,6 +86,8 @@ internal static class MaleNames "Kevin", "Larry", "Lawrence", + "Leo", + "Leonard", "Lewis", "Liam", "Louis", diff --git a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs index 85fb5482..9ae8f96d 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs @@ -22,7 +22,7 @@ public string PhoneDigits() public T PickFromList(List list) { var max = list.Count - 1; - var index = random.Next(max); + var index = random.Next(max + 1); return list[index]; } From e171e1fe75a06ef6f72bd8efa0dd4917385690f5 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Fri, 28 Oct 2011 22:22:27 +0100 Subject: [PATCH 09/14] Additional family names complete --- .../Data/FamilyNames.cs | 87 ++++++++++++++++++- .../Data/FemaleNames.cs | 5 ++ .../Data/MaleNames.cs | 10 +++ .../Generation/DonationsGenerator.cs | 2 +- 4 files changed, 101 insertions(+), 3 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 20595b71..b060878f 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -210,58 +210,141 @@ internal static class FamilyNames "Munro", "Murphy", "Murray", + "Needham", + "Newmark", + "Newton", + "Nicholls", + "Nicholson", + "Norman", + "Norris", + "Nugent", + "Nutt", + "Oaten", + "O'Brien", + "O'Connor", + "O'Donnell", + "O'Hara", + "Oldfield", "O'Neill", + "Ormsby", + "Osborne", "Owen", + "Page", + "Paisley", + "Palmer", "Palmer", "Parker", + "Parkinson", "Patel", "Paterson", + "Patten", + "Paxton", "Pearce", "Pearson", + "Peel", + "Penrose", "Phillips", + "Pickles", + "Pike", + "Pitt", + "Pond", + "Pope", "Powell", + "Prentice", + "Prescott", "Price", + "Pritchard", + "Purnell", "Quinn", + "Radcliff", + "Ramsay", + "Randall", + "Rathbone", + "Redwood", + "Reed", "Rees", + "Reeves", "Reid", "Rendle", + "Renton", "Reynolds", "Richards", "Richardson", + "Rippon", "Roberts", "Robertson", "Robinson", "Rogers", "Rose", "Ross", - "Russel", + "Russell", + "Ryan", + "Ryder", + "Sadler", "Saunders", "Scott", + "Shackleton", "Shaw", + "Shawcross", + "Shepherd", + "Shipley", + "Short", + "Silverman", + "Simmonds", "Simpson", + "Singh", + "Skeet", + "Skinner", "Smith", "Smyth", + "Snelgrove", + "Snell", + "Soames", + "Spink", + "Spring", + "Squire", "Stack", + "Steel", "Steele", "Stevens", "Stewart", + "Stokes", + "Stuart", + "Sutcliffe", "Taylor", "Thomas", "Thompson", "Thomson", + "Thorne", + "Thrale", + "Todd", + "Townshend", + "Trotter", "Turner", + "Twigg", + "Tyler", + "Underwood", + "Urquhart", + "Varley", + "Vernon", + "Villiers", "Walker", "Walsh", "Ward", "Watson", "Webb", + "Wheatley", "White", "Wilkinson", "Williams", "Wilson", "Wood", "Wright", - "Young" + "Wyatt", + "Yates", + "York", + "Young", + "Younger" }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index 769804ad..dd3ead70 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -34,6 +34,7 @@ internal static class FemaleNames "Chloe", "Christina", "Christine", + "Clare", "Cynthia", "Daniella", "Deborah", @@ -48,6 +49,7 @@ internal static class FemaleNames "Ella", "Ellie", "Emily", + "Emma", "Esmerelda", "Eve", "Eva", @@ -68,6 +70,7 @@ internal static class FemaleNames "Jean", "Jennifer", "Jessica", + "Jo", "Joan", "Joyce", "Judith", @@ -92,6 +95,7 @@ internal static class FemaleNames "Lois", "Louise", "Lucy", + "Marsha", "Margaret", "Maria", "Marie", @@ -133,6 +137,7 @@ internal static class FemaleNames "Teresa", "Theresa", "Tina", + "Ursula", "Valerie", "Virginia", "Veronica", diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index c1011f9b..aa636d68 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -30,11 +30,13 @@ internal static class MaleNames "Calum", "Carl", "Carlos", + "Cecil", "Charles", "Chris", "Christopher", "Clifford", "Craig", + "Cyril", "Dan", "Daniel", "Dave", @@ -45,6 +47,7 @@ internal static class MaleNames "Douglas", "Dylan", "Edward", + "Eric", "Ernest", "Ethan", "Eugene", @@ -55,7 +58,9 @@ internal static class MaleNames "Gary", "George", "Gerald", + "Gerard", "Gerry", + "Gilbert", "Giles", "Greg", "Gregory", @@ -98,6 +103,7 @@ internal static class MaleNames "Max", "Michael", "Nathan", + "Neville", "Nicholas", "Nick", "Oliver", @@ -123,6 +129,7 @@ internal static class MaleNames "Scott", "Sean", "Sebastian", + "Sidney", "Simon", "Stephen", "Steve", @@ -130,12 +137,15 @@ internal static class MaleNames "Terrence", "Terry", "Thomas", + "Tim", "Timothy", "Toby", "Todd", "Tom", "Tony", + "Trevor", "Victor", + "Vincent", "Walter", "Wayne", "William", diff --git a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs index 2f6d0dba..cbe1998f 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs @@ -11,7 +11,7 @@ internal class DonationsGenerator private readonly ICollection members; private readonly RandomSource random = new RandomSource(); - private int donationRate; + private readonly int donationRate; public DonationsGenerator(Campaign campaign, ICollection members) { From 713eb259f470bfbcf3b54a9f24ab892ded95337e Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Fri, 28 Oct 2011 23:42:11 +0100 Subject: [PATCH 10/14] Dummy data generator - donations amount range used can now be set through the UI - default range is still 5 to 100 --- .../Generation/DonationsGenerator.cs | 18 +++++++--- .../Generation/RandomSource.cs | 5 +++ src/GiveCRM.DummyDataGenerator/Generator.cs | 4 +-- .../MainWindow.xaml | 13 +++++-- .../MainWindow.xaml.cs | 34 +++++++++++++++---- 5 files changed, 59 insertions(+), 15 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs index cbe1998f..4c215dcc 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs @@ -32,25 +32,35 @@ public DonationsGenerator(Campaign campaign, ICollection members) donationRate = 33 + random.Next(33); } - internal IList Generate() + internal IList Generate(int minAmount, int maxAmount) { + if (minAmount <= 0) + { + throw new ArgumentException("Minimum donation amount must be positive"); + } + + if (maxAmount < minAmount) + { + throw new ArgumentException("Maximum donation amount is less than minimum amount"); + } + var donations = new List(); foreach (var member in members) { if (random.Percent(donationRate)) { - donations.Add(DonationForMember(member)); + donations.Add(DonationForMember(member, minAmount, maxAmount)); } } return donations; } - private Donation DonationForMember(Member member) + private Donation DonationForMember(Member member, int minAmount, int maxAmount) { DateTime backDate = DateTime.Today.AddDays(-1 * random.Next(100)); - decimal randomAmount = (decimal)5 + random.Next(96); + int randomAmount = random.Next(minAmount, maxAmount + 1); return new Donation { CampaignId = campaign.Id, diff --git a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs index 9ae8f96d..203cb485 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs @@ -13,6 +13,11 @@ public int Next(int max) return random.Next(max); } + public int Next(int min, int max) + { + return random.Next(min, max); + } + public string PhoneDigits() { string prefix = "0" + random.Next(100) + " "; diff --git a/src/GiveCRM.DummyDataGenerator/Generator.cs b/src/GiveCRM.DummyDataGenerator/Generator.cs index 00e110b5..d2cb101c 100644 --- a/src/GiveCRM.DummyDataGenerator/Generator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generator.cs @@ -86,12 +86,12 @@ internal void GenerateCampaign() OnUpdate(finalMessage); } - internal void GenerateDonations() + internal void GenerateDonations(int minAmount, int maxAmount) { OnUpdate("Generating donations"); DateTime startTime = DateTime.Now; DonationsGenerator generator = new DonationsGenerator(campaign, members); - IList newDonations = generator.Generate(); + IList newDonations = generator.Generate(minAmount, maxAmount); string generateMessaged = string.Format("{0} donations generated", newDonations.Count); OnUpdate(generateMessaged); diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml index bb08a743..c9defff9 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml @@ -3,12 +3,12 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="GiveCRM Dummy data generator" Height="300" Width="450"> - Database is GiveCRM: + Database is GiveCRM: - + Generate member count: 10000 @@ -21,6 +21,15 @@ + + Donations range from + 5 + to + 100 + + diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs index ee3a4e18..db441dbe 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs @@ -52,28 +52,48 @@ private void GenerateCampaign(object sender, RoutedEventArgs e) private void GenerateCampaignAndDonations(object sender, RoutedEventArgs e) { + int donationMinAmount = ReadDonationAmountMin(); + int donationMaxAmount = ReadDonationAmountMax(); + ThreadPool.QueueUserWorkItem(o => { generator.GenerateCampaign(); - generator.GenerateDonations(); + generator.GenerateDonations(donationMinAmount, donationMaxAmount); }); } private void GenerateDonations(object sender, RoutedEventArgs e) { - ThreadPool.QueueUserWorkItem(o => generator.GenerateDonations()); + int donationMinAmount = ReadDonationAmountMin(); + int donationMaxAmount = ReadDonationAmountMax(); + + ThreadPool.QueueUserWorkItem(o => generator.GenerateDonations(donationMinAmount, donationMaxAmount)); } private int ReadMemberCount() { - // default data size = 100 000 members - const string DefaultCountToGenerate = "10000"; - if (string.IsNullOrEmpty(this.memberCountText.Text)) + // default data size = 10 000 members + return this.StringToIntWithDefault(memberCountText.Text, 10000); + } + + private int ReadDonationAmountMin() + { + return StringToIntWithDefault(donationAmountMinText.Text, 5); + } + + private int ReadDonationAmountMax() + { + return StringToIntWithDefault(donationAmountMaxText.Text, 100); + } + + private int StringToIntWithDefault(string stringValue, int defaultValue) + { + if (string.IsNullOrEmpty(stringValue)) { - this.memberCountText.Text = DefaultCountToGenerate; + return defaultValue; } - return int.Parse(this.memberCountText.Text); + return int.Parse(stringValue); } private void ShowUpdateOnUiThread(object sender, EventArgs e) From dbebc6649a3a55ed2e55a000817f08683aac0ec0 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Sat, 29 Oct 2011 11:34:09 +0100 Subject: [PATCH 11/14] first names always different from family names --- src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs | 5 +++++ src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs | 4 ++++ src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs | 3 +++ .../Generation/MemberGenerator.cs | 12 ++++++++++-- .../Generation/RandomSource.cs | 13 +++++++++++-- src/GiveCRM.DummyDataGenerator/Generator.cs | 6 ++++++ 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index b060878f..982a2f0c 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -80,6 +80,7 @@ internal static class FamilyNames "Drew", "Dunlop", "Dunn", + "Durden", "Durant", "Edwards", "Eliot", @@ -109,6 +110,7 @@ internal static class FamilyNames "Gallagher", "Gardiner", "Gates", + "George", "Gibson", "Gilmour", "Gold", @@ -116,6 +118,7 @@ internal static class FamilyNames "Gorman", "Gove", "Graham", + "Granger", "Grant", "Gray", "Green", @@ -174,6 +177,7 @@ internal static class FamilyNames "Lewis", "Livingstone", "Lloyd", + "Lodge", "Lucas", "Lyttelton", "MacDonald", @@ -238,6 +242,7 @@ internal static class FamilyNames "Patel", "Paterson", "Patten", + "Paulson", "Paxton", "Pearce", "Pearson", diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index dd3ead70..b8085994 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -14,6 +14,7 @@ internal static class FemaleNames "Andrea", "Angela", "Ann", + "Annmarie", "Anna", "Anne", "Annie", @@ -61,6 +62,7 @@ internal static class FemaleNames "Hannah", "Heather", "Helen", + "Hermione", "Irene", "Jacqueline", "Jade", @@ -93,6 +95,8 @@ internal static class FemaleNames "Lisa", "Liz", "Lois", + "Lola", + "Lorraine", "Louise", "Lucy", "Marsha", diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index aa636d68..ed4269e3 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -122,6 +122,7 @@ internal static class MaleNames "Robert", "Robin", "Ronald", + "Ross", "Roy", "Russell", "Ryan", @@ -144,11 +145,13 @@ internal static class MaleNames "Tom", "Tony", "Trevor", + "Tyler", "Victor", "Vincent", "Walter", "Wayne", "William", + "Winston", "Zachary" }; } diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index 8a18275d..d117b083 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -31,13 +31,21 @@ public List Generate(int count) private Member GenerateMember() { bool isFemale = random.Bool(); - string firstName = isFemale ? RandomFemaleFirstName() : RandomMaleFirstName(); + string familyName = random.PickFromList(FamilyNames.Data); + // make first name different from Family name, ie.g. no "Scott Scott" or "Major Major" + string firstName; + do + { + firstName = isFemale ? RandomFemaleFirstName() : RandomMaleFirstName(); + } + while(firstName == familyName); + TitleDataItem titleSalutation = MakeTitleSalutation(isFemale); var newMember = new Member { FirstName = firstName, - LastName = random.PickFromList(FamilyNames.Data), + LastName = familyName, Title = titleSalutation.Title, Salutation = titleSalutation.Salutation, City = random.PickFromList(AddressData.Cities), diff --git a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs index 203cb485..db4f74f9 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs @@ -26,8 +26,17 @@ public string PhoneDigits() public T PickFromList(List list) { - var max = list.Count - 1; - var index = random.Next(max + 1); + if (list.Count == 0) + { + return default(T); + } + + if (list.Count == 1) + { + return list[0]; + } + + int index = random.Next(list.Count); return list[index]; } diff --git a/src/GiveCRM.DummyDataGenerator/Generator.cs b/src/GiveCRM.DummyDataGenerator/Generator.cs index d2cb101c..a520fa94 100644 --- a/src/GiveCRM.DummyDataGenerator/Generator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generator.cs @@ -88,6 +88,12 @@ internal void GenerateCampaign() internal void GenerateDonations(int minAmount, int maxAmount) { + if ((members == null) || (members.Count == 0)) + { + OnUpdate("Cannot generate donations before members have been loaded or generated"); + return; + } + OnUpdate("Generating donations"); DateTime startTime = DateTime.Now; DonationsGenerator generator = new DonationsGenerator(campaign, members); From 6795808948dcefcbc188a082d1b6d5e5596dca32 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Sat, 29 Oct 2011 17:42:20 +0100 Subject: [PATCH 12/14] Dummy data generator - allow multiple donations per member per campaign; generate some donations with fractions of a Pound/dollar --- .../Data/TownData.cs | 13 +++++ .../Generation/DonationsGenerator.cs | 48 ++++++++++++++++--- src/GiveCRM.DummyDataGenerator/Generator.cs | 4 +- .../GiveCRM.DummyDataGenerator.csproj | 1 + .../MainWindow.xaml | 20 ++++---- .../MainWindow.xaml.cs | 11 ++++- 6 files changed, 78 insertions(+), 19 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/Data/TownData.cs diff --git a/src/GiveCRM.DummyDataGenerator/Data/TownData.cs b/src/GiveCRM.DummyDataGenerator/Data/TownData.cs new file mode 100644 index 00000000..fc63fa7c --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/TownData.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + public class TownData + { + public string Town { get; set; } + + public IList PostalCodePrefixes { get; set; } + public string Region { get; set; } + public string Country { get; set; } + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs index 4c215dcc..ba2c9538 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/DonationsGenerator.cs @@ -32,7 +32,7 @@ public DonationsGenerator(Campaign campaign, ICollection members) donationRate = 33 + random.Next(33); } - internal IList Generate(int minAmount, int maxAmount) + internal IList Generate(int minAmount, int maxAmount, int donationCountMax) { if (minAmount <= 0) { @@ -48,26 +48,60 @@ internal IList Generate(int minAmount, int maxAmount) foreach (var member in members) { - if (random.Percent(donationRate)) - { - donations.Add(DonationForMember(member, minAmount, maxAmount)); - } + this.GenerateDonationsForMember(minAmount, maxAmount, donationCountMax, member, donations); } return donations; } + private void GenerateDonationsForMember(int minAmount, int maxAmount, int donationCountMax, + Member member, List donations) + { + for (int donationsForMember = 0; donationsForMember < donationCountMax; donationsForMember++) + { + if (this.random.Percent(this.donationRate)) + { + donations.Add(this.DonationForMember(member, minAmount, maxAmount)); + } + } + } + private Donation DonationForMember(Member member, int minAmount, int maxAmount) { DateTime backDate = DateTime.Today.AddDays(-1 * random.Next(100)); - int randomAmount = random.Next(minAmount, maxAmount + 1); + int amountInt = random.Next(minAmount, maxAmount + 1); + + decimal donationAmount = amountInt; + if (donationAmount < maxAmount) + { + donationAmount += RandomFaction(); + } + return new Donation { CampaignId = campaign.Id, MemberId = member.Id, Date = backDate, - Amount = randomAmount + Amount = donationAmount }; } + + private decimal RandomFaction() + { + // high cance that there is no factional amount + if (random.Percent(75)) + { + return 0m; + } + + // chance that it's a quarter, half or three quarters + if (random.Percent(50)) + { + return (decimal)random.Next(4) / 4; + } + + // random from .01 to 0.99 + return (decimal)random.Next(100) / 100; + } } } \ No newline at end of file diff --git a/src/GiveCRM.DummyDataGenerator/Generator.cs b/src/GiveCRM.DummyDataGenerator/Generator.cs index a520fa94..7bc73bb2 100644 --- a/src/GiveCRM.DummyDataGenerator/Generator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generator.cs @@ -86,7 +86,7 @@ internal void GenerateCampaign() OnUpdate(finalMessage); } - internal void GenerateDonations(int minAmount, int maxAmount) + internal void GenerateDonations(int minAmount, int maxAmount, int donationCountMax) { if ((members == null) || (members.Count == 0)) { @@ -97,7 +97,7 @@ internal void GenerateDonations(int minAmount, int maxAmount) OnUpdate("Generating donations"); DateTime startTime = DateTime.Now; DonationsGenerator generator = new DonationsGenerator(campaign, members); - IList newDonations = generator.Generate(minAmount, maxAmount); + IList newDonations = generator.Generate(minAmount, maxAmount, donationCountMax); string generateMessaged = string.Format("{0} donations generated", newDonations.Count); OnUpdate(generateMessaged); diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index cfafae04..e1139228 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -75,6 +75,7 @@ + diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml index c9defff9..16caee19 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml @@ -18,18 +18,22 @@ - - - - Donations range from - Donations range from + 5 - to - to + 100 - + + Maximum number of donations per member + 1 + + + + diff --git a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs index db441dbe..89aa1cce 100644 --- a/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs +++ b/src/GiveCRM.DummyDataGenerator/MainWindow.xaml.cs @@ -54,11 +54,12 @@ private void GenerateCampaignAndDonations(object sender, RoutedEventArgs e) { int donationMinAmount = ReadDonationAmountMin(); int donationMaxAmount = ReadDonationAmountMax(); + int donationCountMax = ReadDonationCountMax(); ThreadPool.QueueUserWorkItem(o => { generator.GenerateCampaign(); - generator.GenerateDonations(donationMinAmount, donationMaxAmount); + generator.GenerateDonations(donationMinAmount, donationMaxAmount, donationCountMax); }); } @@ -66,8 +67,9 @@ private void GenerateDonations(object sender, RoutedEventArgs e) { int donationMinAmount = ReadDonationAmountMin(); int donationMaxAmount = ReadDonationAmountMax(); + int donationCountMax = ReadDonationCountMax(); - ThreadPool.QueueUserWorkItem(o => generator.GenerateDonations(donationMinAmount, donationMaxAmount)); + ThreadPool.QueueUserWorkItem(o => generator.GenerateDonations(donationMinAmount, donationMaxAmount, donationCountMax)); } private int ReadMemberCount() @@ -86,6 +88,11 @@ private int ReadDonationAmountMax() return StringToIntWithDefault(donationAmountMaxText.Text, 100); } + private int ReadDonationCountMax() + { + return StringToIntWithDefault(donationCountMaxText.Text, 1); + } + private int StringToIntWithDefault(string stringValue, int defaultValue) { if (string.IsNullOrEmpty(stringValue)) From 962a2d890cc3f92bf9f3f71c0a2e7e1f406c34f3 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Sat, 29 Oct 2011 22:00:02 +0100 Subject: [PATCH 13/14] Dummy data generator - much better UK town data --- .../Data/AddressData.cs | 46 ----- .../Data/TitleDataItem.cs | 5 + .../Data/TownData.cs | 188 +++++++++++++++++- .../Data/TownDataItem.cs | 18 ++ .../Generation/MemberGenerator.cs | 15 +- .../Generation/RandomSource.cs | 2 +- .../GiveCRM.DummyDataGenerator.csproj | 1 + 7 files changed, 216 insertions(+), 59 deletions(-) create mode 100644 src/GiveCRM.DummyDataGenerator/Data/TownDataItem.cs diff --git a/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs b/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs index 44a0cc44..8b24ae26 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs @@ -109,51 +109,5 @@ internal static class AddressData "Drive", "Walk" }; - - - internal static List Cities = new List - { - "London", - "Manchester", - "Birmingham", - "Bradford", - "Brighton", - "Cambridge", - "Derby", - "Leeds", - "Leicester", - "Liverpool", - "Newcastle", - "Norwich", - "Nottingham", - "Oxford", - "Plymouth", - "Sheffield", - "Southhampton", - "York", - "Edinburgh", - "Glasgow", - "Cardiff", - "Newport", - "Belfast", - }; - - internal static List PostCodes = new List - { - "N", - "S", - "E", - "W", - "NE", - "NW", - "SE", - "SW", - "YO", - "BR", - "AR", - "CD", - "DE", - "HI" - }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs b/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs index 864da47e..3bcfc799 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/TitleDataItem.cs @@ -11,5 +11,10 @@ public TitleDataItem(string title, string salutation) this.Title = title; this.Salutation = salutation; } + + public override string ToString() + { + return Title + " " + Salutation; + } } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/TownData.cs b/src/GiveCRM.DummyDataGenerator/Data/TownData.cs index fc63fa7c..0ed5c55e 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/TownData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/TownData.cs @@ -2,12 +2,188 @@ namespace GiveCRM.DummyDataGenerator.Data { - public class TownData + internal static class TownData { - public string Town { get; set; } - - public IList PostalCodePrefixes { get; set; } - public string Region { get; set; } - public string Country { get; set; } + /// + /// The largest ccities in the UK + /// + internal static List Data = new List + { + new TownDataItem + { + Town = "London", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "N", "E", "W", "NW", "SE", "SW" } + }, + new TownDataItem + { + Town = "Birmingham", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "B" } + }, + new TownDataItem + { + Town = "Leeds", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "LS" } + }, + new TownDataItem + { + Town = "Glasgow", Region = "Scotland", Country = "United Kingdom", + PostalCodePrefixes = new List { "G" } + }, + new TownDataItem + { + Town = "Sheffield", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "S" } + }, + new TownDataItem + { + Town = "Bradford", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "BD" } + }, + new TownDataItem + { + Town = "Edinburgh", Region = "Scotland", Country = "United Kingdom", + PostalCodePrefixes = new List { "EH" } + }, + new TownDataItem + { + Town = "Liverpool", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "L" } + }, + new TownDataItem + { + Town = "Manchester", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "M" } + }, + new TownDataItem + { + Town = "Bristol", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "BS" } + }, + new TownDataItem + { + Town = "Wakefield", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "WF" } + }, + new TownDataItem + { + Town = "Cardiff", Region = "Wales", Country = "United Kingdom", + PostalCodePrefixes = new List { "CF" } + }, + new TownDataItem + { + Town = "Coventry", Region = "Wales", Country = "United Kingdom", + PostalCodePrefixes = new List { "CV" } + }, + new TownDataItem + { + Town = "Nottingham", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "NG" } + }, + new TownDataItem + { + Town = "Leicester", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "LE" } + }, + new TownDataItem + { + Town = "Sunderland", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "SR" } + }, + new TownDataItem + { + Town = "Belfast", Region = "Northern Ireland", Country = "United Kingdom", + PostalCodePrefixes = new List { "BT" } + }, + new TownDataItem + { + Town = "Newcastle upon Tyne", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "NE" } + }, + new TownDataItem + { + Town = "Brighton", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "BN" } + }, + new TownDataItem + { + Town = "Hull", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "HU" } + }, + new TownDataItem + { + Town = "Plymouth", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "PL" } + }, + new TownDataItem + { + Town = "Stoke-on-Trent", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "ST" } + }, + new TownDataItem + { + Town = "Wolverhampton", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "WV" } + }, + new TownDataItem + { + Town = "Derby", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "DE" } + }, + new TownDataItem + { + Town = "Swansea", Region = "Wales", Country = "United Kingdom", + PostalCodePrefixes = new List { "SA" } + }, + new TownDataItem + { + Town = "Southampton", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "SO" } + }, + new TownDataItem + { + Town = "Salford", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "M" } + }, + new TownDataItem + { + Town = "Aberdeen", Region = "Scotland", Country = "United Kingdom", + PostalCodePrefixes = new List { "AB" } + }, + new TownDataItem + { + Town = "Portsmouth", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "PO" } + }, + new TownDataItem + { + Town = "York", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "YO" } + }, + new TownDataItem + { + Town = "Peterborough", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "PE" } + }, + new TownDataItem + { + Town = "Dundee", Region = "Scotland", Country = "United Kingdom", + PostalCodePrefixes = new List { "DD" } + }, + new TownDataItem + { + Town = "Lancaster", Region = "Scotland", Country = "United Kingdom", + PostalCodePrefixes = new List { "LA" } + }, + new TownDataItem + { + Town = "Oxford", Region = "England", Country = "United Kingdom", + PostalCodePrefixes = new List { "OX" } + }, + new TownDataItem + { + Town = "Newport", Region = "Wales", Country = "United Kingdom", + PostalCodePrefixes = new List { "NP" } + }, + }; } } diff --git a/src/GiveCRM.DummyDataGenerator/Data/TownDataItem.cs b/src/GiveCRM.DummyDataGenerator/Data/TownDataItem.cs new file mode 100644 index 00000000..161ec6f0 --- /dev/null +++ b/src/GiveCRM.DummyDataGenerator/Data/TownDataItem.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; + +namespace GiveCRM.DummyDataGenerator.Data +{ + public class TownDataItem + { + public string Town { get; set; } + + public IList PostalCodePrefixes { get; set; } + public string Region { get; set; } + public string Country { get; set; } + + public override string ToString() + { + return Town + " " + Region + " " + Country; + } + } +} diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index d117b083..277341c0 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -48,8 +48,6 @@ private Member GenerateMember() LastName = familyName, Title = titleSalutation.Title, Salutation = titleSalutation.Salutation, - City = random.PickFromList(AddressData.Cities), - Country = "United Kingdom" }; newMember.Reference = this.NextReference(newMember); @@ -119,8 +117,13 @@ private void MakeStreetAddress(Member member) generatedPostalAddresses.Add(streetAddress, true); member.AddressLine1 = streetAddress; - member.PostalCode = RandomPostalCode(); - member.City = random.PickFromList(AddressData.Cities); + TownDataItem townData = random.PickFromList(TownData.Data); + string postCodePrefix = random.PickFromList(townData.PostalCodePrefixes); + + member.PostalCode = RandomPostalCode(postCodePrefix); + member.City = townData.Town; + member.Region = townData.Region; + member.Country = townData.Country; } private string GenerateStreetAddress() @@ -138,9 +141,9 @@ private string GenerateStreetAddress() return streetNumber + " " + street; } - private string RandomPostalCode() + private string RandomPostalCode(string prefix) { - return random.PickFromList(AddressData.PostCodes) + random.Next(10) + " " + + return prefix + random.Next(10) + " " + random.Next(10) + random.Letter() + random.Letter(); } diff --git a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs index db4f74f9..30c50cc1 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/RandomSource.cs @@ -24,7 +24,7 @@ public string PhoneDigits() return prefix + random.Next(10000).ToString("0000") + random.Next(10000).ToString("0000"); } - public T PickFromList(List list) + public T PickFromList(IList list) { if (list.Count == 0) { diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index e1139228..c097b69d 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -76,6 +76,7 @@ + From 0236d8b37492eb7de3d52d2eb6bf79804d2ab1b0 Mon Sep 17 00:00:00 2001 From: AnthonySteele Date: Sun, 30 Oct 2011 22:19:30 +0000 Subject: [PATCH 14/14] tidied up street name data --- .../Data/FamilyNames.cs | 1 + .../Data/FemaleNames.cs | 1 + .../Data/MaleNames.cs | 1 + .../Data/{AddressData.cs => StreetData.cs} | 149 +++++++++++------- .../Generation/MemberGenerator.cs | 4 +- .../GiveCRM.DummyDataGenerator.csproj | 2 +- 6 files changed, 98 insertions(+), 60 deletions(-) rename src/GiveCRM.DummyDataGenerator/Data/{AddressData.cs => StreetData.cs} (67%) diff --git a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs index 982a2f0c..74635df5 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FamilyNames.cs @@ -35,6 +35,7 @@ internal static class FamilyNames "Bell", "Bennett", "Berry", + "Black", "Booth", "Brooke", "Brown", diff --git a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs index b8085994..436361a2 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/FemaleNames.cs @@ -64,6 +64,7 @@ internal static class FemaleNames "Helen", "Hermione", "Irene", + "Iris", "Jacqueline", "Jade", "Jane", diff --git a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs index ed4269e3..078df6cd 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/MaleNames.cs @@ -11,6 +11,7 @@ internal static class MaleNames "Adam", "Alan", "Albert", + "Alexander", "Alistair", "Anders", "Andrew", diff --git a/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs b/src/GiveCRM.DummyDataGenerator/Data/StreetData.cs similarity index 67% rename from src/GiveCRM.DummyDataGenerator/Data/AddressData.cs rename to src/GiveCRM.DummyDataGenerator/Data/StreetData.cs index 8b24ae26..4a4ad870 100644 --- a/src/GiveCRM.DummyDataGenerator/Data/AddressData.cs +++ b/src/GiveCRM.DummyDataGenerator/Data/StreetData.cs @@ -2,7 +2,7 @@ { using System.Collections.Generic; - internal static class AddressData + internal static class StreetData { internal static List StreetNamePrefix = new List { @@ -13,6 +13,10 @@ internal static class AddressData "", "", "", + "", + "", + "", + "", "Upper", "Lower", "New", @@ -21,80 +25,111 @@ internal static class AddressData internal static List StreetNames = new List { - "Station", - "Main", - "Park", - "Church", - "London", - "Victoria", - "Green", - "Blue", - "Red", - "Black", - "White", - "White", - "White", - "Manor", - "Queens", - "Grange", - "Kings", - "Windsor", - "Highfield", - "Mill", - "Alexander", - "York", - "St Johns", - "Broadway", - "Springfield", - "George", - "Victoria", - "West", - "North", - "Manchester", - "Richmond", - "South", - "School", - "Stanley", - "Chester", - "Mill", "Abbey", + "Albert", + "Amberley", + "Apple", + "Arbutus", + "Aster", + "Atlee", "Baker", - "Bond", "Bedford", + "Belgrave", + "Belsize", "Berkley", - "Russel", - "Rose", - "Rose", - "Petunia", - "Dafodil", - "Daisy", - "Lily", - "Thistle", + "Black", "Bloom", - "Carnation", - "Goat", + "Blue", + "Bond", + "Boundary", + "Broadway", "Camp", - "Flamingo", + "Carnation", "Cherry", - "Apple", - "Orchard", - "Pear", - "Orange", - "Vine", + "Chester", + "Church", + "Churchill", + "Clifton", + "Cressida", + "Crocus", + "Cromwell", + "Daffodil", + "Dahlia", + "Daisy", + "Dandelion", + "Dartmouth", + "Eucalyptus", + "Flamingo", + "Foxglove", + "George", + "Geranium", "Ginger", + "Goat", + "Grange", + "Green", + "Heath", + "High", + "Highfield", + "Hollyhock", + "Honeysuckle", "Hyacinth", + "Kings", + "Lancaster", + "Larch", "Lavender", "Lilac", + "Lily", + "London", "Lupin", + "Main", + "Manchester", + "Manor", + "Maple", + "Mill", "Mimosa", + "Mountain", + "Newlands", + "North", + "Nut", + "Orange", + "Orchard", + "Orchid", + "Park", + "Pear", + "Peony", + "Petunia", + "Pitt", "Protea", + "Queens", + "Red", + "Rhododendron", + "Richmond", + "Rose", + "Russel", + "School", "Snapdragon", + "Sorrel", + "South", + "Springfield", + "St George", + "St Johns", + "Stanley", + "Station", + "Sunflower", + "Sutherland", "Tansy", + "Thistle", "Tulip", + "Verbena", + "Victoria", + "Vine", + "West", + "White", + "Winchester", + "Windsor", + "Wisteria", "Yarrow", - "Churchill", - "Pitt", - "Atlee" + "York" }; internal static List StreetSuffix = new List diff --git a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs index 277341c0..a6fcafea 100644 --- a/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs +++ b/src/GiveCRM.DummyDataGenerator/Generation/MemberGenerator.cs @@ -128,8 +128,8 @@ private void MakeStreetAddress(Member member) private string GenerateStreetAddress() { - string street = random.PickFromList(AddressData.StreetNamePrefix) + " " - + random.PickFromList(AddressData.StreetNames) + " " + random.PickFromList(AddressData.StreetSuffix); + string street = random.PickFromList(StreetData.StreetNamePrefix) + " " + + random.PickFromList(StreetData.StreetNames) + " " + random.PickFromList(StreetData.StreetSuffix); street = street.Trim(); string streetNumber = (random.Next(200) + 1).ToString(); diff --git a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj index c097b69d..e0704c9c 100644 --- a/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj +++ b/src/GiveCRM.DummyDataGenerator/GiveCRM.DummyDataGenerator.csproj @@ -79,7 +79,7 @@ - +