0
|
1 using System.Data;
|
|
2
|
|
3 using BLToolkit.Reflection;
|
|
4
|
|
5 namespace BLToolkit.Mapping
|
|
6 {
|
|
7 public class DataTableMapper : IMapDataSourceList, IMapDataDestinationList
|
|
8 {
|
|
9 public DataTableMapper(DataTable dataTable, DataRowMapper mapper)
|
|
10 {
|
|
11 _table = dataTable;
|
|
12 _mapper = mapper;
|
|
13 }
|
|
14
|
|
15 private readonly DataTable _table;
|
|
16 private readonly DataRowMapper _mapper;
|
|
17 private int _currentRow;
|
|
18
|
|
19 #region IMapDataSourceList Members
|
|
20
|
|
21 void IMapDataSourceList.InitMapping(InitContext initContext)
|
|
22 {
|
|
23 initContext.DataSource = _mapper;
|
|
24 }
|
|
25
|
|
26 bool IMapDataSourceList.SetNextDataSource(InitContext initContext)
|
|
27 {
|
|
28 if (_currentRow >= _table.Rows.Count)
|
|
29 return false;
|
|
30
|
|
31 DataRow row = _table.Rows[_currentRow++];
|
|
32
|
|
33 if (row.RowState == DataRowState.Deleted)
|
|
34 return ((IMapDataSourceList)this).SetNextDataSource(initContext);
|
|
35
|
|
36 _mapper.DataRow = row;
|
|
37 initContext.SourceObject = row;
|
|
38
|
|
39 return true;
|
|
40 }
|
|
41
|
|
42 void IMapDataSourceList.EndMapping(InitContext initContext)
|
|
43 {
|
|
44 }
|
|
45
|
|
46 #endregion
|
|
47
|
|
48 #region IMapDataDestinationList Members
|
|
49
|
|
50 void IMapDataDestinationList.InitMapping(InitContext initContext)
|
|
51 {
|
|
52 }
|
|
53
|
|
54 IMapDataDestination IMapDataDestinationList.GetDataDestination(InitContext initContext)
|
|
55 {
|
|
56 return _mapper;
|
|
57 }
|
|
58
|
|
59 object IMapDataDestinationList.GetNextObject(InitContext initContext)
|
|
60 {
|
|
61 DataRow row = _table.NewRow();
|
|
62
|
|
63 _mapper.DataRow = row;
|
|
64 _table.Rows.Add(row);
|
|
65
|
|
66 return row;
|
|
67 }
|
|
68
|
|
69 void IMapDataDestinationList.EndMapping(InitContext initContext)
|
|
70 {
|
|
71 }
|
|
72
|
|
73 #endregion
|
|
74 }
|
|
75 }
|