示例#1
0
        protected override MarketResult ConvertResult(YahooManaged.Base.ConnectionInfo connInfo, System.IO.Stream stream, YahooManaged.Base.SettingsBase settings)
        {
            MarketDownloadSettings set = (MarketDownloadSettings)settings;

            if (set.Sectors != null)
            {
                List <SectorData> sectors = new List <SectorData>();
                System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
                XDocument  doc     = MyHelper.ParseXmlDocument(stream);
                XElement[] results = XPath.GetElements("//sector", doc);
                foreach (XElement node in results)
                {
                    System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture;
                    if (culture != null)
                    {
                        ci = culture;
                    }
                    SectorData sect    = new SectorData();
                    string     nameAtt = MyHelper.GetXmlAttributeValue(node, FinanceHelper.NameMarketName);
                    if (nameAtt != string.Empty)
                    {
                        for (Sector s = 0; s <= Sector.Utilities; s++)
                        {
                            if (s.ToString().Replace("_", " ") == nameAtt)
                            {
                                sect.ID = s;
                                break; // TODO: might not be correct. Was : Exit For
                            }
                        }
                    }
                    foreach (XElement industryNode in node.Elements())
                    {
                        if (industryNode.Name.LocalName == "industry")
                        {
                            IndustryData ind = new IndustryData();
                            foreach (XAttribute att in industryNode.Attributes())
                            {
                                if (att.Name.LocalName == FinanceHelper.NameIndustryID)
                                {
                                    int i = 0;
                                    int.TryParse(att.Value, out i);
                                    if (i != 0)
                                    {
                                        ind.ID = (Industry)i;
                                    }
                                }
                                else if (att.Name.LocalName == FinanceHelper.NameMarketName)
                                {
                                    ind.Name = att.Value;
                                }
                            }
                            sect.Industries.Add(ind);
                        }
                    }
                    sectors.Add(sect);
                }
                return(new SectorResult(sectors.ToArray()));
            }
            else if (set.Industries != null)
            {
                List <IndustryData> industries           = new List <IndustryData>();
                System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
                XDocument  doc     = MyHelper.ParseXmlDocument(stream);
                XElement[] results = XPath.GetElements("//industry", doc);
                foreach (XElement node in results)
                {
                    IndustryData ind = new IndustryData();
                    foreach (XAttribute att in node.Attributes())
                    {
                        if (att.Name.LocalName == FinanceHelper.NameIndustryID)
                        {
                            int i = 0;
                            int.TryParse(att.Value, out i);
                            if (i != 0)
                            {
                                ind.ID = (Industry)i;
                            }
                        }
                        else if (att.Name.LocalName == FinanceHelper.NameMarketName)
                        {
                            ind.Name = att.Value;
                        }
                    }
                    foreach (XElement companyNode in node.Elements())
                    {
                        if (companyNode.Name.LocalName == "company")
                        {
                            CompanyInfoData comp = new CompanyInfoData();
                            foreach (XAttribute att in companyNode.Attributes())
                            {
                                if (att.Name.LocalName == FinanceHelper.NameCompanySymbol)
                                {
                                    comp.SetID(att.Value);
                                }
                                else if (att.Name.LocalName == FinanceHelper.NameMarketName)
                                {
                                    comp.Name = att.Value;
                                }
                            }
                            ind.Companies.Add(comp);
                        }
                    }
                    industries.Add(ind);
                }
                return(new IndustryResult(industries.ToArray()));
            }
            else
            {
                return(null);
            }
        }
示例#2
0
        protected override CompanyInfoResult ConvertResult(YahooManaged.Base.ConnectionInfo connInfo, System.IO.Stream stream, YahooManaged.Base.SettingsBase settings)
        {
            List <CompanyInfoData> companies = new List <CompanyInfoData>();

            System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
            XDocument doc = MyHelper.ParseXmlDocument(stream);

            XElement[] results = XPath.GetElements("//stock", doc);
            foreach (XElement node in results)
            {
                CompanyInfoData stk  = new CompanyInfoData();
                string          name = MyHelper.GetXmlAttributeValue(node, FinanceHelper.NameCompanySymbol);
                if (name != string.Empty)
                {
                    stk.SetID(name.ToUpper());
                }
                foreach (XElement propertyNode in node.Elements())
                {
                    switch (propertyNode.Name.LocalName)
                    {
                    case FinanceHelper.NameCompanyCompanyName:
                        stk.Name = propertyNode.Value;
                        break;

                    case FinanceHelper.NameCompanyStart:
                        System.DateTime dte1 = default(System.DateTime);
                        if (System.DateTime.TryParse(propertyNode.Value.Replace(FinanceHelper.NameCompanyNotAvailable, "1"), culture, System.Globalization.DateTimeStyles.AssumeUniversal, out dte1))
                        {
                            stk.StartDate = dte1;
                        }
                        break;

                    case FinanceHelper.NameCompanyEnd:
                        string dateStr = string.Empty;
                        if (propertyNode.Value.IndexOf(FinanceHelper.NameCompanyNotAvailable) > -1)
                        {
                            string[] dates = propertyNode.Value.Split('-');
                            if (dates.Length >= 3)
                            {
                                if (dates[0].IndexOf(FinanceHelper.NameCompanyNotAvailable) > -1)
                                {
                                    dateStr += System.DateTime.Now.Year.ToString() + "-";
                                }
                                else
                                {
                                    dateStr += dates[0] + "-";
                                }
                                if (dates[1].IndexOf(FinanceHelper.NameCompanyNotAvailable) > -1)
                                {
                                    dateStr += System.DateTime.Now.Month.ToString() + "-";
                                }
                                else
                                {
                                    dateStr += dates[1] + "-";
                                }
                                if (dates[2].IndexOf(FinanceHelper.NameCompanyNotAvailable) > -1)
                                {
                                    dateStr += System.DateTime.Now.Day.ToString() + "-";
                                }
                                else
                                {
                                    dateStr += dates[2];
                                }
                                if (dates.Length > 3)
                                {
                                    dateStr += "-";
                                    for (int i = 3; i <= dates.Length - 1; i++)
                                    {
                                        dateStr += dates[i] + "-";
                                    }
                                }
                            }
                            else
                            {
                                dateStr = propertyNode.Value.Replace(FinanceHelper.NameCompanyNotAvailable, System.DateTime.Now.Month.ToString());
                            }
                        }
                        System.DateTime dte2;
                        if (System.DateTime.TryParse(dateStr, culture, System.Globalization.DateTimeStyles.AssumeUniversal, out dte2))
                        {
                            stk.EndDate = dte2;
                        }
                        break;

                    case FinanceHelper.NameCompanySector:
                        stk.SectorName = propertyNode.Value;
                        break;

                    case FinanceHelper.NameCompanyIndustry:
                        stk.IndustryName = propertyNode.Value;
                        break;

                    case FinanceHelper.NameCompanyFullTimeEmployees:
                        int i2 = 0;
                        if (int.TryParse(propertyNode.Value, System.Globalization.NumberStyles.Any, culture, out i2))
                        {
                            stk.FullTimeEmployees = i2;
                        }
                        break;
                    }
                }
                companies.Add(stk);
            }
            return(new CompanyInfoResult(companies.ToArray()));
        }