public static void StoreCorp(PublicCorp data) { bool newRow = false; EMMADataSet.PublicCorpsDataTable table = new EMMADataSet.PublicCorpsDataTable(); EMMADataSet.PublicCorpsRow row; tableAdapter.FillByID(table, data.ID); if (table.Count > 0) { row = table[0]; } else { row = table.NewPublicCorpsRow(); newRow = true; } row.CorpName = data.Name; row.Ticker = data.Ticker; row.Description = data.Description; row.CEO = data.CEO; row.EstimatedNAV = data.NAV; row.NAVTakenAt = data.NAVDate; row.ValuePerShare = data.ShareValue; row.ExpectedPayoutPerShare = data.ExpectedPayout; row.PayoutPeriodID = (short)data.PayoutPeriod; row.Bank = data.Bank; row.RiskRatingID = (short)data.CorpRiskRating; if (newRow) { table.AddPublicCorpsRow(row); } tableAdapter.Update(table); }
public static void LoadOldEmmaXML(string filename, ref Dictionary<int, int> IDChanges) { EMMADataSet.PublicCorpsDataTable table = new EMMADataSet.PublicCorpsDataTable(); XmlDocument xml = new XmlDocument(); xml.Load(filename); XmlNodeList nodes = xml.SelectNodes("/DocumentElement/PublicCorps"); int counter = 0; //UpdateStatus(0, 0, "", "Extracting data from XML", false); foreach (XmlNode node in nodes) { string corpName = node.SelectSingleNode("CorpName").FirstChild.Value; PublicCorp existingCorp = null; int oldID = int.Parse(node.SelectSingleNode("CorpID").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); decimal nav = decimal.Parse(node.SelectSingleNode("EstimatedNAV").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); DateTime navDate = DateTime.Parse(node.SelectSingleNode("NAVTakenAt").FirstChild.Value); string payoutPeriod = node.SelectSingleNode("PayoutPeriod").FirstChild.Value; CorpPayoutPeriod period = CorpPayoutPeriod.Unspecified; if (payoutPeriod.Equals("Monthly")) { period = CorpPayoutPeriod.Monthly30; } else if (payoutPeriod.Equals("BiMonthly")) { period = CorpPayoutPeriod.BiMonthly; } else if (payoutPeriod.Equals("Weekly")) { period = CorpPayoutPeriod.Weekly; } else if (payoutPeriod.Equals("Dayley") || payoutPeriod.Equals("Dailey")) { period = CorpPayoutPeriod.Dailey; } else if (payoutPeriod.Equals("Quaterly")) { period = CorpPayoutPeriod.Quaterly; } decimal shareValue = decimal.Parse(node.SelectSingleNode("ValuePerShare").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); decimal expectedPayout = decimal.Parse(node.SelectSingleNode("ExpectedPayoutPerShare").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture.NumberFormat); XmlNode tickerNode = node.SelectSingleNode("Ticker"); string ticker = ""; if (tickerNode.FirstChild != null) { ticker = tickerNode.FirstChild.Value; } XmlNode descNode = node.SelectSingleNode("Description"); string description = ""; if (descNode.FirstChild != null) { description = descNode.FirstChild.Value; } XmlNode ceoNode = node.SelectSingleNode("CEO"); string ceo = ""; if (ceoNode.FirstChild != null) { ceo = ceoNode.FirstChild.Value; } try { existingCorp = GetCorp(corpName); if (existingCorp.NAV == 0) { existingCorp.NAV = nav; existingCorp.NAVDate = navDate; } if (existingCorp.PayoutPeriod == CorpPayoutPeriod.Unspecified) { existingCorp.PayoutPeriod = period; } if (existingCorp.ShareValue == 0) { existingCorp.ShareValue = shareValue; } if (existingCorp.Ticker.Length == 0) { existingCorp.Ticker = ticker; } if (existingCorp.Description.Length == 0) { existingCorp.Description = description; } if (existingCorp.CEO.Length == 0) { existingCorp.CEO = ceo; } if (existingCorp.ExpectedPayout == 0) { existingCorp.ExpectedPayout = expectedPayout; } StoreCorp(existingCorp); } catch (EMMADataMissingException) { EMMADataSet.PublicCorpsRow corp = table.NewPublicCorpsRow(); corp.CorpName = corpName; corp.Description = description; corp.CEO = ceo; corp.Ticker = ticker; corp.EstimatedNAV = nav; corp.NAVTakenAt = navDate; corp.ExpectedPayoutPerShare = expectedPayout; corp.ValuePerShare = shareValue; corp.PayoutPeriodID = (short)period; corp.Bank = false; table.AddPublicCorpsRow(corp); lock (tableAdapter) { tableAdapter.Update(corp); corp.AcceptChanges(); } } PublicCorp newCorp = GetCorp(corpName); IDChanges.Add(oldID, newCorp.ID); counter++; //UpdateStatus(counter, nodes.Count, "", "", false); } //UpdateStatus(1, 1, "", "Complete", false); //UpdateStatus(0, 0, "", "Updating database", false); lock (tableAdapter) { tableAdapter.Update(table); } //UpdateStatus(1, 1, "", "Complete", false); }