Пример #1
0
        static void save(StockSplitInfo[] infos, splitType filename)
        {
            var data = tryGet(a => true, filename);
            var ex   = infos.Except(data);

            if (!ex.Any())
            {
                StockPriceManager.SetMessage(DataSource.KabuDotCom, "新規データが存在しなかったため書き込み処理をスキップしました。");
                return;
            }

            if (!Directory.Exists(localPath))
            {
                Directory.CreateDirectory(localPath);
            }
            string tgtPath = localPath + filename.toFileName();

            try {
                using (FileStream f = new FileStream(tgtPath, FileMode.Create)) {
                    var seri = new XmlSerializer(typeof(StockSplitInfo[]));
                    seri.Serialize(f, data.Union(infos).ToArray());
                    StockPriceManager.SetMessage(DataSource.KabuDotCom, filename.toDisplayName() + "データを保存しました。");
                }
            } catch (Exception e) {
                StockPriceManager.SetMessage(new ManagementMessage()
                {
                    Sender  = DataSource.KabuDotCom,
                    Signal  = MessageSignal.Error,
                    Message = "書き込み処理に失敗しました。",
                    Detail  = e.Message,
                });
            }
        }
Пример #2
0
 private static string getUrl(this splitType _self)
 {
     if (_self == splitType.split)
     {
         return("http://kabu.com/investment/meigara/bunkatu.html");
     }
     else
     {
         return("http://kabu.com/investment/meigara/gensi.html");
     }
 }
Пример #3
0
 private static string toFileName(this splitType _self)
 {
     if (_self == splitType.split)
     {
         return("StockSplitInfo.xml");
     }
     else
     {
         return("StockConsolidationInfo.xml");
     }
 }
Пример #4
0
 private static string toDisplayName(this splitType _self)
 {
     if (_self == splitType.split)
     {
         return("株式分割");
     }
     else
     {
         return("株式併合");
     }
 }
