Esempio n. 1
0
        //フォアグラウンドメニュー
        private async void Menu_Click(object sender, EventArgs e)
        {
            switch ((sender as ToolStripMenuItem).Name)
            {
            case "MenuEdinet":
                if (MenuEdinet.Text == "Edinetトップページを表示")
                {
                    if (browser.Url.Host == "" | !toppage.Contains(browser.Url.Host))
                    {
                        browser.Navigate(toppage);
                    }
                    splitMain.Panel1Collapsed          = true;
                    splitUpper.Panel2Collapsed         = true;
                    splitLower.Panel2Collapsed         = true;
                    (sender as ToolStripMenuItem).Text = "書類一覧テーブルを表示";
                }
                else
                {
                    (sender as ToolStripMenuItem).Text = "Edinetトップページを表示";
                    splitMain.Panel1Collapsed          = false;
                    splitUpper.Panel2Collapsed         = false;
                    splitLower.Panel2Collapsed         = false;
                }
                break;

            case "MenuSetting": {
                SettingDialog dialog = new SettingDialog(setting)
                {
                    Owner = this,
                };
                string       dir    = setting.Directory;
                DialogResult result = dialog.ShowDialog();
                if (result == DialogResult.OK)
                {
                    timer1.Enabled  = setting.Timer;
                    timer1.Interval = (int)(setting.Interval * 1000 * 60);
                    TimerCheck();
                    if (dir != setting.Directory)
                    {
                        string dbfile = $"{dialog.Setting.Directory}\\edinet.db";
                        if (!File.Exists(dbfile))
                        {
                            await disclosures.Database.TaxonomyTableToMemoryAsync(this.InvokeProgress);

                            //bool exists = disclosures.ChangeCacheDirectory(dialog.Setting.Directory);
                            //if (!exists) {
                            //    string[] files = Directory.GetFiles(dir, "ALL_*.zip");
                            //    if (files.Length > 0) {
                            //        Array.Reverse(files);
                            //        File.Copy(files[0], Path.Combine(setting.Directory, Path.GetFileName(files[0])));
                            //    }
                            //    await SetTaxonomyDownloadEvent();
                            //}
                            disclosures.Database.ChangeDirectory(dbfile);
                            disclosures.Database.MemoryToDatabase($"{dialog.Setting.Directory}\\edinet.db");
                        }
                    }
                    setting = dialog.Setting;
                    setting.Save();
                    disclosures.ChangeCacheDirectory(setting.Directory);
                }
            }
            break;

            case "MenuApiHistory":
                string logfile = Path.Combine(setting.Directory, "EdinetApi.log");
                if (!File.Exists(logfile))
                {
                    StatusLabel1.Text = "ログファイルがありません " + logfile;
                    return;
                }
                string[]      lines = File.ReadAllLines(logfile);
                StringBuilder sb    = new StringBuilder();
                sb.Append("<body><table>");
                for (int i = lines.Length - 1; i >= 0; i--)
                {
                    string[] cols = lines[i].Replace("DocumentListAPI:", "DocumentListAPI status:").Split();

                    sb.AppendFormat("<tr><td nowrap>{0} {1}</td>", cols[0], cols.Length > 1 ?cols[1]:"");
                    sb.AppendFormat("<td>{0}</td><td>{1}</td><td>{2}</td></tr>", cols[2].Replace("Document", ""), cols[3], string.Join(" ", cols, 4, cols.Length - 4));
                }
                sb.Append("</table></body>");
                splitMain.Panel1Collapsed  = true;
                splitUpper.Panel2Collapsed = true;
                splitLower.Panel2Collapsed = true;
                browser.DocumentText       = sb.ToString();
                break;

            case "MenuSearch":
                using (EdinetViewer.DialogSearch search = new EdinetViewer.DialogSearch(disclosures.Database)) {
                    DialogResult dialogResult = search.ShowDialog();
                    if (dialogResult == DialogResult.OK)
                    {
                        if (search.Table != null && search.Table.Rows.Count > 0 & search.Table.Rows[0]["id"].ToString() != "0")
                        {
                            disclosures.SetDocumentTable(search.Table);
                            comboFilter.DataSource = disclosures.Types;
                            currentRow1            = -1;
                            if (splitMain.Panel1Collapsed)
                            {
                                splitMain.Panel1Collapsed        = false;
                                splitUpper.Panel2Collapsed       = false;
                                splitLower.Panel2Collapsed       = false;
                                this.splitUpper.SplitterDistance = setting.UpperDistance;
                            }
                            dgvList.DataSource = disclosures.DvDocuments;
                        }

                        search.Close();
                    }
                }
                break;

            case "MenuNotFinalList":
                Dictionary <DateTime, int> dicMetadata = disclosures.Database.GetFinalMetalist();
                List <DateTime>            list        = new List <DateTime>();
                DateTime date = DateTime.Now.Date;
                do
                {
                    date = date.AddDays(-1);
                    if (!dicMetadata.ContainsKey(date))
                    {
                        list.Add(date);
                    }
                } while (date >= DateTime.Now.AddYears(-5).Date);
                list.Sort();
                list.Reverse();
                StringBuilder sb1 = new StringBuilder();
                foreach (DateTime target in list)
                {
                    sb1.AppendLine($"{target:yyyy-MM-dd ddd}");
                }
                if (sb1.Length == 0)
                {
                    sb1.Append("未確定の日付は見つかりませんでした");
                }
                MessageBox.Show(sb1.ToString(), "メタデータ非取得または未確定の日付一覧");
                break;

            case "MenuImprotDownloaded": {
                using (OpenFileDialog dialog = new OpenFileDialog()) {
                    dialog.InitialDirectory = setting.Directory;
                    dialog.Multiselect      = false;
                    dialog.Filter           = "ZIP Files (.ZIP)|*.zip|検索結果csv|XbrlSearchDlInfo.csv";
                    DialogResult result = dialog.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        //Archive.Downloaded downloaded = new Archive.Downloaded(dialog.FileName);
                        //downloaded.Import(disclosures.Database);
                        Dictionary <string, DateTime> dic = disclosures.ImportArchives(dialog.FileName);
                        if (dic.Count > 0)
                        {
                            await disclosures.ReadMetadataAndUpdateDownloaded(dic, setting);
                        }
                    }
                }
            }
            break;
            }
        }