• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

EveryDB2のデータベースを読み込んでWinFormでGUI表示するサンプル


Commit MetaInfo

Révision629f1b75378d2ae9489d32057e3743a208dde96a (tree)
l'heure2021-05-26 21:20:46
Auteuryoshy <yoshy@user...>
Commiteryoshy

Message de Log

temp_20210526_2120

Change Summary

Modification

--- /dev/null
+++ b/App/Adaptor/Gateway/ViewModel/Dto/ChakudosuuRowDto.cs
@@ -0,0 +1,24 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using System.Text;
5+using System.Threading.Tasks;
6+using UmaTest.App.Repository.Database.Entity.EveryDB2;
7+using UmaTest.Infra.Helper;
8+
9+namespace UmaTest.App.Adaptor.Gateway.ViewModel.Dto
10+{
11+ public class ChakudosuuRowDto : NUma
12+ {
13+ public ChakudosuuRowDto()
14+ {
15+ }
16+
17+ public ChakudosuuRowDto(NUma uma)
18+ {
19+ BeanHelper.Copy(this, uma);
20+ }
21+
22+ public string SexName => CodeHelper.GetInstance().GetName(CodeHelper.SEX_CODE, Sexcd);
23+ }
24+}
--- /dev/null
+++ b/App/Adaptor/Gateway/ViewModel/Dto/UmaRaceRowDto.cs
@@ -0,0 +1,29 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using System.Text;
5+using System.Threading.Tasks;
6+using UmaTest.App.Repository.Database.Dto;
7+using UmaTest.App.Repository.Database.Entity.EveryDB2;
8+using UmaTest.Infra.Helper;
9+
10+namespace UmaTest.App.Adaptor.Gateway.ViewModel.Dto
11+{
12+ public class UmaRaceRowDto : NUmaRaceWithNRace
13+ {
14+ public UmaRaceRowDto()
15+ {
16+ }
17+
18+ public UmaRaceRowDto(NUmaRaceWithNRace umaRace)
19+ {
20+ BeanHelper.Copy(this, umaRace);
21+ }
22+
23+ public string RaceName => !String.IsNullOrEmpty(Race.Hondai)
24+ ? Race.Hondai
25+ : CodeHelper.GetInstance().GetName(CodeHelper.JYOKEN_CODE1, Race.Jyokencd1, "不明");
26+
27+ public string GradeName => CodeHelper.GetInstance().GetName(CodeHelper.GRADE_CODE, Race.Gradecd, "-");
28+ }
29+}
--- a/App/Adaptor/Gateway/ViewModel/IMainWindowViewModel.cs
+++ b/App/Adaptor/Gateway/ViewModel/IMainWindowViewModel.cs
@@ -1,11 +1,17 @@
11 using System.ComponentModel;
2-using System.Drawing;
2+using UmaTest.App.Adaptor.Gateway.ViewModel.Dto;
3+using UmaTest.App.Repository.Database.Dto;
4+using UmaTest.App.Repository.Database.Entity.EveryDB2;
35 using UmaTest.Infra.Command;
46
57 namespace UmaTest.App.Presentation.ViewModel
68 {
7- public interface IMainWindowViewModel : INotifyPropertyChanged
9+ public interface IMainWindowViewModel
810 {
11+ BindingList<ChakudosuuRowDto> ChakudosuuList { get; set; }
912 ICommand CommandReadHorseList { get; }
13+ BindingList<UmaRaceRowDto> RaceList { get; set; }
14+
15+ event PropertyChangedEventHandler PropertyChanged;
1016 }
1117 }
\ No newline at end of file
--- a/App/Adaptor/Gateway/ViewModel/MainWindowViewModel.cs
+++ b/App/Adaptor/Gateway/ViewModel/MainWindowViewModel.cs
@@ -1,12 +1,16 @@
11 using System;
2+using System.Collections.Generic;
23 using System.ComponentModel;
34 using System.Drawing;
45 using System.Drawing.Imaging;
56 using System.IO;
67 using System.Windows.Input;
8+using UmaTest.App.Adaptor.Gateway.ViewModel.Dto;
79 using UmaTest.App.Domain.UseCase.Request;
810 using UmaTest.App.Domain.UseCase.Response;
911 using UmaTest.App.Presentation.Controller;
12+using UmaTest.App.Repository.Database.Dto;
13+using UmaTest.App.Repository.Database.Entity.EveryDB2;
1014 using UmaTest.Infra.Command;
1115 using ICommand = UmaTest.Infra.Command.ICommand;
1216
@@ -18,6 +22,10 @@ namespace UmaTest.App.Presentation.ViewModel
1822
1923 private IWindowController wc;
2024
25+ BindingList<ChakudosuuRowDto> _chakudosuuList = new BindingList<ChakudosuuRowDto>();
26+
27+ BindingList<UmaRaceRowDto> _raceList = new BindingList<UmaRaceRowDto>();
28+
2129 public MainWindowViewModel(IWindowController wc)
2230 {
2331 this.wc = wc;
@@ -25,11 +33,24 @@ namespace UmaTest.App.Presentation.ViewModel
2533 CommandReadHorseList = new DelegateCommand("Read Horse List (&R)", () => true, OnReadHorseList);
2634 }
2735
36+ public BindingList<ChakudosuuRowDto> ChakudosuuList
37+ {
38+ get => _chakudosuuList;
39+ set => PropertyChanged.RaiseIfSet(() => ChakudosuuList, ref _chakudosuuList, value);
40+ }
41+
42+ public BindingList<UmaRaceRowDto> RaceList
43+ {
44+ get => _raceList;
45+ set => PropertyChanged.RaiseIfSet(() => RaceList, ref _raceList, value);
46+ }
47+
2848 public ICommand CommandReadHorseList { get; private set; }
2949
30- public void OnReadHorseList()
50+ private void OnReadHorseList()
3151 {
32- LoadHorseRaceSummaryRequest req = new LoadHorseRaceSummaryRequest("トウカイテイオー" );
52+ LoadHorseRaceSummaryRequest req = new LoadHorseRaceSummaryRequest("トウカイテイオー\nミホノブルボン");
53+
3354 LoadHorseRaceSummaryResponse res = wc.Execute(req) as LoadHorseRaceSummaryResponse;
3455 }
3556 }
--- a/App/Adaptor/Presenter/LoadHorseRaceSummaryPresenter.cs
+++ b/App/Adaptor/Presenter/LoadHorseRaceSummaryPresenter.cs
@@ -1,9 +1,11 @@
11 using System;
22 using System.Collections.Generic;
3+using System.ComponentModel;
34 using System.Linq;
45 using System.Text;
56 using System.Threading.Tasks;
67 using Umatest.App.Presentation.Presenter;
8+using UmaTest.App.Adaptor.Gateway.ViewModel.Dto;
79 using UmaTest.App.Domain.UseCase.Request;
810 using UmaTest.App.Domain.UseCase.Response;
911 using UmaTest.App.Presentation.ViewModel;
@@ -28,22 +30,51 @@ namespace UmaTest.App.Presentation.Presenter
2830 LoadHorseRaceSummaryRequest req = baseRes.Request as LoadHorseRaceSummaryRequest;
2931 LoadHorseRaceSummaryResponse res = baseRes as LoadHorseRaceSummaryResponse;
3032
31- List<string> bameiList = res.HorseList;
33+ List<string> bameiList = res.Bameis;
3234
33- foreach(string bamei in bameiList)
35+ vm.ChakudosuuList.Clear();
36+ vm.RaceList.Clear();
37+
38+ foreach (string bamei in bameiList)
3439 {
3540 Logger.Info($"馬名: {bamei}");
3641
37- foreach (NUmaRaceWithNRace race in res.Races[bamei])
42+ foreach (ChakudosuuSummary summary in res.Summaries[bamei])
3843 {
39- NRace detail = race.Race;
40- Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {race.Nyusenjyuni} - {race.Kakuteijyuni}");
44+ Logger.Debug($"{summary}");
4145 }
4246
43- foreach (ChakudosuuSummary summary in res.Summaries[bamei])
47+ ChakudosuuRowDto dto;
48+
49+ if (!res.Horses.TryGetValue(bamei, out NUma uma))
4450 {
45- Logger.Debug($"{summary}");
51+ Logger.Warn($"馬名: {bamei} の馬情報が見つかりませんでした");
52+ continue;
4653 }
54+
55+ dto = new ChakudosuuRowDto(uma);
56+ vm.ChakudosuuList.Add(dto);
57+ }
58+
59+ if (vm.ChakudosuuList.Count == 0)
60+ {
61+ return res;
62+ }
63+
64+ string bamei2 = vm.ChakudosuuList[0].Bamei;
65+
66+ if (!res.Races.TryGetValue(bamei2, out IEnumerable<NUmaRaceWithNRace> umaRaces) || (umaRaces.Count() == 0))
67+ {
68+ Logger.Warn($"馬名: {bamei2} の馬レース情報が見つかりませんでした");
69+ return res;
70+ }
71+
72+ foreach (NUmaRaceWithNRace umaRace in umaRaces)
73+ {
74+ NRace detail = umaRace.Race;
75+ Logger.Debug($"{detail.Year}/{detail.Monthday.Substring(0, 2)}/{detail.Monthday.Substring(2, 2)} - {detail.Hondai} - {detail.Kyori} - {detail.Gradecd} - {detail.Jyokencd1} - {umaRace.Nyusenjyuni} - {umaRace.Kakuteijyuni}");
76+
77+ vm.RaceList.Add(new UmaRaceRowDto(umaRace));
4778 }
4879
4980 return res;
--- a/App/DI/ComponentConnectorFactory.cs
+++ b/App/DI/ComponentConnectorFactory.cs
@@ -72,12 +72,14 @@ namespace UmaTest.App.DI
7272 /// Logics
7373 ///
7474
75+ di.Register<IUmaLogic, UmaLogic>();
7576 di.Register<IUmaRaceLogic, UmaRaceLogic>();
7677
7778 ///
7879 /// Daos
7980 ///
8081
82+ di.Register<INUmaDao, NUmaDao>();
8183 di.Register<INUmaRaceDao, NUmaRaceDao>();
8284
8385 ///
--- /dev/null
+++ b/App/Domain/Model/Logic/IUmaLogic.cs
@@ -0,0 +1,10 @@
1+using System.Collections.Generic;
2+using UmaTest.App.Repository.Database.Entity.EveryDB2;
3+
4+namespace UmaTest.App.Domain.Model
5+{
6+ public interface IUmaLogic
7+ {
8+ Dictionary<string, NUma> LoadHorses(List<string> bameiList);
9+ }
10+}
\ No newline at end of file
--- /dev/null
+++ b/App/Domain/Model/Logic/UmaLogic.cs
@@ -0,0 +1,30 @@
1+using PetaPoco;
2+using System;
3+using System.Collections.Generic;
4+using System.Linq;
5+using System.Text;
6+using System.Threading.Tasks;
7+using UmaTest.App.Repository.Database.Dao;
8+using UmaTest.App.Repository.Database.Dto;
9+using UmaTest.App.Repository.Database.Entity.EveryDB2;
10+using UmaTest.Infra.Helper;
11+
12+namespace UmaTest.App.Domain.Model
13+{
14+ internal class UmaLogic : IUmaLogic
15+ {
16+ INUmaDao dao;
17+ public UmaLogic(INUmaDao dao)
18+ {
19+ this.dao = dao;
20+ }
21+
22+ public Dictionary<string, NUma> LoadHorses(List<string> bameiList)
23+ {
24+ return LogicHelper.tryLogic(() =>
25+ {
26+ return dao.findAllHorsesByBameiList(bameiList);
27+ });
28+ }
29+ }
30+}
--- /dev/null
+++ b/App/Domain/Model/Repository/Database/Dao/INUmaDao.cs
@@ -0,0 +1,10 @@
1+using System.Collections.Generic;
2+using UmaTest.App.Repository.Database.Entity.EveryDB2;
3+
4+namespace UmaTest.App.Repository.Database.Dao
5+{
6+ public interface INUmaDao
7+ {
8+ Dictionary<string, NUma> findAllHorsesByBameiList(List<string> bameiList);
9+ }
10+}
\ No newline at end of file
--- /dev/null
+++ b/App/Domain/Model/Repository/Database/Dao/NUmaDao.cs
@@ -0,0 +1,44 @@
1+using PetaPoco;
2+using System;
3+using System.Collections.Generic;
4+using System.Linq;
5+using System.Text;
6+using System.Threading.Tasks;
7+using UmaTest.App.Repository.Database.Dto;
8+using UmaTest.App.Repository.Database.Entity.EveryDB2;
9+using UmaTest.Infra.Helper;
10+
11+namespace UmaTest.App.Repository.Database.Dao
12+{
13+ public class NUmaDao : INUmaDao
14+ {
15+ private IDatabase db;
16+
17+ public NUmaDao(IDatabase db)
18+ {
19+ this.db = db;
20+ }
21+
22+ public Dictionary<string, NUma> findAllHorsesByBameiList(List<string> bameiList)
23+ {
24+ return DbHelper.tryQuery(() =>
25+ {
26+ Dictionary<string, NUma> res = new Dictionary<string, NUma>();
27+
28+ string[] bameis = bameiList.ToArray();
29+ var sql = Sql.Builder
30+ .Where("bamei in (@bameis)", new { bameis = bameis})
31+ .OrderBy("bamei");
32+
33+ var horses = db.Query<NUma>(sql);
34+
35+ foreach (NUma horse in horses)
36+ {
37+ res.Add(horse.Bamei, horse);
38+ }
39+
40+ return res;
41+ });
42+ }
43+ }
44+}
--- a/App/Domain/Model/Repository/Database/Dao/NUmaRaceDao.cs
+++ b/App/Domain/Model/Repository/Database/Dao/NUmaRaceDao.cs
@@ -30,7 +30,7 @@ namespace UmaTest.App.Repository.Database.Dao
3030 var sql = Sql.Builder
3131 .Append("SELECT ur.*, r.*")
3232 .From("n_uma_race ur")
33- .Append("INNER JOIN n_race r USING(year, jyocd, nichiji, racenum)")
33+ .Append("INNER JOIN n_race r USING(year, jyocd, kaiji, nichiji, racenum)")
3434 .Where("ur.bamei = @0", bamei)
3535 .OrderBy("ur.year desc, ur.monthday desc");
3636
@@ -46,7 +46,7 @@ namespace UmaTest.App.Repository.Database.Dao
4646 {
4747 return DbHelper.tryQuery(() =>
4848 {
49- string sql = DbHelper.GetResourceSQLFile(this.GetType());
49+ string sql = DbHelper.GetResourceSQLFile(this);
5050
5151 return db.Query<ChakudosuuSummary>(sql, bamei).ToList();
5252 });
--- a/App/Domain/Model/Repository/Database/Dto/NUmaRaceWithNRace.cs
+++ b/App/Domain/Model/Repository/Database/Dto/NUmaRaceWithNRace.cs
@@ -22,7 +22,8 @@ namespace UmaTest.App.Repository.Database.Dto
2222 }
2323
2424 [Ignore]
25- public NUmaRace UmaRace { get; set; }
25+ public string YearMonthDay { get => Year + "/" + Monthday.Substring(0,2) + "/" + Monthday.Substring(2,2); }
26+
2627 [Ignore]
2728 public NRace Race { get; set; }
2829 }
--- a/App/Domain/Translator/ILoadHorseRaceSummaryTranslator.cs
+++ b/App/Domain/Translator/ILoadHorseRaceSummaryTranslator.cs
@@ -2,12 +2,16 @@
22 using UmaTest.App.Domain.UseCase.Request;
33 using UmaTest.App.Domain.UseCase.Response;
44 using UmaTest.App.Repository.Database.Dto;
5+using UmaTest.App.Repository.Database.Entity.EveryDB2;
56
67 namespace UmaTest.App.Domain.Translator
78 {
89 public interface ILoadHorseRaceSummaryTranslator
910 {
10- LoadHorseRaceSummaryResponse Translate(LoadHorseRaceSummaryResponse res, LoadHorseRaceSummaryRequest req,
11- Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries);
11+ LoadHorseRaceSummaryResponse Translate(
12+ LoadHorseRaceSummaryResponse res, LoadHorseRaceSummaryRequest req,
13+ Dictionary<string, NUma> horses,
14+ Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races,
15+ Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries);
1216 }
1317 }
\ No newline at end of file
--- a/App/Domain/Translator/LoadHorseRaceSummaryTranslator.cs
+++ b/App/Domain/Translator/LoadHorseRaceSummaryTranslator.cs
@@ -6,15 +6,21 @@ using System.Threading.Tasks;
66 using UmaTest.App.Domain.UseCase.Request;
77 using UmaTest.App.Domain.UseCase.Response;
88 using UmaTest.App.Repository.Database.Dto;
9+using UmaTest.App.Repository.Database.Entity.EveryDB2;
910
1011 namespace UmaTest.App.Domain.Translator
1112 {
1213 public class LoadHorseRaceSummaryTranslator : ILoadHorseRaceSummaryTranslator
1314 {
14- public LoadHorseRaceSummaryResponse Translate(LoadHorseRaceSummaryResponse res, LoadHorseRaceSummaryRequest req,
15- Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races, Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries)
15+ public LoadHorseRaceSummaryResponse Translate(
16+ LoadHorseRaceSummaryResponse res, LoadHorseRaceSummaryRequest req,
17+ Dictionary<string, NUma> horses,
18+ Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races,
19+ Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries)
1620 {
17- res.HorseList = req.HorseList;
21+ res.Bameis = req.HorseList;
22+
23+ res.Horses = horses;
1824 res.Races = races;
1925 res.Summaries = summaries;
2026
--- a/App/Domain/UseCase/Interactor/LoadHorseRaceSummaryInteractor.cs
+++ b/App/Domain/UseCase/Interactor/LoadHorseRaceSummaryInteractor.cs
@@ -8,17 +8,20 @@ using UmaTest.App.Domain.Translator;
88 using UmaTest.App.Domain.UseCase.Request;
99 using UmaTest.App.Domain.UseCase.Response;
1010 using UmaTest.App.Repository.Database.Dto;
11+using UmaTest.App.Repository.Database.Entity.EveryDB2;
1112 using UmaTest.Infra.UseCase;
1213
1314 namespace UmaTest.App.Domain.UseCase.Interactor
1415 {
1516 public class LoadHorseRaceSummaryInteractor : ILoadHorseRaceSummaryInteractor
1617 {
17- IUmaRaceLogic logic;
18+ IUmaLogic logicUma;
19+ IUmaRaceLogic logicUmaRace;
1820 ILoadHorseRaceSummaryTranslator translator;
19- public LoadHorseRaceSummaryInteractor(IUmaRaceLogic logic, ILoadHorseRaceSummaryTranslator translator) : base()
21+ public LoadHorseRaceSummaryInteractor(IUmaLogic logicUma, IUmaRaceLogic logicUmaRace, ILoadHorseRaceSummaryTranslator translator) : base()
2022 {
21- this.logic = logic;
23+ this.logicUma = logicUma;
24+ this.logicUmaRace = logicUmaRace;
2225 this.translator = translator;
2326 }
2427
@@ -27,10 +30,12 @@ namespace UmaTest.App.Domain.UseCase.Interactor
2730 LoadHorseRaceSummaryRequest req = baseReq as LoadHorseRaceSummaryRequest;
2831 LoadHorseRaceSummaryResponse res = req.Response as LoadHorseRaceSummaryResponse;
2932
30- Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = logic.LoadRaces(req.HorseList);
31- Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries = logic.LoadChakudosuuSummaries(req.HorseList);
33+ Dictionary<string, NUma> horses = logicUma.LoadHorses(req.HorseList);
3234
33- return translator.Translate(res, req, races, summaries);
35+ Dictionary<string, IEnumerable<NUmaRaceWithNRace>> races = logicUmaRace.LoadRaces(req.HorseList);
36+ Dictionary<string, IEnumerable<ChakudosuuSummary>> summaries = logicUmaRace.LoadChakudosuuSummaries(req.HorseList);
37+
38+ return translator.Translate(res, req, horses, races, summaries);
3439 }
3540 }
3641 }
--- a/App/Domain/UseCase/Response/LoadHorseRaceSummaryResponse.cs
+++ b/App/Domain/UseCase/Response/LoadHorseRaceSummaryResponse.cs
@@ -5,6 +5,7 @@ using System.Text;
55 using System.Threading.Tasks;
66 using UmaTest.App.Domain.UseCase.Request;
77 using UmaTest.App.Repository.Database.Dto;
8+using UmaTest.App.Repository.Database.Entity.EveryDB2;
89 using UmaTest.Infra.UseCase;
910
1011 namespace UmaTest.App.Domain.UseCase.Response
@@ -15,8 +16,9 @@ namespace UmaTest.App.Domain.UseCase.Response
1516 {
1617 }
1718
18- public List<string> HorseList { get; internal set; }
19- public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> Races { get; internal set; }
20- public Dictionary<string, IEnumerable<ChakudosuuSummary>> Summaries { get; internal set; }
19+ public List<string> Bameis { get; set; }
20+ public Dictionary<string, NUma> Horses { get; set; }
21+ public Dictionary<string, IEnumerable<NUmaRaceWithNRace>> Races { get; set; }
22+ public Dictionary<string, IEnumerable<ChakudosuuSummary>> Summaries { get; set; }
2123 }
2224 }
--- a/App/Presentation/View/MainWindow.Designer.cs
+++ b/App/Presentation/View/MainWindow.Designer.cs
@@ -34,7 +34,22 @@ namespace UmaTest.App.Presentation.View
3434 this.toolStripMenuOpenHorseList = new System.Windows.Forms.ToolStripMenuItem();
3535 this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
3636 this.toolStripMenuQuit = new System.Windows.Forms.ToolStripMenuItem();
37+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
38+ this.splitContainer2 = new System.Windows.Forms.SplitContainer();
39+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
40+ this.treeView1 = new System.Windows.Forms.TreeView();
41+ this.dataGridView2 = new System.Windows.Forms.DataGridView();
3742 this.menuStrip1.SuspendLayout();
43+ ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
44+ this.splitContainer1.Panel1.SuspendLayout();
45+ this.splitContainer1.Panel2.SuspendLayout();
46+ this.splitContainer1.SuspendLayout();
47+ ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
48+ this.splitContainer2.Panel1.SuspendLayout();
49+ this.splitContainer2.Panel2.SuspendLayout();
50+ this.splitContainer2.SuspendLayout();
51+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
52+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
3853 this.SuspendLayout();
3954 //
4055 // menuStrip1
@@ -44,7 +59,7 @@ namespace UmaTest.App.Presentation.View
4459 this.menuStrip1.Location = new System.Drawing.Point(0, 0);
4560 this.menuStrip1.Name = "menuStrip1";
4661 this.menuStrip1.Padding = new System.Windows.Forms.Padding(5, 2, 0, 2);
47- this.menuStrip1.Size = new System.Drawing.Size(686, 24);
62+ this.menuStrip1.Size = new System.Drawing.Size(735, 24);
4863 this.menuStrip1.TabIndex = 0;
4964 this.menuStrip1.Text = "menuStrip1";
5065 //
@@ -75,11 +90,87 @@ namespace UmaTest.App.Presentation.View
7590 this.toolStripMenuQuit.Size = new System.Drawing.Size(152, 22);
7691 this.toolStripMenuQuit.Text = "Quit";
7792 //
93+ // splitContainer1
94+ //
95+ this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
96+ this.splitContainer1.Location = new System.Drawing.Point(0, 24);
97+ this.splitContainer1.Name = "splitContainer1";
98+ //
99+ // splitContainer1.Panel1
100+ //
101+ this.splitContainer1.Panel1.Controls.Add(this.treeView1);
102+ //
103+ // splitContainer1.Panel2
104+ //
105+ this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
106+ this.splitContainer1.Size = new System.Drawing.Size(735, 496);
107+ this.splitContainer1.SplitterDistance = 245;
108+ this.splitContainer1.TabIndex = 1;
109+ //
110+ // splitContainer2
111+ //
112+ this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
113+ this.splitContainer2.Location = new System.Drawing.Point(0, 0);
114+ this.splitContainer2.Name = "splitContainer2";
115+ this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
116+ //
117+ // splitContainer2.Panel1
118+ //
119+ this.splitContainer2.Panel1.Controls.Add(this.dataGridView1);
120+ //
121+ // splitContainer2.Panel2
122+ //
123+ this.splitContainer2.Panel2.Controls.Add(this.dataGridView2);
124+ this.splitContainer2.Size = new System.Drawing.Size(486, 496);
125+ this.splitContainer2.SplitterDistance = 222;
126+ this.splitContainer2.TabIndex = 0;
127+ //
128+ // dataGridView1
129+ //
130+ this.dataGridView1.AllowUserToAddRows = false;
131+ this.dataGridView1.AllowUserToDeleteRows = false;
132+ this.dataGridView1.AllowUserToResizeRows = false;
133+ this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
134+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
135+ this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
136+ this.dataGridView1.Location = new System.Drawing.Point(0, 0);
137+ this.dataGridView1.MultiSelect = false;
138+ this.dataGridView1.Name = "dataGridView1";
139+ this.dataGridView1.RowTemplate.Height = 21;
140+ this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
141+ this.dataGridView1.Size = new System.Drawing.Size(486, 222);
142+ this.dataGridView1.TabIndex = 0;
143+ //
144+ // treeView1
145+ //
146+ this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
147+ this.treeView1.Location = new System.Drawing.Point(0, 0);
148+ this.treeView1.Name = "treeView1";
149+ this.treeView1.Size = new System.Drawing.Size(245, 496);
150+ this.treeView1.TabIndex = 0;
151+ //
152+ // dataGridView2
153+ //
154+ this.dataGridView2.AllowUserToAddRows = false;
155+ this.dataGridView2.AllowUserToDeleteRows = false;
156+ this.dataGridView2.AllowUserToResizeRows = false;
157+ this.dataGridView2.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
158+ this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
159+ this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
160+ this.dataGridView2.Location = new System.Drawing.Point(0, 0);
161+ this.dataGridView2.MultiSelect = false;
162+ this.dataGridView2.Name = "dataGridView2";
163+ this.dataGridView2.RowTemplate.Height = 21;
164+ this.dataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
165+ this.dataGridView2.Size = new System.Drawing.Size(486, 270);
166+ this.dataGridView2.TabIndex = 0;
167+ //
78168 // MainWindow
79169 //
80170 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
81171 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
82- this.ClientSize = new System.Drawing.Size(686, 360);
172+ this.ClientSize = new System.Drawing.Size(735, 520);
173+ this.Controls.Add(this.splitContainer1);
83174 this.Controls.Add(this.menuStrip1);
84175 this.MainMenuStrip = this.menuStrip1;
85176 this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
@@ -87,6 +178,16 @@ namespace UmaTest.App.Presentation.View
87178 this.Text = "UmaTest";
88179 this.menuStrip1.ResumeLayout(false);
89180 this.menuStrip1.PerformLayout();
181+ this.splitContainer1.Panel1.ResumeLayout(false);
182+ this.splitContainer1.Panel2.ResumeLayout(false);
183+ ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
184+ this.splitContainer1.ResumeLayout(false);
185+ this.splitContainer2.Panel1.ResumeLayout(false);
186+ this.splitContainer2.Panel2.ResumeLayout(false);
187+ ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
188+ this.splitContainer2.ResumeLayout(false);
189+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
190+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
90191 this.ResumeLayout(false);
91192 this.PerformLayout();
92193
@@ -99,6 +200,11 @@ namespace UmaTest.App.Presentation.View
99200 private System.Windows.Forms.ToolStripMenuItem toolStripMenuQuit;
100201 private System.Windows.Forms.ToolStripMenuItem toolStripMenuOpenHorseList;
101202 private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
203+ private System.Windows.Forms.SplitContainer splitContainer1;
204+ private System.Windows.Forms.SplitContainer splitContainer2;
205+ private System.Windows.Forms.DataGridView dataGridView1;
206+ private System.Windows.Forms.TreeView treeView1;
207+ private System.Windows.Forms.DataGridView dataGridView2;
102208 }
103209 }
104210
--- a/App/Presentation/View/MainWindow.cs
+++ b/App/Presentation/View/MainWindow.cs
@@ -12,7 +12,10 @@ using System.Threading.Tasks;
1212 using System.Windows.Forms;
1313 using UmaTest.App.Presentation.Controller;
1414 using UmaTest.App.Presentation.ViewModel;
15+using UmaTest.App.Repository.Database.Dto;
16+using UmaTest.App.Repository.Database.Entity.EveryDB2;
1517 using UmaTest.Infra.Command;
18+using UmaTest.Infra.Domain.Translator;
1619
1720 namespace UmaTest.App.Presentation.View
1821 {
@@ -20,6 +23,9 @@ namespace UmaTest.App.Presentation.View
2023 {
2124 private IMainWindowViewModel vm;
2225
26+ private BindingSource bindingSource1 = new BindingSource();
27+ private BindingSource bindingSource2 = new BindingSource();
28+
2329 public MainWindow(IMainWindowViewModel vm, ICommandManager cm)
2430 {
2531 InitializeComponent();
@@ -31,8 +37,125 @@ namespace UmaTest.App.Presentation.View
3137 //this.pictureBox1.MouseUp += controller.MouseEvents[(int)MouseEventID.OnMouseUp];
3238 //this.pictureBox1.MouseWheel += controller.MouseEvents[(int)MouseEventID.OnMouseWheel];
3339
40+ //
41+ // Register commands
42+ //
43+
3444 cm.Bind(vm.CommandReadHorseList, this.toolStripMenuOpenHorseList);
3545
46+ //
47+ // DataGridView1
48+ //
49+
50+ bindingSource1.DataSource = vm.ChakudosuuList;
51+
52+ dataGridView1.AutoGenerateColumns = false;
53+ dataGridView1.AutoSize = true;
54+ dataGridView1.DataSource = bindingSource1;
55+
56+ DataGridViewColumn[] grid1Cols = new DataGridViewColumn[]
57+ {
58+ new DataGridViewTextBoxColumn
59+ {
60+ DataPropertyName = "Bamei",
61+ Name = "馬名",
62+ ReadOnly = true
63+ },
64+ new DataGridViewTextBoxColumn
65+ {
66+ DataPropertyName = "SexName",
67+ Name = "性別",
68+ ReadOnly = true
69+ },
70+ };
71+
72+ dataGridView1.Columns.AddRange(grid1Cols);
73+
74+ //
75+ // DataGridView2
76+ //
77+
78+ bindingSource2.DataSource = vm.RaceList;
79+
80+ dataGridView2.AutoGenerateColumns = false;
81+ dataGridView2.AutoSize = true;
82+ dataGridView2.DataSource = bindingSource2;
83+
84+ DataGridViewColumn[] grid2Cols = new DataGridViewColumn[]
85+ {
86+ new DataGridViewTextBoxColumn
87+ {
88+ DataPropertyName = "YearMonthDay",
89+ Name = "日付",
90+ ReadOnly = true
91+ },
92+ new DataGridViewTextBoxColumn
93+ {
94+ DataPropertyName = "RaceName",
95+ Name = "レース名",
96+ ReadOnly = true
97+ },
98+ new DataGridViewTextBoxColumn
99+ {
100+ DataPropertyName = "GradeName",
101+ Name = "グレード",
102+ ReadOnly = true
103+ },
104+ new DataGridViewTextBoxColumn
105+ {
106+ DataPropertyName = "Race.Kyori",
107+ Name = "距離",
108+ ReadOnly = true
109+ },
110+ new DataGridViewTextBoxColumn
111+ {
112+ DataPropertyName = "Ninki",
113+ Name = "人気",
114+ ReadOnly = true
115+ },
116+ new DataGridViewTextBoxColumn
117+ {
118+ DataPropertyName = "Kakuteijyuni",
119+ Name = "着順",
120+ ReadOnly = true
121+ },
122+ new DataGridViewTextBoxColumn
123+ {
124+ DataPropertyName = "Kisyuryakusyo",
125+ Name = "騎手",
126+ ReadOnly = true
127+ },
128+ new DataGridViewTextBoxColumn
129+ {
130+ DataPropertyName = "Futan",
131+ Name = "負担",
132+ ReadOnly = true
133+ },
134+ new DataGridViewTextBoxColumn
135+ {
136+ DataPropertyName = "Bataijyu",
137+ Name = "馬体重",
138+ ReadOnly = true
139+ },
140+ new DataGridViewTextBoxColumn
141+ {
142+ DataPropertyName = "Time",
143+ Name = "タイム",
144+ ReadOnly = true
145+ },
146+ };
147+
148+ dataGridView2.Columns.AddRange(grid2Cols);
149+
150+ //
151+ // Custom Type Descriptor
152+ //
153+
154+ TypeDescriptor.AddProvider(
155+ new NestedTypeDescriptionProvider<NRace>(TypeDescriptor.GetProvider(typeof(NUmaRaceWithNRace))),
156+ typeof(NUmaRaceWithNRace)
157+ );
158+
36159 this.vm = vm;
37160 }
38161
--- /dev/null
+++ b/Infra/Domain/Translator/ChildPropertyDescriptor.cs
@@ -0,0 +1,43 @@
1+using System;
2+using System.ComponentModel;
3+
4+namespace UmaTest.Infra.Domain.Translator
5+{
6+ public class ChildPropertyDescriptor : PropertyDescriptor
7+ {
8+ private PropertyDescriptor _subPD;
9+ private PropertyDescriptor _parentPD;
10+
11+ public ChildPropertyDescriptor(PropertyDescriptor parentPD, PropertyDescriptor subPD, string pdname)
12+ : base(pdname, null)
13+ {
14+ _subPD = subPD;
15+ _parentPD = parentPD;
16+ }
17+
18+ public override bool IsReadOnly { get { return false; } }
19+ public override void ResetValue(object component) { }
20+ public override bool CanResetValue(object component) { return false; }
21+ public override bool ShouldSerializeValue(object component)
22+ {
23+ return true;
24+ }
25+
26+ public override Type ComponentType
27+ {
28+ get { return _parentPD.ComponentType; }
29+ }
30+ public override Type PropertyType { get { return _subPD.PropertyType; } }
31+
32+ public override object GetValue(object component)
33+ {
34+ return _subPD.GetValue(_parentPD.GetValue(component));
35+ }
36+
37+ public override void SetValue(object component, object value)
38+ {
39+ _subPD.SetValue(_parentPD.GetValue(component), value);
40+ OnValueChanged(component, EventArgs.Empty);
41+ }
42+ }
43+}
\ No newline at end of file
--- /dev/null
+++ b/Infra/Domain/Translator/NestedTypeDescriptionProvider.cs
@@ -0,0 +1,27 @@
1+using System;
2+using System.Collections.Generic;
3+using System.ComponentModel;
4+using System.Linq;
5+using System.Text;
6+using System.Threading.Tasks;
7+
8+namespace UmaTest.Infra.Domain.Translator
9+{
10+ /// @see https://stackoverflow.com/questions/14259080/child-level-object-property-binding-in-datagridview-controls-in-c-sharp-winfor
11+ public class NestedTypeDescriptionProvider<T> : TypeDescriptionProvider
12+ {
13+ private ICustomTypeDescriptor td;
14+ public NestedTypeDescriptionProvider(TypeDescriptionProvider parent)
15+ : base(parent)
16+ {
17+ }
18+ public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
19+ {
20+ if (td == null)
21+ {
22+ td = new NestedTypeDescriptor(base.GetTypeDescriptor(objectType, instance), typeof(T));
23+ }
24+ return td;
25+ }
26+ }
27+}
--- /dev/null
+++ b/Infra/Domain/Translator/NestedTypeDescriptor.cs
@@ -0,0 +1,44 @@
1+using System;
2+using System.ComponentModel;
3+using UmaTest.Infra.Log;
4+
5+namespace UmaTest.Infra.Domain.Translator
6+{
7+ public class NestedTypeDescriptor : CustomTypeDescriptor
8+ {
9+ Type typeProperty;
10+ public NestedTypeDescriptor(ICustomTypeDescriptor parent, Type type)
11+ : base(parent)
12+ {
13+ typeProperty = type;
14+ }
15+ public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
16+ {
17+ PropertyDescriptorCollection cols = base.GetProperties(attributes);
18+
19+ string propertyName = "";
20+ foreach (PropertyDescriptor col in cols)
21+ {
22+ if (col.PropertyType.Name == typeProperty.Name)
23+ {
24+ propertyName = col.Name;
25+ Logger.Debug($"{col.PropertyType.Name}, {typeProperty.Name}");
26+ }
27+ }
28+ PropertyDescriptor pd = cols[propertyName];
29+ PropertyDescriptorCollection children = pd.GetChildProperties();
30+ PropertyDescriptor[] array = new PropertyDescriptor[cols.Count + children.Count];
31+ int count = cols.Count;
32+ cols.CopyTo(array, 0);
33+
34+ foreach (PropertyDescriptor cpd in children)
35+ {
36+ array[count] = new ChildPropertyDescriptor(pd, cpd, pd.Name + "." + cpd.Name);
37+ count++;
38+ }
39+
40+ PropertyDescriptorCollection newcols = new PropertyDescriptorCollection(array);
41+ return newcols;
42+ }
43+ }
44+}
\ No newline at end of file
--- /dev/null
+++ b/Infra/Helper/CodeHelper.cs
@@ -0,0 +1,92 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using System.Text;
5+using System.Threading.Tasks;
6+using UmaTest.Infra.Log;
7+
8+namespace UmaTest.Infra.Helper
9+{
10+ public class CodeHelper
11+ {
12+ public static readonly string GRADE_CODE = "2003";
13+ public static readonly string JYOKEN_CODE1 = "2007";
14+ public static readonly string SEX_CODE = "2202";
15+
16+ private const string ERROR_VALUE = "#ERROR";
17+
18+ private static CodeHelper me = null;
19+
20+ private Dictionary<string, Dictionary<string, string[]>> master = new Dictionary<string, Dictionary<string, string[]>>();
21+
22+ private CodeHelper()
23+ {
24+ Build();
25+ }
26+
27+ public static CodeHelper GetInstance()
28+ {
29+ if (me == null)
30+ {
31+ me = new CodeHelper();
32+ }
33+
34+ return me;
35+ }
36+
37+ public string GetName(string code, string value, string errorValue = ERROR_VALUE)
38+ {
39+ return GetName(code, value, 0, errorValue);
40+ }
41+
42+ public string GetName(string code, string value, int index, string errorValue = ERROR_VALUE)
43+ {
44+ if (!master.TryGetValue(code, out Dictionary<string, string[]> values))
45+ {
46+ return errorValue;
47+ }
48+
49+ if (!values.TryGetValue(value, out string[] names))
50+ {
51+ return errorValue;
52+ }
53+
54+ if (names.Length <= index)
55+ {
56+ return errorValue;
57+ }
58+
59+ return names[index];
60+ }
61+
62+ private void Build()
63+ {
64+ string csvFileName = "CodeMaster.CodeTable.csv";
65+
66+ string content = ResourceHelper.GetResourceFile(csvFileName);
67+
68+ string[] lines = content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
69+
70+ foreach (string line in lines)
71+ {
72+ string[] columnValues = line.Split(new char[] { ',' });
73+
74+ string code = columnValues[0];
75+
76+ if (!master.TryGetValue(code, out Dictionary<string, string[]> values))
77+ {
78+ values = new Dictionary<string, string[]>();
79+ master.Add(code, values);
80+ }
81+
82+ string[] names = new string[columnValues.Length - 2];
83+ Array.Copy(columnValues, 2, names, 0, names.Length);
84+
85+ string value = columnValues[1];
86+ values.Add(value, names);
87+
88+ Logger.Debug($"CodeMaster [code={code}, value={value}, {String.Join(", ", names)}]");
89+ }
90+ }
91+ }
92+}
--- a/Infra/Helper/DbHelper.cs
+++ b/Infra/Helper/DbHelper.cs
@@ -3,6 +3,7 @@ using PetaPoco.Providers;
33 using System;
44 using System.Collections.Generic;
55 using System.Data.Common;
6+using System.Diagnostics;
67 using System.IO;
78 using System.Linq;
89 using System.Reflection;
@@ -30,6 +31,10 @@ namespace UmaTest.Infra.Helper
3031 {
3132 return p.Invoke();
3233 }
34+ catch (ApplicationException)
35+ {
36+ throw;
37+ }
3338 catch (DbException e)
3439 {
3540 throw new DaoException("データベースへのアクセスに失敗しました", e);
@@ -40,34 +45,23 @@ namespace UmaTest.Infra.Helper
4045 }
4146 }
4247
43- internal static string GetResourceSQLFile(object dao, [CallerMemberName] string methodName = "")
48+ internal static string GetResourceSQLFile(object obj, [CallerMemberName] string methodName = "")
4449 {
45- return GetResourceSQLFile(dao.GetType(), methodName);
50+ return GetResourceSQLFile(obj.GetType(), methodName);
4651 }
4752
48- internal static string GetResourceSQLFile(Type daoType, [CallerMemberName] string methodName = "")
53+ internal static string GetResourceSQLFile(Type type, [CallerMemberName] string methodName = "")
4954 {
50- string className = daoType.Name;
51- string fileName = className + "_" + methodName + ".sql";
52- string resourceName = "UmaTest.Resources.Sql." + fileName;
53-
54- var asm = Assembly.GetExecutingAssembly();
55-
56- string content = "";
57- using (var stream = asm.GetManifestResourceStream(resourceName))
58- {
59- if (stream == null)
60- {
61- throw new ApplicationException($"埋め込みリソース {resourceName} が見つかりません");
62- }
55+ return GetResourceSQLFile(type.Name, methodName);
56+ }
6357
64- using (var sr = new StreamReader(stream))
65- {
66- content = sr.ReadToEnd();
67- }
68- }
58+ internal static string GetResourceSQLFile(string srcFileName, [CallerMemberName] string methodName = "")
59+ {
60+ string sqlFileName = srcFileName + "_" + methodName + ".sql";
61+ string resourceName = "Sql." + sqlFileName;
6962
70- return content;
63+ return ResourceHelper.GetResourceFile(resourceName);
7164 }
65+
7266 }
7367 }
--- a/Infra/Helper/LogicHelper .cs
+++ b/Infra/Helper/LogicHelper .cs
@@ -23,6 +23,10 @@ namespace UmaTest.Infra.Helper
2323 {
2424 return p.Invoke();
2525 }
26+ catch (ApplicationException)
27+ {
28+ throw;
29+ }
2630 catch (Exception e)
2731 {
2832 throw new LogicException("ロジックの実行中にエラーが発生しました", e);
--- /dev/null
+++ b/Infra/Helper/ResourceHelper.cs
@@ -0,0 +1,38 @@
1+using System;
2+using System.Collections.Generic;
3+using System.IO;
4+using System.Linq;
5+using System.Reflection;
6+using System.Text;
7+using System.Threading.Tasks;
8+
9+namespace UmaTest.Infra.Helper
10+{
11+ class ResourceHelper
12+ {
13+ private const string NAME_SPACE = "UmaTest.Resources.";
14+
15+ internal static string GetResourceFile(string path)
16+ {
17+ string resourceName = NAME_SPACE + path;
18+
19+ var asm = Assembly.GetExecutingAssembly();
20+
21+ string content = "";
22+ using (var stream = asm.GetManifestResourceStream(resourceName))
23+ {
24+ if (stream == null)
25+ {
26+ throw new ApplicationException($"埋め込みリソース {resourceName} が見つかりません");
27+ }
28+
29+ using (var sr = new StreamReader(stream))
30+ {
31+ content = sr.ReadToEnd();
32+ }
33+ }
34+
35+ return content;
36+ }
37+ }
38+}
--- /dev/null
+++ b/Resources/CodeMaster/CodeTable.csv
@@ -0,0 +1,473 @@
1+2001,00,,,,,,
2+2001,01,札幌競馬場,札,札幌,札幌,SAPPORO,
3+2001,02,函館競馬場,函,函館,函館,HAKODATE,
4+2001,03,福島競馬場,福,福島,福島,FUKUSHIMA,
5+2001,04,新潟競馬場,新,新潟,新潟,NIIGATA,
6+2001,05,東京競馬場,東,東京,東京,TOKYO,
7+2001,06,中山競馬場,中,中山,中山,NAKAYAMA,
8+2001,07,中京競馬場,名,中京,中京,CHUKYO,
9+2001,08,京都競馬場,京,京都,京都,KYOTO,
10+2001,09,阪神競馬場,阪,阪神,阪神,HANSHIN,
11+2001,10,小倉競馬場,小,小倉,小倉,KOKURA,
12+2001,30,門別競馬場,門,門別,門別,MONBETSU,
13+2001,31,北見競馬場,北,北見,北見,KITAMI,
14+2001,32,岩見沢競馬場,岩,岩見,岩見沢,IWAMIZAWA,
15+2001,33,帯広競馬場,帯,帯広,帯広,OBIHIRO,
16+2001,34,旭川競馬場,旭,旭川,旭川,ASAHIKAWA,
17+2001,35,盛岡競馬場,盛,盛岡,盛岡,MORIOKA,
18+2001,36,水沢競馬場,水,水沢,水沢,MIZUSAWA,
19+2001,37,上山競馬場,上,上山,上山,KAMINOYAMA,
20+2001,38,三条競馬場,三,三条,三条,SANJYO,
21+2001,39,足利競馬場,足,足利,足利,ASHIKAGA,
22+2001,40,宇都宮競馬場,宇,宇都,宇都宮,UTSUNOMIYA,
23+2001,41,高崎競馬場,高,高崎,高崎,TAKASAKI,
24+2001,42,浦和競馬場,浦,浦和,浦和,URAWA,
25+2001,43,船橋競馬場,船,船橋,船橋,FUNABASHI,
26+2001,44,大井競馬場,大,大井,大井,OOI,
27+2001,45,川崎競馬場,川,川崎,川崎,KAWASAKI,
28+2001,46,金沢競馬場,金,金沢,金沢,KANAZAWA,
29+2001,47,笠松競馬場,笠,笠松,笠松,KASAMATSU,
30+2001,48,名古屋競馬場,古,名古,名古屋,NAGOYA,
31+2001,49,紀三井寺競馬場,紀,紀三,紀三寺,KIMIIDERA,
32+2001,50,園田競馬場,園,園田,園田,SONODA,
33+2001,51,姫路競馬場,姫,姫路,姫路,HIMEJI,
34+2001,52,益田競馬場,益,益田,益田,MASUDA,
35+2001,53,福山競馬場,福,福山,福山,FUKUYAMA,
36+2001,54,高知競馬場,高,高知,高知,KOCHI,
37+2001,55,佐賀競馬場,佐,佐賀,佐賀,SAGA,
38+2001,56,荒尾競馬場,荒,荒尾,荒尾,ARAO,
39+2001,57,中津競馬場,中,中津,中津,NAKATSU,
40+2001,58,札幌競馬場(地方競馬),札,N-札,N-札幌,SAPPORO(NAR),
41+2001,59,函館競馬場(地方競馬),函,N-函,N-函館,HAKODATE(NAR),
42+2001,60,新潟競馬場(地方競馬),新,N-新,N-新潟,NIIGATA(NAR),
43+2001,61,中京競馬場(地方競馬),名,N-中,N-中京,CHUKYO(NAR),
44+2001,A0,その他の外国,外,他外,他外国,,
45+2001,A2,日本,日,日本,日本,Japan,JPN
46+2001,A4,アメリカ,米,アメ,アメリ,United States of America,USA
47+2001,A6,イギリス,英,イギ,イギリ,Great Britain,GB
48+2001,A8,フランス,仏,フラ,フラン,France,FR
49+2001,B0,インド,印,イン,インド,India,IND
50+2001,B2,アイルランド,愛,アイ,アイル,Ireland,IRE
51+2001,B4,ニュージーランド,新,ニュ,ニュー,New Zealand,NZ
52+2001,B6,オーストラリア,豪,オー,オース,Australia,AUS
53+2001,B8,カナダ,加,カナ,カナダ,Canada,CAN
54+2001,C0,イタリア,伊,イタ,イタリ,Italy,ITY
55+2001,C2,ドイツ,独,ドイ,ドイツ,Germany,GER
56+2001,C4,,,,,,
57+2001,C5,オマーン,オ,オマ,オマー,Oman,OMN
58+2001,C6,イラク,イ,イラ,イラク,Iraq,IRQ
59+2001,C7,アラブ首長国連邦,首,ア首,アラブ,United Arab Emirates,UAE
60+2001,C8,シリア,叙,シリ,シリア,Syrian,SYR
61+2001,D0,スウェーデン,瑞,スウ,スウェ,Sweden,SWE
62+2001,D2,ハンガリー,洪,ハン,ハンガ,Hungary,HUN
63+2001,D4,ポルトガル,葡,ポル,ポルト,Portugal,POR
64+2001,D6,ロシア,露,ロシ,ロシア,Russia,RUS
65+2001,D8,ウルグアイ,宇,ウル,ウルグ,Uruguay,URU
66+2001,E0,ペルー,秘,ペル,ペルー,Peru,PER
67+2001,E2,アルゼンチン,亜,アル,アルゼ,Argentina,ARG
68+2001,E4,ブラジル,伯,ブラ,ブラジ,Brazil,BRZ
69+2001,E6,ベルギー,白,ベル,ベルギ,Belgium,BEL
70+2001,E8,トルコ,土,トル,トルコ,Turkey,TUR
71+2001,F0,韓国,韓,韓国,韓国,Korea,KOR
72+2001,F1,中国,中,中国,中国,China,CHN
73+2001,F2,チリ,智,チリ,チリ,Chile,CHI
74+2001,F4,,,,,,
75+2001,F6,,,,,,
76+2001,F8,パナマ,巴,パナ,パナマ,Panama,PAN
77+2001,G0,香港,香,香港,香港,Hong Kong,HK
78+2001,G2,スペイン,西,スペ,スペイ,Spain,SPA
79+2001,G4,,,,,,
80+2001,G6,,,,,,
81+2001,G8,,,,,,
82+2001,H0,西ドイツ,独,西独,西独,West Germany,GER
83+2001,H2,南アフリカ,南,南ア,南アフ,South Africa,SAF
84+2001,H4,スイス,ス,スイ,スイス,Switzerland,SWI
85+2001,H6,モナコ,モ,モナ,モナコ,Monaco,MCO
86+2001,H8,フィリピン,比,フィ,フィリ,Philippines,PHI
87+2001,I0,プエルトリコ,プ,プエ,プエル,Puerto Rico,PUE
88+2001,I2,コロンビア,コ,コロ,コロン,Colombia,COL
89+2001,I4,チェコスロバキア,チ,チェ,チェコ,Czechoslovakia,CZE
90+2001,I6,チェコ,チ,チェ,チェコ,Czech Republic,CZE
91+2001,I8,スロバキア,ス,スロ,スロバ,Slovakia,SLO
92+2001,J0,エクアドル,エ,エク,エクア,Ecuador,ECU
93+2001,J2,ギリシャ,ギ,ギリ,ギリシ,Greece,GR
94+2001,J4,マレーシア,馬,マレ,マレー,Malaysia,MAL
95+2001,J6,メキシコ,墨,メキ,メキシ,Mexico,MEX
96+2001,J8,モロッコ,摩,モロ,モロッ,Morocco,MOR
97+2001,K0,パキスタン,基,パキ,パキス,Pakistan,PAK
98+2001,K2,ポーランド,波,ポー,ポーラ,Poland,POL
99+2001,K4,パラグアイ,拉,パラ,パラグ,Paraguay,PRY
100+2001,K6,サウジアラビア,サ,サウ,サウジ,Saudi Arabia,SDA
101+2001,K8,キプロス,キ,キプ,キプロ,Cyprus,CYP
102+2001,L0,タイ,泰,タイ,タイ,Thailand,THA
103+2001,L2,ウクライナ,烏,ウク,ウクラ,Ukraine,UKR
104+2001,L4,ベネズエラ,ベ,ベネ,ベネゼ,Venezuela,VEN
105+2001,L6,ユーゴスラビア,ユ,ユー,ユーゴ,Yugoslavia,YUG
106+2001,L8,デンマーク,丁,デン,デンマ,Denmark,DEN
107+2001,M0,シンガポール,嘉,シン,シンガ,Singapore,SIN
108+2001,M2,マカオ,澳,マカ,マカオ,Macau,MAC
109+2002,0,,,,,,
110+2002,1,土曜日,土,土曜,土曜日,SATURDAY,SAT
111+2002,2,日曜日,日,日曜,日曜日,SUNDAY,SUN
112+2002,3,祝日,祝,祝日,祝日,NATIONAL HOLIDAY,HOL
113+2002,4,月曜日,月,月曜,月曜日,MONDAY,MON
114+2002,5,火曜日,火,火曜,火曜日,TUESDAY,TUE
115+2002,6,水曜日,水,水曜,水曜日,WEDNESDAY,WED
116+2002,7,木曜日,木,木曜,木曜日,THURSDAY,THU
117+2002,8,金曜日,金,金曜,金曜日,FRIDAY,FRI
118+2003,A,G1(平地競走),,,,,
119+2003,B,G2(平地競走),,,,,
120+2003,C,G3(平地競走),,,,,
121+2003,D,グレードのない重賞,,,,,
122+2003,E,重賞以外の特別競走,,,,,
123+2003,F,J・G1(障害競走),,,,,
124+2003,G,J・G2(障害競走),,,,,
125+2003,H,J・G3(障害競走),,,,,
126+2003, ,,,,,,
127+2005,00,,,,,,
128+2005,11,サラブレッド系2歳,サラ2才,サラ系2歳,サラ系2歳,TWO-YEAR-OLDS,
129+2005,12,サラブレッド系3歳,サラ3才,サラ系3歳,サラ系3歳,THREE-YEAR-OLDS,
130+2005,13,サラブレッド系3歳以上,サラ3上,サラ系3歳上,サラ系3歳以上,THREE-YEAR-OLDS & UP,
131+2005,14,サラブレッド系4歳以上,サラ4上,サラ系4歳上,サラ系4歳以上,FOUR-YEAR-OLDS & UP,
132+2005,18,サラブレッド系障害3歳以上,障害3上,障害3歳上,サラ障害3歳以上,THREE-YEAR-OLDS & UP STEEPLE-CHASE,
133+2005,19,サラブレッド系障害4歳以上,障害4上,障害4歳上,サラ障害4歳以上,FOUR-YEAR-OLDS & UP STEEPLE-CHASE,
134+2005,21,アラブ系2歳,アラ2才,アラ系2歳,アラブ系2歳,TWO-YEAR-OLDS ANGLO-ARABS,
135+2005,22,アラブ系3歳,アラ3才,アラ系3歳,アラブ系3歳,THREE-YEAR-OLDS ANGLO-ARABS,
136+2005,23,アラブ系3歳以上,アラ3上,アラ系3歳上,アラブ系3歳以上,THREE-YEAR-OLDS & UP ANGLO-ARABS,
137+2005,24,アラブ系4歳以上,アラ4上,アラ系4歳上,アラブ系4歳以上,FOUR-YEAR-OLDS & UP ANGLO-ARABS,
138+2006,000,,,,,,
139+2006,001,(指定),DSN,,,,
140+2006,002,若手騎手,,,,,
141+2006,003,[指定],DES,,,,
142+2006,004,(特指),SD,,,,
143+2006,020,牝,F&M,,,,
144+2006,021,牝 (指定),F&M DSN,,,,
145+2006,023,牝 [指定],F&M DES,,,,
146+2006,024,牝 (特指),F&M SD,,,,
147+2006,030,牡・セン,C・G,,,,
148+2006,031,牡・セン (指定),C・G DSN,,,,
149+2006,033,牡・セン [指定],C・G DES,,,,
150+2006,034,牡・セン (特指),C・G SD,,,,
151+2006,040,牡・牝,C・F,,,,
152+2006,041,牡・牝 (指定),C・F DSN,,,,
153+2006,043,牡・牝 [指定],C・F DES,,,,
154+2006,044,牡・牝 (特指),C・F SD,,,,
155+2006,A00,(混合),MIX,,,,
156+2006,A01,(混合)(指定),MIX DSN,,,,
157+2006,A02,(混合) 若手騎手,MIX,,,,
158+2006,A03,(混合)[指定],MIX DES,,,,
159+2006,A04,(混合)(特指),MIX SD,,,,
160+2006,A10,(混合) 牡,MIX C,,,,
161+2006,A11,(混合) 牡 (指定),MIX C,,,,
162+2006,A13,(混合) 牡 [指定],MIX C DES,,,,
163+2006,A14,(混合) 牡 (特指),MIX C SD,,,,
164+2006,A20,(混合) 牝,MIX F&M,,,,
165+2006,A21,(混合) 牝 (指定),MIX F&M DSN,,,,
166+2006,A23,(混合) 牝 [指定],MIX F&M DES,,,,
167+2006,A24,(混合) 牝 (特指),MIX F&M SD,,,,
168+2006,A30,(混合) 牡・セン,MIX C・G,,,,
169+2006,A31,(混合) 牡・セン (指定),MIX C・G DSN,,,,
170+2006,A33,(混合) 牡・セン [指定],MIX C・G DES,,,,
171+2006,A34,(混合) 牡・セン (特指),MIX C・G SD,,,,
172+2006,A40,(混合) 牡・牝,MIX C・F,,,,
173+2006,A41,(混合) 牡・牝 (指定),MIX C・F DSN,,,,
174+2006,B00,(父),(D),,,,
175+2006,B01,(父)(指定),(D) DSN,,,,
176+2006,B03,(父)[指定],(D) DES,,,,
177+2006,B04,(父)(特指),(D) SD,,,,
178+2006,C00,(市),(A),,,,
179+2006,C01,(市)(指定),(A) DSN,,,,
180+2006,C03,(市)[指定],(A) DES,,,,
181+2006,C04,(市)(特指),(A) SD,,,,
182+2006,D00,(抽),(S),,,,
183+2006,D01,(抽)(指定),(S) DSN,,,,
184+2006,D03,(抽)[指定],(S) DES,,,,
185+2006,E00,[抽],,,,,
186+2006,E01,[抽](指定),DSN,,,,
187+2006,E03,[抽][指定],DES,,,,
188+2006,F00,(市)(抽),(A)(S),,,,
189+2006,F01,(市)(抽)(指定),(A)(S) DSN,,,,
190+2006,F03,(市)(抽)[指定],(A)(S) DES,,,,
191+2006,F04,(市)(抽)(特指),(A)(S) SD,,,,
192+2006,G00,(抽) 関西配布馬,,,,,
193+2006,G01,(抽) 関西配布馬 (指定),DSN,,,,
194+2006,G03,(抽) 関西配布馬 [指定],DES,,,,
195+2006,H00,(抽) 関東配布馬,,,,,
196+2006,H01,(抽) 関東配布馬 (指定),DSN,,,,
197+2006,I00,[抽] 関西配布馬,,,,,
198+2006,I01,[抽] 関西配布馬 (指定),DSN,,,,
199+2006,I03,[抽] 関西配布馬 [指定],DES,,,,
200+2006,J00,[抽] 関東配布馬,,,,,
201+2006,J01,[抽] 関東配布馬 (指定),DSN,,,,
202+2006,K00,(市)(抽) 関西配布馬,,,,,
203+2006,K01,(市)(抽) 関西配布馬 (指定),DSN,,,,
204+2006,K03,(市)(抽) 関西配布馬 [指定],DES,,,,
205+2006,L00,(市)(抽) 関東配布馬,,,,,
206+2006,L01,(市)(抽) 関東配布馬 (指定),DSN,,,,
207+2006,L03,(市)(抽) 関東配布馬 [指定],DES,,,,
208+2006,M00,九州産馬,,,,,
209+2006,M01,九州産馬 (指定),DSN,,,,
210+2006,M03,九州産馬 [指定],DES,,,,
211+2006,M04,九州産馬 (特指),SD,,,,
212+2006,N00,(国際),INT,,,,
213+2006,N01,(国際)(指定),INT DSN,,,,
214+2006,N03,(国際)[指定],INT DES,,,,
215+2006,N04,(国際)(特指),INT SD,,,,
216+2006,N20,(国際) 牝,INT F&M,,,,
217+2006,N21,(国際) 牝 (指定),INT F&M DSN,,,,
218+2006,N23,(国際) 牝 [指定],INT F&M DES,,,,
219+2006,N24,(国際) 牝 (特指),INT F&M SD,,,,
220+2006,N30,(国際) 牡・セン,INT C・G,,,,
221+2006,N31,(国際) 牡・セン (指定),INT C・G DSN,,,,
222+2006,N40,(国際) 牡・牝,INT C・F,,,,
223+2006,N41,(国際) 牡・牝 (指定),INT C・F DSN,,,,
224+2007,000,,,,,,
225+2007,001,100万円以下,1000000 & LESS,,,,
226+2007,002,200万円以下,2000000 & LESS,,,,
227+2007,003,300万円以下,3000000 & LESS,,,,
228+2007,004,400万円以下,4000000 & LESS,,,,
229+2007,005,500万円以下,5000000 & LESS,,,,
230+2007,006,600万円以下,6000000 & LESS,,,,
231+2007,007,700万円以下,7000000 & LESS,,,,
232+2007,008,800万円以下,8000000 & LESS,,,,
233+2007,009,900万円以下,9000000 & LESS,,,,
234+2007,010,1000万円以下,10000000 & LESS,,,,
235+2007,011,1100万円以下,11000000 & LESS,,,,
236+2007,012,1200万円以下,12000000 & LESS,,,,
237+2007,013,1300万円以下,13000000 & LESS,,,,
238+2007,014,1400万円以下,14000000 & LESS,,,,
239+2007,015,1500万円以下,15000000 & LESS,,,,
240+2007,016,1600万円以下,16000000 & LESS,,,,
241+2007,017,1700万円以下,17000000 & LESS,,,,
242+2007,018,1800万円以下,18000000 & LESS,,,,
243+2007,019,1900万円以下,19000000 & LESS,,,,
244+2007,020,2000万円以下,20000000 & LESS,,,,
245+2007,021,2100万円以下,21000000 & LESS,,,,
246+2007,022,2200万円以下,22000000 & LESS,,,,
247+2007,023,2300万円以下,23000000 & LESS,,,,
248+2007,024,2400万円以下,24000000 & LESS,,,,
249+2007,025,2500万円以下,25000000 & LESS,,,,
250+2007,026,2600万円以下,26000000 & LESS,,,,
251+2007,027,2700万円以下,27000000 & LESS,,,,
252+2007,028,2800万円以下,28000000 & LESS,,,,
253+2007,029,2900万円以下,29000000 & LESS,,,,
254+2007,030,3000万円以下,30000000 & LESS,,,,
255+2007,031,3100万円以下,31000000 & LESS,,,,
256+2007,032,3200万円以下,32000000 & LESS,,,,
257+2007,033,3300万円以下,33000000 & LESS,,,,
258+2007,034,3400万円以下,34000000 & LESS,,,,
259+2007,035,3500万円以下,35000000 & LESS,,,,
260+2007,036,3600万円以下,36000000 & LESS,,,,
261+2007,037,3700万円以下,37000000 & LESS,,,,
262+2007,038,3800万円以下,38000000 & LESS,,,,
263+2007,039,3900万円以下,39000000 & LESS,,,,
264+2007,040,4000万円以下,40000000 & LESS,,,,
265+2007,041,4100万円以下,41000000 & LESS,,,,
266+2007,042,4200万円以下,42000000 & LESS,,,,
267+2007,043,4300万円以下,43000000 & LESS,,,,
268+2007,044,4400万円以下,44000000 & LESS,,,,
269+2007,045,4500万円以下,45000000 & LESS,,,,
270+2007,046,4600万円以下,46000000 & LESS,,,,
271+2007,047,4700万円以下,47000000 & LESS,,,,
272+2007,048,4800万円以下,48000000 & LESS,,,,
273+2007,049,4900万円以下,49000000 & LESS,,,,
274+2007,050,5000万円以下,50000000 & LESS,,,,
275+2007,051,5100万円以下,51000000 & LESS,,,,
276+2007,052,5200万円以下,52000000 & LESS,,,,
277+2007,053,5300万円以下,53000000 & LESS,,,,
278+2007,054,5400万円以下,54000000 & LESS,,,,
279+2007,055,5500万円以下,55000000 & LESS,,,,
280+2007,056,5600万円以下,56000000 & LESS,,,,
281+2007,057,5700万円以下,57000000 & LESS,,,,
282+2007,058,5800万円以下,58000000 & LESS,,,,
283+2007,059,5900万円以下,59000000 & LESS,,,,
284+2007,060,6000万円以下,60000000 & LESS,,,,
285+2007,061,6100万円以下,61000000 & LESS,,,,
286+2007,062,6200万円以下,62000000 & LESS,,,,
287+2007,063,6300万円以下,63000000 & LESS,,,,
288+2007,064,6400万円以下,64000000 & LESS,,,,
289+2007,065,6500万円以下,65000000 & LESS,,,,
290+2007,066,6600万円以下,66000000 & LESS,,,,
291+2007,067,6700万円以下,67000000 & LESS,,,,
292+2007,068,6800万円以下,68000000 & LESS,,,,
293+2007,069,6900万円以下,69000000 & LESS,,,,
294+2007,070,7000万円以下,70000000 & LESS,,,,
295+2007,071,7100万円以下,71000000 & LESS,,,,
296+2007,072,7200万円以下,72000000 & LESS,,,,
297+2007,073,7300万円以下,73000000 & LESS,,,,
298+2007,074,7400万円以下,74000000 & LESS,,,,
299+2007,075,7500万円以下,75000000 & LESS,,,,
300+2007,076,7600万円以下,76000000 & LESS,,,,
301+2007,077,7700万円以下,77000000 & LESS,,,,
302+2007,078,7800万円以下,78000000 & LESS,,,,
303+2007,079,7900万円以下,79000000 & LESS,,,,
304+2007,080,8000万円以下,80000000 & LESS,,,,
305+2007,081,8100万円以下,81000000 & LESS,,,,
306+2007,082,8200万円以下,82000000 & LESS,,,,
307+2007,083,8300万円以下,83000000 & LESS,,,,
308+2007,084,8400万円以下,84000000 & LESS,,,,
309+2007,085,8500万円以下,85000000 & LESS,,,,
310+2007,086,8600万円以下,86000000 & LESS,,,,
311+2007,087,8700万円以下,87000000 & LESS,,,,
312+2007,088,8800万円以下,88000000 & LESS,,,,
313+2007,089,8900万円以下,89000000 & LESS,,,,
314+2007,090,9000万円以下,90000000 & LESS,,,,
315+2007,091,9100万円以下,91000000 & LESS,,,,
316+2007,092,9200万円以下,92000000 & LESS,,,,
317+2007,093,9300万円以下,93000000 & LESS,,,,
318+2007,094,9400万円以下,94000000 & LESS,,,,
319+2007,095,9500万円以下,95000000 & LESS,,,,
320+2007,096,9600万円以下,96000000 & LESS,,,,
321+2007,097,9700万円以下,97000000 & LESS,,,,
322+2007,098,9800万円以下,98000000 & LESS,,,,
323+2007,099,9900万円以下,99000000 & LESS,,,,
324+2007,100,1億円以下,100000000 & LESS,,,,
325+2007,701,新馬,NEWCOMER,,,,
326+2007,702,未出走,UNRACED,,,,
327+2007,703,未勝利,MAIDEN,,,,
328+2007,999,オープン,OPEN,,,,
329+2008,0,,,,,,
330+2008,1,ハンデ,HANDICAP,,,,
331+2008,2,別定,SPECIAL WEIGHT,,,,
332+2008,3,馬齢,WEIGHT FOR AGE,,,,
333+2008,4,定量,SPECIAL WEIGHT,,,,
334+2009,00,,,,,,
335+2009,10,平地 芝    直線,芝・直,Turf Str.,,,
336+2009,11,平地 芝    左回り,芝・左,Turf,,,
337+2009,12,平地 芝   左回り 外回り,芝・左外,Turf,,,
338+2009,13,平地 芝   左回り 内-外回り,芝・左内→外,Turf,,,
339+2009,14,平地 芝   左回り 外-内回り,芝・左外→内,Turf,,,
340+2009,15,平地 芝   左回り 内2周,芝・左内2周,Turf,,,
341+2009,16,平地 芝   左回り 外2周,芝・左外2周,Turf,,,
342+2009,17,平地 芝   右回り,芝・右,Turf,,,
343+2009,18,平地 芝   右回り 外回り,芝・右外,Turf,,,
344+2009,19,平地 芝   右回り 内-外回り,芝・右内→外,Turf,,,
345+2009,20,平地 芝   右回り 外-内回り,芝・右外→内,Turf,,,
346+2009,21,平地 芝   右回り 内2周,芝・右内2周,Turf,,,
347+2009,22,平地 芝   右回り 外2周,芝・右外2周,Turf,,,
348+2009,23,平地 ダート 左回り,ダート・左,Dirt,,,
349+2009,24,平地 ダート 右回り,ダート・右,Dirt,,,
350+2009,25,平地 ダート 左回り 内回り,ダート・左内,Dirt,,,
351+2009,26,平地 ダート 右回り 外回り,ダート・右外,Dirt,,,
352+2009,27,平地 サンド 左回り,サンド・左,Sand,,,
353+2009,28,平地 サンド 右回り,サンド・右,Sand,,,
354+2009,29,平地 ダート 直線,ダート・直,Dirt Str.,,,
355+2009,51,障害 芝 襷,芝・襷,Turf,,,
356+2009,52,障害 芝 ダート,芝→ダート,Turf→Dirt,,,
357+2009,53,障害 芝・左,芝・左,Turf,,,
358+2009,54,障害 芝,芝,Turf,,,
359+2009,55,障害 芝 外回り,芝・外,Turf,,,
360+2009,56,障害 芝 外-内回り,芝・外→内,Turf,,,
361+2009,57,障害 芝 内-外回り,芝・内→外,Turf,,,
362+2009,58,障害 芝 内2周,芝・内2周,Turf,,,
363+2009,59,障害 芝 外2周,芝・外2周,Turf,,,
364+2010,0,,,,,,
365+2010,1,良,Firm,Standard,,,
366+2010,2,稍重,Good,Good,,,
367+2010,3,重,Yielding,Muddy,,,
368+2010,4,不良,Soft,Sloppy,,,
369+2011,0,,,,,,
370+2011,1,晴,Fine,,,,
371+2011,2,曇,Cloudy,,,,
372+2011,3,雨,Rainy,,,,
373+2011,4,小雨,Drizzle,,,,
374+2011,5,雪,Snow,,,,
375+2011,6,小雪,Light Snow,,,,
376+2101,0,,,,,,
377+2101,1,出走取消,取消,SCRATCHED,S,,
378+2101,2,発走除外,発除,EXCLUDED BY STARTERS,ES,,
379+2101,3,競走除外,競除,EXCLUDED BY STEWARDS,ER,,
380+2101,4,競走中止,中止,FALL TO FINISH,FF,,
381+2101,5,失格,失格,DISQUALIFIED,DQ,,
382+2101,6,落馬再騎乗,再騎,REMOUNT AFTER A CROPPER,RM,,
383+2101,7,降着,降着,DISQUALIFIED AND PLACED,DQ&P,,
384+2102, ,,,,,,
385+2102, 12,1/2馬身,1/2,1/2,,,
386+2102, 34,3/4馬身,3/4,3/4,,,
387+2102,1 ,1馬身,1,1,,,
388+2102,112,11/2馬身,11/2,11/2,,,
389+2102,114,11/4馬身,11/4,11/4,,,
390+2102,134,13/4馬身,13/4,13/4,,,
391+2102,2 ,2馬身,2,2,,,
392+2102,212,21/2馬身,21/2,21/2,,,
393+2102,3 ,3馬身,3,3,,,
394+2102,312,31/2馬身,31/2,31/2,,,
395+2102,4 ,4馬身,4,4,,,
396+2102,5 ,5馬身,5,5,,,
397+2102,6 ,6馬身,6,6,,,
398+2102,7 ,7馬身,7,7,,,
399+2102,8 ,8馬身,8,8,,,
400+2102,9 ,9馬身,9,9,,,
401+2102,A ,アタマ,アタマ,HD,,,
402+2102,D ,同着,同着,DH,,,
403+2102,H ,ハナ,ハナ,NS,,,
404+2102,K ,クビ,クビ,NK,,,
405+2102,T ,大差,大差,DS,,,
406+2102,Z ,10馬身,10,10,,,
407+2201,0,,,,,,
408+2201,1,サラブレッド,サラ,,,,
409+2201,2,サラブレッド系種,サラ系,,,,
410+2201,3,準サラブレッド,準サラ,,,,
411+2201,4,軽半血種,軽半,,,,
412+2201,5,アングロアラブ,アア,,,,
413+2201,6,アラブ系種,アラ系,,,,
414+2201,7,アラブ,アラブ,,,,
415+2201,8,中半血種,中半,,,,
416+2202,0,,,,,,
417+2202,1,牡馬,C,H,,,
418+2202,2,牝馬,F,M,,,
419+2202,3,セン馬,G,G,,,
420+2203,00,,,,,,
421+2203,01,栗毛,chestnut,ch.,,,
422+2203,02,栃栗毛,dark chestnut,d.ch.,,,
423+2203,03,鹿毛,bay,b.,,,
424+2203,04,黒鹿毛,dark bay,d.b.,,,
425+2203,05,青鹿毛,brown,br.,,,
426+2203,06,青毛,black,bl.,,,
427+2203,07,芦毛,grey,g.,,,
428+2203,08,栗粕毛,,,,,
429+2203,09,鹿粕毛,,,,,
430+2203,10,青粕毛,,,,,
431+2203,11,白毛,white,w.,,,
432+2204,00,,,,,,
433+2204,01,(抽),(S),,,,
434+2204,02,[抽],,,,,
435+2204,03,(父),(D),,,,
436+2204,04,(市),(A),,,,
437+2204,05,(地),(R),,,,
438+2204,06,(外),(F),,,,
439+2204,07,(父)(抽),(D)(S),,,,
440+2204,08,(父)(市),(D)(A),,,,
441+2204,09,(父)(地),(D)(R),,,,
442+2204,10,(市)(地),(A)(R),,,,
443+2204,11,(外)(地),(F)(R),,,,
444+2204,12,(父)(市)(地),(D)(A)(R),,,,
445+2204,15,(招),(I),,,,
446+2204,16,(招)(外),(I)(F),,,,
447+2204,17,(招)(父),(I)(D),,,,
448+2204,18,(招)(市),(I)(A),,,,
449+2204,19,(招)(父)(市),(I)(D)(A),,,,
450+2204,20,(父)(外),,,,,
451+2204,21,[地],[R],,,,
452+2204,22,(外)[地],(F)[R],,,,
453+2204,23,(父)[地],(D)[R],,,,
454+2204,24,(市)[地],(A)[R],,,,
455+2204,25,(父)(市)[地],(D)(A)[R],,,,
456+2204,26,[外],[F],,,,
457+2204,27,(父)[外],(D)[F],,,,
458+2204,31,(持),,,,,
459+2204,40,(父)(外)(地),(D)(F)(R),,,,
460+2204,41,(父)(外)[地],(D)(F)[R],,,,
461+2301,0,,,,,,
462+2301,1,関東,美浦,,,,
463+2301,2,関西,栗東,,,,
464+2301,3,地方招待,招待,,,,
465+2301,4,外国招待,招待,,,,
466+2302,0,,,,,,
467+2302,1,平・障,,,,,
468+2302,2,平地,,,,,
469+2302,3,障害,,,,,
470+2303,0,,,,,,
471+2303,1,☆,1Kg減,,,,
472+2303,2,△,2Kg減,,,,
473+2303,3,▲,3Kg減,,,,
--- a/ToDo.txt
+++ b/ToDo.txt
@@ -1,3 +1,3 @@
1-Dto→TranslatorでReponse化する
2-Controller→InfraとAppで分割、Abstract化?
1+Controller→InfraとAppで分割、Abstract化?
32 子画面の開き方→ControllerのプロパティをVMがサブスクライブする、VMのプロパティをViewがサブスクライブする
3+propaertychangedeventhandlerextensionのmixinをinfraに移動(名前空間で対応)
--- a/UmaTest.csproj
+++ b/UmaTest.csproj
@@ -12,6 +12,21 @@
1212 <FileAlignment>512</FileAlignment>
1313 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
1414 <Deterministic>true</Deterministic>
15+ <PublishUrl>publish\</PublishUrl>
16+ <Install>true</Install>
17+ <InstallFrom>Disk</InstallFrom>
18+ <UpdateEnabled>false</UpdateEnabled>
19+ <UpdateMode>Foreground</UpdateMode>
20+ <UpdateInterval>7</UpdateInterval>
21+ <UpdateIntervalUnits>Days</UpdateIntervalUnits>
22+ <UpdatePeriodically>false</UpdatePeriodically>
23+ <UpdateRequired>false</UpdateRequired>
24+ <MapFileExtensions>true</MapFileExtensions>
25+ <ApplicationRevision>0</ApplicationRevision>
26+ <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
27+ <IsWebBootstrapper>false</IsWebBootstrapper>
28+ <UseApplicationTrust>false</UseApplicationTrust>
29+ <BootstrapperEnabled>true</BootstrapperEnabled>
1530 </PropertyGroup>
1631 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
1732 <PlatformTarget>AnyCPU</PlatformTarget>
@@ -87,12 +102,19 @@
87102 <Reference Include="System.Xml" />
88103 </ItemGroup>
89104 <ItemGroup>
105+ <Compile Include="App\Adaptor\Gateway\ViewModel\Dto\UmaRaceRowDto.cs" />
106+ <Compile Include="App\Adaptor\Gateway\ViewModel\Dto\ChakudosuuRowDto.cs" />
107+ <Compile Include="App\Adaptor\Gateway\ViewModel\IMainWindowViewModel.cs" />
90108 <Compile Include="App\Adaptor\Presenter\ILoadHorseRaceSummaryPresenter.cs" />
91109 <Compile Include="App\AppConfig.cs" />
92110 <Compile Include="App\AppConst.cs" />
111+ <Compile Include="App\Domain\Model\Logic\IUmaLogic.cs" />
93112 <Compile Include="App\Domain\Model\Logic\IUmaRaceLogic.cs" />
94- <Compile Include="App\Domain\Model\Logic\LogicException.cs" />
113+ <Compile Include="Infra\Domain\LogicException.cs" />
114+ <Compile Include="App\Domain\Model\Logic\UmaLogic.cs" />
115+ <Compile Include="App\Domain\Model\Repository\Database\Dao\INUmaDao.cs" />
95116 <Compile Include="App\Domain\Model\Repository\Database\Dao\INUmaRaceDao.cs" />
117+ <Compile Include="App\Domain\Model\Repository\Database\Dao\NUmaDao.cs" />
96118 <Compile Include="App\Domain\Translator\ILoadHorseRaceSummaryTranslator.cs" />
97119 <Compile Include="App\Domain\Translator\LoadHorseRaceSummaryTranslator.cs" />
98120 <Compile Include="App\Domain\UseCase\Interactor\ILoadHorseRaceSummaryInteractor.cs" />
@@ -103,9 +125,8 @@
103125 <Compile Include="App\Adaptor\Controller\IWindowController.cs" />
104126 <Compile Include="Infra\Adaptor\Controller\ShowWindowService.cs" />
105127 <Compile Include="App\Adaptor\Controller\WindowController.cs" />
106- <Compile Include="App\Adaptor\Presenter\IPresenter.cs" />
128+ <Compile Include="Infra\Adaptor\Presenter\IPresenter.cs" />
107129 <Compile Include="App\Adaptor\Presenter\LoadHorseRaceSummaryPresenter.cs" />
108- <Compile Include="App\Adaptor\Gateway\ViewModel\IMainWindowViewModel.cs" />
109130 <Compile Include="App\Adaptor\Gateway\ViewModel\IManualHorseListViewModel.cs" />
110131 <Compile Include="App\Adaptor\Gateway\ViewModel\MainWindowViewModel.cs" />
111132 <Compile Include="App\Adaptor\Gateway\ViewModel\ManualHorseListViewModel.cs" />
@@ -122,14 +143,14 @@
122143 <Compile Include="App\Presentation\View\ManualHorseList.Designer.cs">
123144 <DependentUpon>ManualHorseList.cs</DependentUpon>
124145 </Compile>
125- <Compile Include="App\Domain\Model\Repository\Database\Dao\DaoException.cs" />
146+ <Compile Include="Infra\Domain\DaoException.cs" />
126147 <Compile Include="App\Domain\Model\Repository\Database\Dao\NUmaRaceDao.cs" />
127148 <Compile Include="App\Domain\Model\Repository\Database\Dto\ChakudosuuSummary.cs" />
128149 <Compile Include="App\Domain\Model\Repository\Database\Dto\NUmaRaceWithNRace.cs" />
129150 <Compile Include="App\Domain\Model\Repository\Database\Entity\EveryDB2.cs" />
130- <Compile Include="App\Adaptor\Gateway\UI\DlgInfo.cs" />
131- <Compile Include="App\Adaptor\Gateway\UI\IUserDialogProxy.cs" />
132- <Compile Include="App\Adaptor\Gateway\UI\UserDialogProxy.cs" />
151+ <Compile Include="Infra\Adaptor\Gateway\UI\DlgInfo.cs" />
152+ <Compile Include="Infra\Adaptor\Gateway\UI\IUserDialogProxy.cs" />
153+ <Compile Include="Infra\Adaptor\Gateway\UI\UserDialogProxy.cs" />
133154 <Compile Include="Infra\Adaptor\Command\AbstractCommand.cs" />
134155 <Compile Include="Infra\Adaptor\Command\AbstractCommandBinder.cs" />
135156 <Compile Include="Infra\Adaptor\Command\CommandManager.cs">
@@ -146,10 +167,15 @@
146167 <Compile Include="Infra\DI\DIExceptionHelper.cs" />
147168 <Compile Include="Infra\DI\IComponentConnector.cs" />
148169 <Compile Include="Infra\Adaptor\Controller\Handler\IRequestHandler.cs" />
170+ <Compile Include="Infra\Domain\Translator\ChildPropertyDescriptor.cs" />
171+ <Compile Include="Infra\Domain\Translator\NestedTypeDescriptor.cs" />
149172 <Compile Include="Infra\Helper\BeanHelper.cs" />
173+ <Compile Include="Infra\Helper\CodeHelper.cs" />
150174 <Compile Include="Infra\Helper\LogicHelper .cs" />
151175 <Compile Include="Infra\Helper\DbHelper.cs" />
152176 <Compile Include="Infra\Helper\GenericsHelper.cs" />
177+ <Compile Include="Infra\Domain\Translator\NestedTypeDescriptionProvider.cs" />
178+ <Compile Include="Infra\Helper\ResourceHelper.cs" />
153179 <Compile Include="Infra\Log\Logger.cs" />
154180 <Compile Include="Infra\Domain\UseCase\IUseCaseInteractor.cs" />
155181 <Compile Include="Infra\Adaptor\Controller\Handler\IUseCaseRouter.cs" />
@@ -187,6 +213,7 @@
187213 <DependentUpon>Settings.settings</DependentUpon>
188214 <DesignTimeSharedInput>True</DesignTimeSharedInput>
189215 </Compile>
216+ <EmbeddedResource Include="Resources\CodeMaster\CodeTable.csv" />
190217 </ItemGroup>
191218 <ItemGroup>
192219 <None Include="App.config" />
@@ -196,6 +223,20 @@
196223 <EmbeddedResource Include="Resources\Sql\NUmaRaceDao_findRaceSummary.sql" />
197224 <Content Include="ToDo.txt" />
198225 </ItemGroup>
199- <ItemGroup />
226+ <ItemGroup>
227+ <Folder Include="Infra\Adaptor\ViewModel\" />
228+ </ItemGroup>
229+ <ItemGroup>
230+ <BootstrapperPackage Include=".NETFramework,Version=v4.8">
231+ <Visible>False</Visible>
232+ <ProductName>Microsoft .NET Framework 4.8 %28x86 および x64%29</ProductName>
233+ <Install>true</Install>
234+ </BootstrapperPackage>
235+ <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
236+ <Visible>False</Visible>
237+ <ProductName>.NET Framework 3.5 SP1</ProductName>
238+ <Install>false</Install>
239+ </BootstrapperPackage>
240+ </ItemGroup>
200241 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
201242 </Project>
\ No newline at end of file