Пример #5
0
 /// <summary>
 /// Gera um array a partir de uma string sendo nescessário indicar apenas o
 /// tipo de caracter que irá servir como split e a string a ser trabalhada no array.
 /// </summary>
 /// <param name="strFile">String da qual será gerado a Array de string</param>
 /// <param name="splitCaracter">Tipo de caracter a ser usado como separador no split</param>
 /// <returns>Array preenchido com valores do tipo string de acordo com a Quantidade de separadores encontrados na string </returns>
 /// <remarks></remarks>
 /// <exemplo>
 ///
 /// string = "text1/text2/text3/text4/text5" onde o separador e o caracter "/"
 ///
 /// o retorno será um array com 5 posições
 /// string(0)= text1
 /// string(1)= text2
 /// string(2)= text3
 /// string(3)= text4
 /// string(4)= text5
 /// </exemplo>
 public static String[] arrayOfTextFile(string strFile, splitType splitCaracter)
 {
     try
     {
         string[] arrayFile  = null;
         char     splitCarac = (char)defineSplitType(splitCaracter);
         arrayFile = strFile.Split(splitCarac);
         return(arrayFile);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #6
0
        /// <summary>
        /// Define um caracter para ser usado como separador na função Split()
        /// </summary>
        /// <param name="splitType">Tipo de caracter a ser usado com separador (ENUM)</param>
        /// <returns>o caracter a ser usado como separador</returns>
        /// <remarks></remarks>
        public static char defineSplitType(splitType st)
        {
            char splitCaracter;

            switch (st)
            {
            case splitType.BARRA:
                splitCaracter = '/';
                break;

            case splitType.BARRA_INVERTIDA:
                splitCaracter = '\\';
                break;

            case splitType.DOIS_PONTOS:
                splitCaracter = ':';
                break;

            case splitType.PIPE:
                splitCaracter = '|';
                break;

            case splitType.PONTO_VIRGULA:
                splitCaracter = ';';
                break;

            case splitType.VIRGULA:
                splitCaracter = ',';
                break;

            case splitType.E_COMERCIAL:
                splitCaracter = '&';
                break;

            case splitType.EXCLAMACAO:
                splitCaracter = '!';
                break;

            case splitType.CIFRAO:
                splitCaracter = '$';
                break;

            default:
                splitCaracter = '|';
                break;
            }

            return(splitCaracter);
        }
Пример #7
0
        static IEnumerable <StockSplitInfo> _download(splitType type)
        {
            string str = "";

            try {
                str = getSource(type.getUrl()).Result;
                StockPriceManager.SetMessage(DataSource.KabuDotCom, type.toDisplayName() + "データのダウンロード完了");
            } catch (Exception e) {
                StockPriceManager.SetMessage(new ManagementMessage()
                {
                    Sender  = DataSource.KabuDotCom,
                    Signal  = MessageSignal.Error,
                    Message = "接続エラー",
                    Detail  = e.Message,
                });
                return(new StockSplitInfo[0]);
            }
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(str);
            try {
                var dd = doc.DocumentNode
                         //.SelectNodes(@"table[@class=""tbl01""]");
                         .SelectNodes(@"//table[@class='tbl01']")
                         .Descendants("tr")
                         .Select(a => new { Prm = a.Elements("td").Select(e => e.InnerText) })
                         //.Select(a => ResultWithValue.Of<IEnumerable<string>, StockSplitInfo>(tryParse, a.Prm))
                         //.Where(a => a.Result)
                         //.Select(a => a.Value);
                         .Where(a => a.Prm.Any())
                         .Select(a => parse(a.Prm));
                StockPriceManager.SetMessage(DataSource.KabuDotCom, type.toDisplayName() + "データの解析完了");
                return(dd);
            }catch (Exception e) {
                StockPriceManager.SetMessage(new ManagementMessage()
                {
                    Sender  = DataSource.KabuDotCom,
                    Signal  = MessageSignal.Error,
                    Message = "解析エラー",
                    Detail  = e.Message,
                });
                return(new StockSplitInfo[0]);
            }
        }
Пример #8
0
        /// <summary>
        /// Define um caracter para ser usado como separador na função Split()
        /// </summary>
        /// <param name="splitType">Tipo de caracter a ser usado com separador (ENUM)</param>
        /// <returns>o caracter a ser usado como separador</returns>
        /// <remarks></remarks>
        public static char defineSplitType(splitType st)
        {
            char splitCaracter;

            switch (st) {
                case splitType.BARRA:
                    splitCaracter = '/';
                    break;
                case splitType.BARRA_INVERTIDA :
                    splitCaracter = '\\';
                    break;
                case splitType.DOIS_PONTOS :
                    splitCaracter = ':';
                    break;
                case splitType.PIPE :
                    splitCaracter = '|';
                    break;
                case splitType.PONTO_VIRGULA:
                    splitCaracter = ';';
                    break;
                case splitType.VIRGULA:
                    splitCaracter = ',';
                    break;
                case splitType.E_COMERCIAL :
                    splitCaracter = '&';
                    break;
                case splitType.EXCLAMACAO :
                    splitCaracter = '!';
                    break;
                case splitType.CIFRAO :
                    splitCaracter = '$';
                    break;
                default:
                    splitCaracter = '|';
                    break;
            }

            return splitCaracter;
        }
Пример #9
0
 /// <summary>
 /// Gera um array a partir de uma string sendo nescessário indicar apenas o 
 /// tipo de caracter que irá servir como split e a string a ser trabalhada no array.
 /// </summary>
 /// <param name="strFile">String da qual será gerado a Array de string</param>
 /// <param name="splitCaracter">Tipo de caracter a ser usado como separador no split</param>
 /// <returns>Array preenchido com valores do tipo string de acordo com a Quantidade de separadores encontrados na string </returns>
 /// <remarks></remarks>
 /// <exemplo>
 /// 
 /// string = "text1/text2/text3/text4/text5" onde o separador e o caracter "/"
 /// 
 /// </exemplo>
 public static String[] arrayOfTextFile(string strFile, splitType splitCaracter)
 {
     try
     {
         string[] arrayFile = null;
         char  splitCarac = (char)defineSplitType(splitCaracter);
         arrayFile = strFile.Split(splitCarac);
         return arrayFile;
     }
     catch(Exception ex)
     {
         throw ex;
     }
 }