/// <summary> /// Creates Sample Data using the raw data provided and exports this to the Petra Server /// </summary> /// <param name="args"></param> public static void Main(string[] args) { TLogging.Log("Running Sample Data Constructor"); try { TLogging.Log("(1) Initialize (check availability of resources, start the server)"); TLogging.Log("\tStarting the server..."); // use the config file defined on the command line with -C: TPetraServerConnector.Connect(string.Empty); // data directory containing the raw data files created by benerator string datadirectory = TAppSettingsManager.GetValue("dir.data.generated"); string operation = TAppSettingsManager.GetValue("operation", "importPartners"); if ((operation == "importPartners") || (operation == "all")) { TLogging.Log("(2) Import partners"); SampleDataBankPartners.GenerateBanks( Path.Combine(datadirectory, "banks.csv")); SampleDataDonors.GenerateFamilyPartners( Path.Combine(datadirectory, "people.csv")); TLogging.Log("(3) Import organisations"); SampleDataOrganisations.GenerateOrganisationPartners( Path.Combine(datadirectory, "organisations.csv")); } TLogging.Log("(4) Import recipients"); operation = TAppSettingsManager.GetValue("operation", "importRecipients"); if ((operation == "importRecipients") || (operation == "all")) { // parse random data generated by benerator SampleDataUnitPartners.GenerateFields( Path.Combine(datadirectory, "fields.csv")); SampleDataUnitPartners.GenerateKeyMinistries( Path.Combine(datadirectory, "keymins.csv")); SampleDataWorkers.GenerateWorkers( Path.Combine(datadirectory, "workers.csv")); } operation = TAppSettingsManager.GetValue("operation", "populateFirstLedger"); if ((operation == "populateFirstLedger") || (operation == "all")) { SampleDataLedger.FLedgerNumber = 43; SampleDataLedger.FNumberOfClosedPeriods = TAppSettingsManager.GetInt32("NumberOfClosedPeriods", 26); SampleDataLedger.InitCalendar(); SampleDataLedger.InitExchangeRate(); SampleDataLedger.PopulateData(datadirectory); } if (operation == "secondLedger") { TLogging.Log("creating a second ledger"); SampleDataLedger.FLedgerNumber = 44; SampleDataLedger.FNumberOfClosedPeriods = 6; SampleDataLedger.CreateNewLedger(); SampleDataLedger.InitExchangeRate(); SampleDataUnitPartners.FLedgerNumber = SampleDataLedger.FLedgerNumber; SampleDataUnitPartners.GenerateFieldsFinanceOnly( Path.Combine(datadirectory, "fields.csv")); SampleDataLedger.PopulateData(datadirectory); } else { TLogging.Log("Please explicitely run nant importDemodata -D:operation=secondLedger"); } TLogging.Log("(9) Creating applications for conference"); operation = TAppSettingsManager.GetValue("operation", "conferenceApplications"); if (operation == "conferenceApplications") { SampleDataConferenceApplicants.GenerateApplications(Path.Combine(datadirectory, "conferenceApplications.csv")); } else { TLogging.Log("Please explicitely run nant importDemodata -D:operation=conferenceApplications"); } TLogging.Log("Completed."); } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); Environment.Exit(-1); } }
/// <summary> /// Creates Sample Data using the raw data provided and exports this to the Petra Server /// </summary> /// <param name="args"></param> public static void Main(string[] args) { TLogging.Log("Running Sample Data Constructor"); try { TLogging.Log("(1) Initialize (check availability of resources, start the server)"); TLogging.Log("\tStarting the server..."); // use the config file defined on the command line with -C: TPetraServerConnector.Connect(string.Empty); // data directory containing the raw data files created by benerator string datadirectory = TAppSettingsManager.GetValue("dir.data.generated"); eOperations operation = eOperations.importPartners | eOperations.importRecipients | eOperations.ledgerOneYear; if (TAppSettingsManager.GetValue("operation", false) == "secondLedger") { operation = eOperations.secondLedger; } else if (TAppSettingsManager.GetValue("operation", false) == "ledgerMultipleYears") { operation = eOperations.importPartners | eOperations.importRecipients | eOperations.ledgerMultipleYears; } if ((int)(operation & eOperations.importPartners) > 0) { TLogging.Log("(2) Import partners"); SampleDataBankPartners.GenerateBanks( Path.Combine(datadirectory, "banks.csv")); SampleDataDonors.GenerateFamilyPartners( Path.Combine(datadirectory, "people.csv")); TLogging.Log("(3) Import organisations"); SampleDataOrganisations.GenerateOrganisationPartners( Path.Combine(datadirectory, "organisations.csv")); } TLogging.Log("(4) Import recipients"); if ((int)(operation & eOperations.importRecipients) > 0) { // parse random data generated by benerator SampleDataUnitPartners.GenerateFields( Path.Combine(datadirectory, "fields.csv")); SampleDataUnitPartners.GenerateKeyMinistries( Path.Combine(datadirectory, "keymins.csv")); SampleDataWorkers.GenerateWorkers( Path.Combine(datadirectory, "workers.csv")); } if ((int)(operation & eOperations.ledgerOneYear) > 0) { SampleDataLedger.FLedgerNumber = 43; SampleDataLedger.FNumberOfClosedPeriods = CalculatedNumberOfClosedPeriods(0); SampleDataLedger.InitCalendar(); SampleDataLedger.InitExchangeRate(); SampleDataLedger.PopulateData(datadirectory, true); TLogging.Log("Please explicitely run nant importDemodata -D:operation=secondLedger"); TLogging.Log(" or nant importDemodata -D:operation=ledgerMultipleYears"); } if ((int)(operation & eOperations.ledgerMultipleYears) > 0) { SampleDataLedger.FLedgerNumber = 43; SampleDataLedger.FNumberOfClosedPeriods = TAppSettingsManager.GetInt32("NumberOfClosedPeriods", CalculatedNumberOfClosedPeriods(2)); SampleDataLedger.InitCalendar(); SampleDataLedger.InitExchangeRate(); SampleDataLedger.PopulateData(datadirectory, true); } if ((int)(operation & eOperations.secondLedger) > 0) { TLogging.Log("creating a second ledger"); // this ledger starts in period 4 SampleDataLedger.FLedgerNumber = 44; SampleDataLedger.FNumberOfClosedPeriods = CalculatedNumberOfClosedPeriods(0) - 3; SampleDataLedger.CreateNewLedger(); SampleDataLedger.InitExchangeRate(); SampleDataUnitPartners.FLedgerNumber = SampleDataLedger.FLedgerNumber; SampleDataLedger.PopulateData(datadirectory); } TLogging.Log("Completed."); } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); Environment.Exit(-1); } }
/// <summary> /// generate the partners from a text file that was generated with Benerator /// </summary> /// <param name="AInputBeneratorFile"></param> public static void GenerateFamilyPartners(string AInputBeneratorFile) { TDataBase db = DBAccess.Connect("GenerateFamilyPartners"); TDBTransaction Transaction = db.BeginTransaction(IsolationLevel.ReadCommitted); // get a list of banks (all class BANK) string sqlGetBankPartnerKeys = "SELECT p_partner_key_n FROM PUB_p_bank"; DataTable BankKeys = db.SelectDT(sqlGetBankPartnerKeys, "keys", Transaction); Transaction.Rollback(); PartnerEditTDS MainDS = new PartnerEditTDS(); // AlanP: May 2016 - We may no longer need the UTF8 because the method now automatically discovers the encoding even with no BOM XmlDocument doc = TCsv2Xml.ParseCSVFile2Xml(AInputBeneratorFile, ",", Encoding.UTF8); XmlNode RecordNode = doc.FirstChild.NextSibling.FirstChild; while (RecordNode != null) { string familySituation = TXMLParser.GetAttribute(RecordNode, "familySituation"); PFamilyRow familyRecord = null; PPartnerRow FamilyPartnerRow = null; if (familySituation == "singleMan") { familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Male", MainDS); SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Male", MainDS); } else if (familySituation == "singleWoman") { familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Female", MainDS); SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Female", MainDS); } else if (familySituation == "family") { familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Male", MainDS); SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Male", MainDS); SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Female", MainDS); int NumberOfChildren = Convert.ToInt32(TXMLParser.GetAttribute(RecordNode, "numberOfChildren")); if (NumberOfChildren > 0) { FamilyPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(familyRecord.PartnerKey); FamilyPartnerRow.AddresseeTypeCode = MPartnerConstants.ADDRESSEETYPE_FAMILY; } } FamilyPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(familyRecord.PartnerKey); FamilyPartnerRow.ReceiptEachGift = false; FamilyPartnerRow.ReceiptLetterFrequency = "Annual"; SampleDataWorkers.GenerateAddressForFamily(RecordNode, familyRecord, MainDS); SampleDataWorkers.GenerateBankDetails(RecordNode, familyRecord, MainDS, BankKeys); if (MainDS.PFamily.Rows.Count % 100 == 0) { TLogging.Log("created donor " + MainDS.PFamily.Rows.Count.ToString() + " " + familyRecord.FamilyName); } RecordNode = RecordNode.NextSibling; } // we do not save person records for normal family partners MainDS.PPerson.Clear(); // need to clear all partner records of the PERSON partners as well DataView PersonPartners = new DataView(MainDS.PPartner); PersonPartners.RowFilter = string.Format("{0} = '{1}'", PPartnerTable.GetPartnerClassDBName(), MPartnerConstants.PARTNERCLASS_PERSON); DataView PartnerLocations = new DataView(MainDS.PPartnerLocation); foreach (DataRowView rv in PersonPartners) { PPartnerRow partnerRow = (PPartnerRow)rv.Row; PartnerLocations.RowFilter = string.Format("{0} = {1}", PPartnerLocationTable.GetPartnerKeyDBName(), partnerRow.PartnerKey); PartnerLocations[0].Row.Delete(); partnerRow.Delete(); } MainDS.ThrowAwayAfterSubmitChanges = true; PartnerEditTDSAccess.SubmitChanges(MainDS); TLogging.Log("after saving donors"); }