private void SettingButton_Click(object sender, RibbonControlEventArgs e)
        {
            var config         = Configuration.GetInstance();
            var configSettings = AddinSettings.Create(config);
            var form           = new SettingForm(configSettings);

            form.ShowDialog();
            if (form.DialogResult == DialogResult.OK)
            {
                try
                {
                    var newSettings = AddinSettings.Create(form.GetAPIKey(), form.IsOndemandEndpointEnabled(), form.IsDebugMode(), form.IsForceOndemandEndpoint());
                    newSettings.SaveToConfiguration(config);
                }
                catch (Exception exp)
                {
                    var bce = BuffettCodeExceptionFinder.Find(exp);
                    if (bce is ValidationError)
                    {
                        MessageBox.Show("API KEYの値が間違っています", "設定", MessageBoxButtons.OK);
                    }
                    else
                    {
                        MessageBox.Show("設定が間違っています", "設定", MessageBoxButtons.OK);
                    }
                }
            }
        }
Esempio n. 2
0
        public static string ToErrorMessage(Exception e, string propertyName, bool isDebugMode)
        {
            System.Diagnostics.Debug.WriteLine(e.StackTrace); // for debug

            // デバッグモードが設定されていたらエラーメッセージの代わりにスタックトレースをセルに表示
            if (isDebugMode)
            {
                return(e.ToString());
            }

            BaseBuffettCodeException bce = BuffettCodeExceptionFinder.Find(e);

            string message;

            if (bce is PropertyNotFoundException)
            {
                message = $"指定された項目が見つかりません:{propertyName}";
            }
            else if (bce is QuotaException)
            {
                message = "APIの実行回数が上限に達しました";
            }
            else if (bce is InvalidAPIKeyException)
            {
                message = "APIキーが有効ではありません";
            }
            else if (bce is TestAPIConstraintException)
            {
                message = $"テスト用のAPIキーでは取得できないデータです:{propertyName}";
            }
            else if (bce is NotSupportedDataTypeException)
            {
                message = "未定義の項目名です";
            }
            else if (bce is ApiResponseParserException)
            {
                message = $"APIレスポンスのパースに失敗しました::{bce.Message}";
            }
            else if (bce is NotSupportedTierException)
            {
                message = $"取得可能な範囲を超えています::{bce.Message}";
            }
            else if (bce is ResourceNotFoundException)
            {
                message = $"存在しないデータにアクセスしようとしています。::{bce.Message}";
            }
            else if (bce is BuffettCodeApiClientException)
            {
                message = "APIの呼び出しでエラーが発生しました";
            }
            else if (bce is ValidationError)
            {
                message = $"入力された値が不正です::{bce.Message}";
            }
            else
            {
                message = $"未定義のエラー::{e.Message}";
            }
            return($"<<{message}>>");
        }
        private void Execute()
        {
            if (!ValidateControls())
            {
                return;
            }
            try
            {
                var parameters = CreateParametersFromFormValues();
                var resources  = apiResourceGetter.GetQuarters(parameters);
                var quarters   = resources.ToList();
                if (quarters.Count == 0)
                {
                    MessageBox.Show("条件に当てはまる財務データがありませんでした。", "CSV出力", MessageBoxButtons.OK);
                }
                else
                {
                    var tabular = TabularFormatter <Quarter> .Format(quarters);

                    var writer = quarterTabularWriterBuilder.Set(parameters).Build();
                    writer.Write(tabular);
                    MessageBox.Show("財務データの取得が完了しました", "CSV出力", MessageBoxButtons.OK);
                }
                DialogResult = DialogResult.OK;
            }
            // user cancel
            catch (OperationCanceledException)
            {
                MessageBox.Show("CSV出力がキャンセルされました", "CSV出力", MessageBoxButtons.OK);
            }
            // known errors
            catch (BaseBuffettCodeException bce)
            {
                var message = CsvDownloadExceptionHandler.ToMessageBoxString(bce);
                MessageBox.Show(message, "CSV出力", MessageBoxButtons.OK);
            }
            // unknown errors
            catch (Exception e)
            {
                var bce = BuffettCodeExceptionFinder.Find(e);
                if (bce is null)
                {
                    MessageBox.Show($"予期せぬエラーが発生しました。\n{e}", "CSV出力", MessageBoxButtons.OK);
                }
                else
                {
                    var message = CsvDownloadExceptionHandler.ToMessageBoxString(bce);
                    MessageBox.Show(message, "CSV出力", MessageBoxButtons.OK);
                }
            }
            Close();
        }
        public void FindTest()
        {
            // BuffettCodeException
            var bcException           = new TestAPIConstraintException();
            var bcExceptionWrapper    = new ExceptionWrapper("dummy", bcException);
            var nonBcException        = new System.Exception();
            var nonBcExceptionWrapper = new ExceptionWrapper("dummy", nonBcException);

            Assert.AreEqual(
                bcException,
                BuffettCodeExceptionFinder.Find(bcException));

            Assert.AreEqual(
                bcException,
                BuffettCodeExceptionFinder.Find(bcExceptionWrapper));

            Assert.IsNull(
                BuffettCodeExceptionFinder.Find(nonBcException));

            Assert.IsNull(
                BuffettCodeExceptionFinder.Find(nonBcExceptionWrapper));
        }