diff options
Diffstat (limited to 'OpenSim/Data/Base')
-rw-r--r-- | OpenSim/Data/Base/AppearanceTableMapper.cs | 44 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseDataReader.cs | 66 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseDatabaseConnector.cs | 43 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseFieldMapper.cs | 46 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseRowMapper.cs | 19 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseSchema.cs | 26 | ||||
-rw-r--r-- | OpenSim/Data/Base/BaseTableMapper.cs | 151 |
7 files changed, 379 insertions, 16 deletions
diff --git a/OpenSim/Data/Base/AppearanceTableMapper.cs b/OpenSim/Data/Base/AppearanceTableMapper.cs index 60acfe0..7964880 100644 --- a/OpenSim/Data/Base/AppearanceTableMapper.cs +++ b/OpenSim/Data/Base/AppearanceTableMapper.cs | |||
@@ -32,6 +32,9 @@ using OpenSim.Framework; | |||
32 | 32 | ||
33 | namespace OpenSim.Data.Base | 33 | namespace OpenSim.Data.Base |
34 | { | 34 | { |
35 | /// <summary> | ||
36 | /// | ||
37 | /// </summary> | ||
35 | public class AppearanceRowMapper : BaseRowMapper<AvatarAppearance> | 38 | public class AppearanceRowMapper : BaseRowMapper<AvatarAppearance> |
36 | { | 39 | { |
37 | public AppearanceRowMapper(BaseSchema schema, AvatarAppearance obj) | 40 | public AppearanceRowMapper(BaseSchema schema, AvatarAppearance obj) |
@@ -40,6 +43,9 @@ namespace OpenSim.Data.Base | |||
40 | } | 43 | } |
41 | } | 44 | } |
42 | 45 | ||
46 | /// <summary> | ||
47 | /// | ||
48 | /// </summary> | ||
43 | public class AppearanceTableMapper : BaseTableMapper<AppearanceRowMapper, Guid> | 49 | public class AppearanceTableMapper : BaseTableMapper<AppearanceRowMapper, Guid> |
44 | { | 50 | { |
45 | public AppearanceTableMapper(BaseDatabaseConnector database, string tableName) | 51 | public AppearanceTableMapper(BaseDatabaseConnector database, string tableName) |
@@ -186,28 +192,55 @@ namespace OpenSim.Data.Base | |||
186 | 192 | ||
187 | } | 193 | } |
188 | 194 | ||
195 | /// <summary> | ||
196 | /// | ||
197 | /// </summary> | ||
198 | /// <param name="userID"></param> | ||
199 | /// <param name="appearance"></param> | ||
200 | /// <returns></returns> | ||
189 | public bool Add(Guid userID, AvatarAppearance appearance) | 201 | public bool Add(Guid userID, AvatarAppearance appearance) |
190 | { | 202 | { |
191 | AppearanceRowMapper mapper = CreateRowMapper(appearance); | 203 | AppearanceRowMapper mapper = CreateRowMapper(appearance); |
192 | return Add(mapper); | 204 | return Add(mapper); |
193 | } | 205 | } |
194 | 206 | ||
207 | /// <summary> | ||
208 | /// | ||
209 | /// </summary> | ||
210 | /// <param name="userID"></param> | ||
211 | /// <param name="appearance"></param> | ||
212 | /// <returns></returns> | ||
195 | public bool Update(Guid userID, AvatarAppearance appearance) | 213 | public bool Update(Guid userID, AvatarAppearance appearance) |
196 | { | 214 | { |
197 | AppearanceRowMapper mapper = CreateRowMapper(appearance); | 215 | AppearanceRowMapper mapper = CreateRowMapper(appearance); |
198 | return Update(appearance.Owner.UUID, mapper); | 216 | return Update(appearance.Owner.UUID, mapper); |
199 | } | 217 | } |
200 | 218 | ||
219 | /// <summary> | ||
220 | /// | ||
221 | /// </summary> | ||
222 | /// <param name="appearance"></param> | ||
223 | /// <returns></returns> | ||
201 | protected AppearanceRowMapper CreateRowMapper(AvatarAppearance appearance) | 224 | protected AppearanceRowMapper CreateRowMapper(AvatarAppearance appearance) |
202 | { | 225 | { |
203 | return new AppearanceRowMapper(m_schema, appearance); | 226 | return new AppearanceRowMapper(m_schema, appearance); |
204 | } | 227 | } |
205 | 228 | ||
229 | /// <summary> | ||
230 | /// | ||
231 | /// </summary> | ||
232 | /// <returns></returns> | ||
206 | protected AppearanceRowMapper CreateRowMapper() | 233 | protected AppearanceRowMapper CreateRowMapper() |
207 | { | 234 | { |
208 | return CreateRowMapper(new AvatarAppearance()); | 235 | return CreateRowMapper(new AvatarAppearance()); |
209 | } | 236 | } |
210 | 237 | ||
238 | /// <summary> | ||
239 | /// | ||
240 | /// </summary> | ||
241 | /// <param name="reader"></param> | ||
242 | /// <param name="appearance"></param> | ||
243 | /// <returns></returns> | ||
211 | protected AppearanceRowMapper FromReader(BaseDataReader reader, AvatarAppearance appearance) | 244 | protected AppearanceRowMapper FromReader(BaseDataReader reader, AvatarAppearance appearance) |
212 | { | 245 | { |
213 | AppearanceRowMapper mapper = CreateRowMapper(appearance); | 246 | AppearanceRowMapper mapper = CreateRowMapper(appearance); |
@@ -215,6 +248,11 @@ namespace OpenSim.Data.Base | |||
215 | return mapper; | 248 | return mapper; |
216 | } | 249 | } |
217 | 250 | ||
251 | /// <summary> | ||
252 | /// | ||
253 | /// </summary> | ||
254 | /// <param name="reader"></param> | ||
255 | /// <returns></returns> | ||
218 | public override AppearanceRowMapper FromReader(BaseDataReader reader) | 256 | public override AppearanceRowMapper FromReader(BaseDataReader reader) |
219 | { | 257 | { |
220 | AppearanceRowMapper mapper = CreateRowMapper(); | 258 | AppearanceRowMapper mapper = CreateRowMapper(); |
@@ -222,6 +260,12 @@ namespace OpenSim.Data.Base | |||
222 | return mapper; | 260 | return mapper; |
223 | } | 261 | } |
224 | 262 | ||
263 | /// <summary> | ||
264 | /// | ||
265 | /// </summary> | ||
266 | /// <param name="presenceID"></param> | ||
267 | /// <param name="val"></param> | ||
268 | /// <returns></returns> | ||
225 | public bool TryGetValue(Guid presenceID, out AvatarAppearance val) | 269 | public bool TryGetValue(Guid presenceID, out AvatarAppearance val) |
226 | { | 270 | { |
227 | AppearanceRowMapper mapper; | 271 | AppearanceRowMapper mapper; |
diff --git a/OpenSim/Data/Base/BaseDataReader.cs b/OpenSim/Data/Base/BaseDataReader.cs index 517f672..23f03e5 100644 --- a/OpenSim/Data/Base/BaseDataReader.cs +++ b/OpenSim/Data/Base/BaseDataReader.cs | |||
@@ -31,25 +31,47 @@ using System.IO; | |||
31 | 31 | ||
32 | namespace OpenSim.Data.Base | 32 | namespace OpenSim.Data.Base |
33 | { | 33 | { |
34 | /// <summary> | ||
35 | /// | ||
36 | /// </summary> | ||
34 | public abstract class BaseDataReader | 37 | public abstract class BaseDataReader |
35 | { | 38 | { |
36 | private readonly IDataReader m_source; | 39 | private readonly IDataReader m_source; |
37 | 40 | ||
41 | /// <summary> | ||
42 | /// | ||
43 | /// </summary> | ||
44 | /// <param name="source"></param> | ||
38 | public BaseDataReader(IDataReader source) | 45 | public BaseDataReader(IDataReader source) |
39 | { | 46 | { |
40 | m_source = source; | 47 | m_source = source; |
41 | } | 48 | } |
42 | 49 | ||
50 | /// <summary> | ||
51 | /// | ||
52 | /// </summary> | ||
53 | /// <param name="name"></param> | ||
54 | /// <returns></returns> | ||
43 | public object Get(string name) | 55 | public object Get(string name) |
44 | { | 56 | { |
45 | return m_source[name]; | 57 | return m_source[name]; |
46 | } | 58 | } |
47 | 59 | ||
60 | /// <summary> | ||
61 | /// | ||
62 | /// </summary> | ||
63 | /// <param name="name"></param> | ||
64 | /// <returns></returns> | ||
48 | public ushort GetUShort(string name) | 65 | public ushort GetUShort(string name) |
49 | { | 66 | { |
50 | return (ushort)m_source.GetInt32(m_source.GetOrdinal(name)); | 67 | return (ushort)m_source.GetInt32(m_source.GetOrdinal(name)); |
51 | } | 68 | } |
52 | 69 | ||
70 | /// <summary> | ||
71 | /// | ||
72 | /// </summary> | ||
73 | /// <param name="name"></param> | ||
74 | /// <returns></returns> | ||
53 | public byte GetByte(string name) | 75 | public byte GetByte(string name) |
54 | { | 76 | { |
55 | int ordinal = m_source.GetOrdinal(name); | 77 | int ordinal = m_source.GetOrdinal(name); |
@@ -57,16 +79,31 @@ namespace OpenSim.Data.Base | |||
57 | return value; | 79 | return value; |
58 | } | 80 | } |
59 | 81 | ||
82 | /// <summary> | ||
83 | /// | ||
84 | /// </summary> | ||
85 | /// <param name="name"></param> | ||
86 | /// <returns></returns> | ||
60 | public sbyte GetSByte(string name) | 87 | public sbyte GetSByte(string name) |
61 | { | 88 | { |
62 | return (sbyte)m_source.GetInt16(m_source.GetOrdinal(name)); | 89 | return (sbyte)m_source.GetInt16(m_source.GetOrdinal(name)); |
63 | } | 90 | } |
64 | 91 | ||
92 | /// <summary> | ||
93 | /// | ||
94 | /// </summary> | ||
95 | /// <param name="name"></param> | ||
96 | /// <returns></returns> | ||
65 | public float GetFloat(string name) | 97 | public float GetFloat(string name) |
66 | { | 98 | { |
67 | return m_source.GetFloat(m_source.GetOrdinal(name)); | 99 | return m_source.GetFloat(m_source.GetOrdinal(name)); |
68 | } | 100 | } |
69 | 101 | ||
102 | /// <summary> | ||
103 | /// | ||
104 | /// </summary> | ||
105 | /// <param name="name"></param> | ||
106 | /// <returns></returns> | ||
70 | public byte[] GetBytes(string name) | 107 | public byte[] GetBytes(string name) |
71 | { | 108 | { |
72 | int ordinal = m_source.GetOrdinal(name); | 109 | int ordinal = m_source.GetOrdinal(name); |
@@ -94,6 +131,11 @@ namespace OpenSim.Data.Base | |||
94 | return memStream.ToArray(); | 131 | return memStream.ToArray(); |
95 | } | 132 | } |
96 | 133 | ||
134 | /// <summary> | ||
135 | /// | ||
136 | /// </summary> | ||
137 | /// <param name="name"></param> | ||
138 | /// <returns></returns> | ||
97 | public string GetString(string name) | 139 | public string GetString(string name) |
98 | { | 140 | { |
99 | int ordinal = m_source.GetOrdinal(name); | 141 | int ordinal = m_source.GetOrdinal(name); |
@@ -107,21 +149,40 @@ namespace OpenSim.Data.Base | |||
107 | return (string)value; | 149 | return (string)value; |
108 | } | 150 | } |
109 | 151 | ||
152 | /// <summary> | ||
153 | /// | ||
154 | /// </summary> | ||
155 | /// <returns></returns> | ||
110 | public bool Read() | 156 | public bool Read() |
111 | { | 157 | { |
112 | return m_source.Read(); | 158 | return m_source.Read(); |
113 | } | 159 | } |
114 | 160 | ||
161 | /// <summary> | ||
162 | /// | ||
163 | /// </summary> | ||
164 | /// <param name="name"></param> | ||
165 | /// <returns></returns> | ||
115 | public virtual Guid GetGuid(string name) | 166 | public virtual Guid GetGuid(string name) |
116 | { | 167 | { |
117 | return m_source.GetGuid(m_source.GetOrdinal(name)); | 168 | return m_source.GetGuid(m_source.GetOrdinal(name)); |
118 | } | 169 | } |
119 | 170 | ||
171 | /// <summary> | ||
172 | /// | ||
173 | /// </summary> | ||
174 | /// <param name="name"></param> | ||
175 | /// <returns></returns> | ||
120 | public UInt32 GetUInt32(string name) | 176 | public UInt32 GetUInt32(string name) |
121 | { | 177 | { |
122 | return (UInt32)GetInt32(name); | 178 | return (UInt32)GetInt32(name); |
123 | } | 179 | } |
124 | 180 | ||
181 | /// <summary> | ||
182 | /// | ||
183 | /// </summary> | ||
184 | /// <param name="name"></param> | ||
185 | /// <returns></returns> | ||
125 | private Int32 GetInt32(string name) | 186 | private Int32 GetInt32(string name) |
126 | { | 187 | { |
127 | int ordinal = m_source.GetOrdinal(name); | 188 | int ordinal = m_source.GetOrdinal(name); |
@@ -129,6 +190,11 @@ namespace OpenSim.Data.Base | |||
129 | return int32; | 190 | return int32; |
130 | } | 191 | } |
131 | 192 | ||
193 | /// <summary> | ||
194 | /// | ||
195 | /// </summary> | ||
196 | /// <param name="name"></param> | ||
197 | /// <returns></returns> | ||
132 | public Int64 GetInt64(string name) | 198 | public Int64 GetInt64(string name) |
133 | { | 199 | { |
134 | int ordinal = m_source.GetOrdinal(name); | 200 | int ordinal = m_source.GetOrdinal(name); |
diff --git a/OpenSim/Data/Base/BaseDatabaseConnector.cs b/OpenSim/Data/Base/BaseDatabaseConnector.cs index 6988839..542004c 100644 --- a/OpenSim/Data/Base/BaseDatabaseConnector.cs +++ b/OpenSim/Data/Base/BaseDatabaseConnector.cs | |||
@@ -32,10 +32,17 @@ using System.Data.Common; | |||
32 | 32 | ||
33 | namespace OpenSim.Data.Base | 33 | namespace OpenSim.Data.Base |
34 | { | 34 | { |
35 | /// <summary> | ||
36 | /// | ||
37 | /// </summary> | ||
35 | public abstract class BaseDatabaseConnector | 38 | public abstract class BaseDatabaseConnector |
36 | { | 39 | { |
37 | protected string m_connectionString; | 40 | protected string m_connectionString; |
38 | 41 | ||
42 | /// <summary> | ||
43 | /// | ||
44 | /// </summary> | ||
45 | /// <param name="connectionString"></param> | ||
39 | public BaseDatabaseConnector(string connectionString) | 46 | public BaseDatabaseConnector(string connectionString) |
40 | { | 47 | { |
41 | m_connectionString = connectionString; | 48 | m_connectionString = connectionString; |
@@ -44,6 +51,14 @@ namespace OpenSim.Data.Base | |||
44 | public abstract DbConnection GetNewConnection(); | 51 | public abstract DbConnection GetNewConnection(); |
45 | public abstract string CreateParamName(string fieldName); | 52 | public abstract string CreateParamName(string fieldName); |
46 | 53 | ||
54 | /// <summary> | ||
55 | /// | ||
56 | /// </summary> | ||
57 | /// <param name="mapper"></param> | ||
58 | /// <param name="connection"></param> | ||
59 | /// <param name="fieldName"></param> | ||
60 | /// <param name="key"></param> | ||
61 | /// <returns></returns> | ||
47 | public DbCommand CreateSelectCommand(BaseTableMapper mapper, DbConnection connection, string fieldName, object key) | 62 | public DbCommand CreateSelectCommand(BaseTableMapper mapper, DbConnection connection, string fieldName, object key) |
48 | { | 63 | { |
49 | string table = mapper.TableName; | 64 | string table = mapper.TableName; |
@@ -61,6 +76,14 @@ namespace OpenSim.Data.Base | |||
61 | return command; | 76 | return command; |
62 | } | 77 | } |
63 | 78 | ||
79 | /// <summary> | ||
80 | /// | ||
81 | /// </summary> | ||
82 | /// <param name="mapper"></param> | ||
83 | /// <param name="command"></param> | ||
84 | /// <param name="fieldName"></param> | ||
85 | /// <param name="key"></param> | ||
86 | /// <returns></returns> | ||
64 | public string CreateCondition(BaseTableMapper mapper, DbCommand command, string fieldName, object key) | 87 | public string CreateCondition(BaseTableMapper mapper, DbCommand command, string fieldName, object key) |
65 | { | 88 | { |
66 | string keyFieldParamName = mapper.CreateParamName(fieldName); | 89 | string keyFieldParamName = mapper.CreateParamName(fieldName); |
@@ -73,6 +96,14 @@ namespace OpenSim.Data.Base | |||
73 | return String.Format("{0}={1}", fieldName, keyFieldParamName); | 96 | return String.Format("{0}={1}", fieldName, keyFieldParamName); |
74 | } | 97 | } |
75 | 98 | ||
99 | /// <summary> | ||
100 | /// | ||
101 | /// </summary> | ||
102 | /// <param name="mapper"></param> | ||
103 | /// <param name="connection"></param> | ||
104 | /// <param name="rowMapper"></param> | ||
105 | /// <param name="primaryKey"></param> | ||
106 | /// <returns></returns> | ||
76 | public DbCommand CreateUpdateCommand(BaseTableMapper mapper, DbConnection connection, object rowMapper, object primaryKey) | 107 | public DbCommand CreateUpdateCommand(BaseTableMapper mapper, DbConnection connection, object rowMapper, object primaryKey) |
77 | { | 108 | { |
78 | string table = mapper.TableName; | 109 | string table = mapper.TableName; |
@@ -105,6 +136,13 @@ namespace OpenSim.Data.Base | |||
105 | return command; | 136 | return command; |
106 | } | 137 | } |
107 | 138 | ||
139 | /// <summary> | ||
140 | /// | ||
141 | /// </summary> | ||
142 | /// <param name="mapper"></param> | ||
143 | /// <param name="connection"></param> | ||
144 | /// <param name="obj"></param> | ||
145 | /// <returns></returns> | ||
108 | public DbCommand CreateInsertCommand(BaseTableMapper mapper, DbConnection connection, object obj) | 146 | public DbCommand CreateInsertCommand(BaseTableMapper mapper, DbConnection connection, object obj) |
109 | { | 147 | { |
110 | string table = mapper.TableName; | 148 | string table = mapper.TableName; |
@@ -132,6 +170,11 @@ namespace OpenSim.Data.Base | |||
132 | return command; | 170 | return command; |
133 | } | 171 | } |
134 | 172 | ||
173 | /// <summary> | ||
174 | /// | ||
175 | /// </summary> | ||
176 | /// <param name="value"></param> | ||
177 | /// <returns></returns> | ||
135 | public virtual object ConvertToDbType(object value) | 178 | public virtual object ConvertToDbType(object value) |
136 | { | 179 | { |
137 | return value; | 180 | return value; |
diff --git a/OpenSim/Data/Base/BaseFieldMapper.cs b/OpenSim/Data/Base/BaseFieldMapper.cs index 4fdc7b9..c7d6bc9 100644 --- a/OpenSim/Data/Base/BaseFieldMapper.cs +++ b/OpenSim/Data/Base/BaseFieldMapper.cs | |||
@@ -34,11 +34,17 @@ namespace OpenSim.Data.Base | |||
34 | public delegate TField ObjectGetAccessor<TObj, TField>(TObj obj); | 34 | public delegate TField ObjectGetAccessor<TObj, TField>(TObj obj); |
35 | public delegate void ObjectSetAccessor<TObj, TField>(TObj obj, TField value); | 35 | public delegate void ObjectSetAccessor<TObj, TField>(TObj obj, TField value); |
36 | 36 | ||
37 | /// <summary> | ||
38 | /// | ||
39 | /// </summary> | ||
37 | public abstract class BaseFieldMapper | 40 | public abstract class BaseFieldMapper |
38 | { | 41 | { |
39 | private readonly BaseTableMapper m_tableMapper; | 42 | private readonly BaseTableMapper m_tableMapper; |
40 | private readonly string m_fieldName; | 43 | private readonly string m_fieldName; |
41 | 44 | ||
45 | /// <summary> | ||
46 | /// | ||
47 | /// </summary> | ||
42 | public string FieldName | 48 | public string FieldName |
43 | { | 49 | { |
44 | get { return m_fieldName; } | 50 | get { return m_fieldName; } |
@@ -46,6 +52,9 @@ namespace OpenSim.Data.Base | |||
46 | 52 | ||
47 | protected Type m_valueType; | 53 | protected Type m_valueType; |
48 | 54 | ||
55 | /// <summary> | ||
56 | /// | ||
57 | /// </summary> | ||
49 | public Type ValueType | 58 | public Type ValueType |
50 | { | 59 | { |
51 | get { return m_valueType; } | 60 | get { return m_valueType; } |
@@ -53,6 +62,12 @@ namespace OpenSim.Data.Base | |||
53 | 62 | ||
54 | public abstract object GetParamValue(object obj); | 63 | public abstract object GetParamValue(object obj); |
55 | 64 | ||
65 | /// <summary> | ||
66 | /// | ||
67 | /// </summary> | ||
68 | /// <param name="tableMapper"></param> | ||
69 | /// <param name="fieldName"></param> | ||
70 | /// <param name="valueType"></param> | ||
56 | public BaseFieldMapper(BaseTableMapper tableMapper, string fieldName, Type valueType) | 71 | public BaseFieldMapper(BaseTableMapper tableMapper, string fieldName, Type valueType) |
57 | { | 72 | { |
58 | m_fieldName = fieldName; | 73 | m_fieldName = fieldName; |
@@ -62,6 +77,13 @@ namespace OpenSim.Data.Base | |||
62 | 77 | ||
63 | public abstract void SetPropertyFromReader(object mapper, BaseDataReader reader); | 78 | public abstract void SetPropertyFromReader(object mapper, BaseDataReader reader); |
64 | 79 | ||
80 | /// <summary> | ||
81 | /// | ||
82 | /// </summary> | ||
83 | /// <param name="command"></param> | ||
84 | /// <param name="fieldNames"></param> | ||
85 | /// <param name="fieldName"></param> | ||
86 | /// <param name="value"></param> | ||
65 | public void RawAddParam(DbCommand command, List<string> fieldNames, string fieldName, object value) | 87 | public void RawAddParam(DbCommand command, List<string> fieldNames, string fieldName, object value) |
66 | { | 88 | { |
67 | string paramName = m_tableMapper.CreateParamName(fieldName); | 89 | string paramName = m_tableMapper.CreateParamName(fieldName); |
@@ -74,6 +96,13 @@ namespace OpenSim.Data.Base | |||
74 | command.Parameters.Add(param); | 96 | command.Parameters.Add(param); |
75 | } | 97 | } |
76 | 98 | ||
99 | /// <summary> | ||
100 | /// | ||
101 | /// </summary> | ||
102 | /// <typeparam name="TObj"></typeparam> | ||
103 | /// <param name="obj"></param> | ||
104 | /// <param name="command"></param> | ||
105 | /// <param name="fieldNames"></param> | ||
77 | public virtual void ExpandField<TObj>(TObj obj, DbCommand command, List<string> fieldNames) | 106 | public virtual void ExpandField<TObj>(TObj obj, DbCommand command, List<string> fieldNames) |
78 | { | 107 | { |
79 | string fieldName = FieldName; | 108 | string fieldName = FieldName; |
@@ -82,6 +111,11 @@ namespace OpenSim.Data.Base | |||
82 | RawAddParam(command, fieldNames, fieldName, m_tableMapper.ConvertToDbType(value)); | 111 | RawAddParam(command, fieldNames, fieldName, m_tableMapper.ConvertToDbType(value)); |
83 | } | 112 | } |
84 | 113 | ||
114 | /// <summary> | ||
115 | /// | ||
116 | /// </summary> | ||
117 | /// <param name="reader"></param> | ||
118 | /// <returns></returns> | ||
85 | protected virtual object GetValue(BaseDataReader reader) | 119 | protected virtual object GetValue(BaseDataReader reader) |
86 | { | 120 | { |
87 | object value; | 121 | object value; |
@@ -130,6 +164,11 @@ namespace OpenSim.Data.Base | |||
130 | } | 164 | } |
131 | } | 165 | } |
132 | 166 | ||
167 | /// <summary> | ||
168 | /// | ||
169 | /// </summary> | ||
170 | /// <typeparam name="TObject"></typeparam> | ||
171 | /// <typeparam name="TField"></typeparam> | ||
133 | public class ObjectField<TObject, TField> : BaseFieldMapper | 172 | public class ObjectField<TObject, TField> : BaseFieldMapper |
134 | { | 173 | { |
135 | private readonly ObjectGetAccessor<TObject, TField> m_fieldGetAccessor; | 174 | private readonly ObjectGetAccessor<TObject, TField> m_fieldGetAccessor; |
@@ -157,6 +196,13 @@ namespace OpenSim.Data.Base | |||
157 | } | 196 | } |
158 | 197 | ||
159 | 198 | ||
199 | /// <summary> | ||
200 | /// | ||
201 | /// </summary> | ||
202 | /// <param name="tableMapper"></param> | ||
203 | /// <param name="fieldName"></param> | ||
204 | /// <param name="rowMapperGetAccessor"></param> | ||
205 | /// <param name="rowMapperSetAccessor"></param> | ||
160 | public ObjectField(BaseTableMapper tableMapper, string fieldName, ObjectGetAccessor<TObject, TField> rowMapperGetAccessor, | 206 | public ObjectField(BaseTableMapper tableMapper, string fieldName, ObjectGetAccessor<TObject, TField> rowMapperGetAccessor, |
161 | ObjectSetAccessor<TObject, TField> rowMapperSetAccessor) | 207 | ObjectSetAccessor<TObject, TField> rowMapperSetAccessor) |
162 | : base(tableMapper, fieldName, typeof(TField)) | 208 | : base(tableMapper, fieldName, typeof(TField)) |
diff --git a/OpenSim/Data/Base/BaseRowMapper.cs b/OpenSim/Data/Base/BaseRowMapper.cs index a61ce49d..d07f9b3 100644 --- a/OpenSim/Data/Base/BaseRowMapper.cs +++ b/OpenSim/Data/Base/BaseRowMapper.cs | |||
@@ -27,27 +27,46 @@ | |||
27 | 27 | ||
28 | namespace OpenSim.Data.Base | 28 | namespace OpenSim.Data.Base |
29 | { | 29 | { |
30 | /// <summary> | ||
31 | /// | ||
32 | /// </summary> | ||
30 | public abstract class BaseRowMapper | 33 | public abstract class BaseRowMapper |
31 | { | 34 | { |
32 | public abstract void FillObject(BaseDataReader reader); | 35 | public abstract void FillObject(BaseDataReader reader); |
33 | } | 36 | } |
34 | 37 | ||
38 | /// <summary> | ||
39 | /// | ||
40 | /// </summary> | ||
41 | /// <typeparam name="TObj"></typeparam> | ||
35 | public class BaseRowMapper<TObj> : BaseRowMapper | 42 | public class BaseRowMapper<TObj> : BaseRowMapper |
36 | { | 43 | { |
37 | private readonly BaseSchema m_schema; | 44 | private readonly BaseSchema m_schema; |
38 | private readonly TObj m_obj; | 45 | private readonly TObj m_obj; |
39 | 46 | ||
47 | /// <summary> | ||
48 | /// | ||
49 | /// </summary> | ||
40 | public TObj Object | 50 | public TObj Object |
41 | { | 51 | { |
42 | get { return m_obj; } | 52 | get { return m_obj; } |
43 | } | 53 | } |
44 | 54 | ||
55 | /// <summary> | ||
56 | /// | ||
57 | /// </summary> | ||
58 | /// <param name="schema"></param> | ||
59 | /// <param name="obj"></param> | ||
45 | public BaseRowMapper(BaseSchema schema, TObj obj) | 60 | public BaseRowMapper(BaseSchema schema, TObj obj) |
46 | { | 61 | { |
47 | m_schema = schema; | 62 | m_schema = schema; |
48 | m_obj = obj; | 63 | m_obj = obj; |
49 | } | 64 | } |
50 | 65 | ||
66 | /// <summary> | ||
67 | /// | ||
68 | /// </summary> | ||
69 | /// <param name="reader"></param> | ||
51 | public override void FillObject(BaseDataReader reader) | 70 | public override void FillObject(BaseDataReader reader) |
52 | { | 71 | { |
53 | foreach (BaseFieldMapper fieldMapper in m_schema.Fields.Values) | 72 | foreach (BaseFieldMapper fieldMapper in m_schema.Fields.Values) |
diff --git a/OpenSim/Data/Base/BaseSchema.cs b/OpenSim/Data/Base/BaseSchema.cs index 656433f..9d69a40 100644 --- a/OpenSim/Data/Base/BaseSchema.cs +++ b/OpenSim/Data/Base/BaseSchema.cs | |||
@@ -29,16 +29,26 @@ using System.Collections.Generic; | |||
29 | 29 | ||
30 | namespace OpenSim.Data.Base | 30 | namespace OpenSim.Data.Base |
31 | { | 31 | { |
32 | /// <summary> | ||
33 | /// | ||
34 | /// </summary> | ||
32 | public class BaseSchema | 35 | public class BaseSchema |
33 | { | 36 | { |
34 | protected BaseTableMapper m_tableMapper; | 37 | protected BaseTableMapper m_tableMapper; |
35 | protected Dictionary<string, BaseFieldMapper> m_mappings; | 38 | protected Dictionary<string, BaseFieldMapper> m_mappings; |
36 | 39 | ||
40 | /// <summary> | ||
41 | /// | ||
42 | /// </summary> | ||
37 | public Dictionary<string, BaseFieldMapper> Fields | 43 | public Dictionary<string, BaseFieldMapper> Fields |
38 | { | 44 | { |
39 | get { return m_mappings; } | 45 | get { return m_mappings; } |
40 | } | 46 | } |
41 | 47 | ||
48 | /// <summary> | ||
49 | /// | ||
50 | /// </summary> | ||
51 | /// <param name="tableMapper"></param> | ||
42 | public BaseSchema(BaseTableMapper tableMapper) | 52 | public BaseSchema(BaseTableMapper tableMapper) |
43 | { | 53 | { |
44 | m_mappings = new Dictionary<string, BaseFieldMapper>(); | 54 | m_mappings = new Dictionary<string, BaseFieldMapper>(); |
@@ -46,13 +56,29 @@ namespace OpenSim.Data.Base | |||
46 | } | 56 | } |
47 | } | 57 | } |
48 | 58 | ||
59 | /// <summary> | ||
60 | /// | ||
61 | /// </summary> | ||
62 | /// <typeparam name="TObj"></typeparam> | ||
49 | public class BaseSchema<TObj> : BaseSchema | 63 | public class BaseSchema<TObj> : BaseSchema |
50 | { | 64 | { |
65 | /// <summary> | ||
66 | /// | ||
67 | /// </summary> | ||
68 | /// <param name="tableMapper"></param> | ||
51 | public BaseSchema(BaseTableMapper tableMapper) | 69 | public BaseSchema(BaseTableMapper tableMapper) |
52 | : base(tableMapper) | 70 | : base(tableMapper) |
53 | { | 71 | { |
54 | } | 72 | } |
55 | 73 | ||
74 | /// <summary> | ||
75 | /// | ||
76 | /// </summary> | ||
77 | /// <typeparam name="TField"></typeparam> | ||
78 | /// <param name="fieldName"></param> | ||
79 | /// <param name="rowMapperGetAccessor"></param> | ||
80 | /// <param name="rowMapperSetAccessor"></param> | ||
81 | /// <returns></returns> | ||
56 | public ObjectField<TObj, TField> AddMapping<TField>(string fieldName, | 82 | public ObjectField<TObj, TField> AddMapping<TField>(string fieldName, |
57 | ObjectGetAccessor<TObj, TField> rowMapperGetAccessor, | 83 | ObjectGetAccessor<TObj, TField> rowMapperGetAccessor, |
58 | ObjectSetAccessor<TObj, TField> rowMapperSetAccessor) | 84 | ObjectSetAccessor<TObj, TField> rowMapperSetAccessor) |
diff --git a/OpenSim/Data/Base/BaseTableMapper.cs b/OpenSim/Data/Base/BaseTableMapper.cs index 649b228..28b7ac8 100644 --- a/OpenSim/Data/Base/BaseTableMapper.cs +++ b/OpenSim/Data/Base/BaseTableMapper.cs | |||
@@ -31,11 +31,18 @@ using System.Data.Common; | |||
31 | 31 | ||
32 | namespace OpenSim.Data.Base | 32 | namespace OpenSim.Data.Base |
33 | { | 33 | { |
34 | /// <summary> | ||
35 | /// | ||
36 | /// </summary> | ||
34 | public abstract class BaseTableMapper | 37 | public abstract class BaseTableMapper |
35 | { | 38 | { |
36 | private readonly BaseDatabaseConnector m_database; | 39 | private readonly BaseDatabaseConnector m_database; |
37 | private readonly object m_syncRoot = new object(); | 40 | private readonly object m_syncRoot = new object(); |
38 | 41 | ||
42 | /// <summary> | ||
43 | /// | ||
44 | /// </summary> | ||
45 | /// <param name="action"></param> | ||
39 | protected void WithConnection(Action<DbConnection> action) | 46 | protected void WithConnection(Action<DbConnection> action) |
40 | { | 47 | { |
41 | lock (m_syncRoot) | 48 | lock (m_syncRoot) |
@@ -74,59 +81,124 @@ namespace OpenSim.Data.Base | |||
74 | get { return m_keyFieldMapper; } | 81 | get { return m_keyFieldMapper; } |
75 | } | 82 | } |
76 | 83 | ||
84 | /// <summary> | ||
85 | /// | ||
86 | /// </summary> | ||
87 | /// <param name="database"></param> | ||
88 | /// <param name="tableName"></param> | ||
77 | public BaseTableMapper(BaseDatabaseConnector database, string tableName) | 89 | public BaseTableMapper(BaseDatabaseConnector database, string tableName) |
78 | { | 90 | { |
79 | m_database = database; | 91 | m_database = database; |
80 | m_tableName = tableName.ToLower(); // Stupid MySQL hack. | 92 | m_tableName = tableName.ToLower(); // Stupid MySQL hack. |
81 | } | 93 | } |
82 | 94 | ||
95 | /// <summary> | ||
96 | /// | ||
97 | /// </summary> | ||
98 | /// <param name="fieldName"></param> | ||
99 | /// <returns></returns> | ||
83 | public string CreateParamName(string fieldName) | 100 | public string CreateParamName(string fieldName) |
84 | { | 101 | { |
85 | return m_database.CreateParamName(fieldName); | 102 | return m_database.CreateParamName(fieldName); |
86 | } | 103 | } |
87 | 104 | ||
105 | /// <summary> | ||
106 | /// | ||
107 | /// </summary> | ||
108 | /// <param name="connection"></param> | ||
109 | /// <param name="fieldName"></param> | ||
110 | /// <param name="primaryKey"></param> | ||
111 | /// <returns></returns> | ||
88 | protected DbCommand CreateSelectCommand(DbConnection connection, string fieldName, object primaryKey) | 112 | protected DbCommand CreateSelectCommand(DbConnection connection, string fieldName, object primaryKey) |
89 | { | 113 | { |
90 | return m_database.CreateSelectCommand(this, connection, fieldName, primaryKey); | 114 | return m_database.CreateSelectCommand(this, connection, fieldName, primaryKey); |
91 | } | 115 | } |
92 | 116 | ||
117 | /// <summary> | ||
118 | /// | ||
119 | /// </summary> | ||
120 | /// <param name="command"></param> | ||
121 | /// <param name="fieldName"></param> | ||
122 | /// <param name="key"></param> | ||
123 | /// <returns></returns> | ||
93 | public string CreateCondition(DbCommand command, string fieldName, object key) | 124 | public string CreateCondition(DbCommand command, string fieldName, object key) |
94 | { | 125 | { |
95 | return m_database.CreateCondition(this, command, fieldName, key); | 126 | return m_database.CreateCondition(this, command, fieldName, key); |
96 | } | 127 | } |
97 | 128 | ||
129 | /// <summary> | ||
130 | /// | ||
131 | /// </summary> | ||
132 | /// <param name="connection"></param> | ||
133 | /// <param name="obj"></param> | ||
134 | /// <returns></returns> | ||
98 | public DbCommand CreateInsertCommand(DbConnection connection, object obj) | 135 | public DbCommand CreateInsertCommand(DbConnection connection, object obj) |
99 | { | 136 | { |
100 | return m_database.CreateInsertCommand(this, connection, obj); | 137 | return m_database.CreateInsertCommand(this, connection, obj); |
101 | } | 138 | } |
102 | 139 | ||
140 | /// <summary> | ||
141 | /// | ||
142 | /// </summary> | ||
143 | /// <param name="connection"></param> | ||
144 | /// <param name="rowMapper"></param> | ||
145 | /// <param name="primaryKey"></param> | ||
146 | /// <returns></returns> | ||
103 | public DbCommand CreateUpdateCommand(DbConnection connection, object rowMapper, object primaryKey) | 147 | public DbCommand CreateUpdateCommand(DbConnection connection, object rowMapper, object primaryKey) |
104 | { | 148 | { |
105 | return m_database.CreateUpdateCommand(this, connection, rowMapper, primaryKey); | 149 | return m_database.CreateUpdateCommand(this, connection, rowMapper, primaryKey); |
106 | } | 150 | } |
107 | 151 | ||
152 | /// <summary> | ||
153 | /// | ||
154 | /// </summary> | ||
155 | /// <param name="value"></param> | ||
156 | /// <returns></returns> | ||
108 | public object ConvertToDbType(object value) | 157 | public object ConvertToDbType(object value) |
109 | { | 158 | { |
110 | return m_database.ConvertToDbType(value); | 159 | return m_database.ConvertToDbType(value); |
111 | } | 160 | } |
112 | 161 | ||
162 | /// <summary> | ||
163 | /// | ||
164 | /// </summary> | ||
165 | /// <param name="reader"></param> | ||
166 | /// <returns></returns> | ||
113 | protected virtual BaseDataReader CreateReader(IDataReader reader) | 167 | protected virtual BaseDataReader CreateReader(IDataReader reader) |
114 | { | 168 | { |
115 | return m_database.CreateReader(reader); | 169 | return m_database.CreateReader(reader); |
116 | } | 170 | } |
117 | } | 171 | } |
118 | 172 | ||
173 | /// <summary> | ||
174 | /// | ||
175 | /// </summary> | ||
176 | /// <typeparam name="TRowMapper"></typeparam> | ||
177 | /// <typeparam name="TPrimaryKey"></typeparam> | ||
119 | public abstract class BaseTableMapper<TRowMapper, TPrimaryKey> : BaseTableMapper | 178 | public abstract class BaseTableMapper<TRowMapper, TPrimaryKey> : BaseTableMapper |
120 | { | 179 | { |
180 | /// <summary> | ||
181 | /// | ||
182 | /// </summary> | ||
183 | /// <param name="database"></param> | ||
184 | /// <param name="tableName"></param> | ||
121 | public BaseTableMapper(BaseDatabaseConnector database, string tableName) | 185 | public BaseTableMapper(BaseDatabaseConnector database, string tableName) |
122 | : base(database, tableName) | 186 | : base(database, tableName) |
123 | { | 187 | { |
124 | } | 188 | } |
125 | 189 | ||
126 | // HACK: This is a temporary function used by TryGetValue(). | 190 | |
127 | // Due to a bug in mono 1.2.6, delegate blocks cannot contain | 191 | |
128 | // a using block. This has been fixed in SVN, so the next | 192 | /// <summary> |
129 | // mono release should work. | 193 | /// HACK: This is a temporary function used by TryGetValue(). |
194 | /// Due to a bug in mono 1.2.6, delegate blocks cannot contain | ||
195 | /// a using block. This has been fixed in SVN, so the next | ||
196 | /// mono release should work. | ||
197 | /// </summary> | ||
198 | /// <param name="connection"></param> | ||
199 | /// <param name="primaryKey"></param> | ||
200 | /// <param name="result"></param> | ||
201 | /// <param name="success"></param> | ||
130 | private void TryGetConnectionValue(DbConnection connection, TPrimaryKey primaryKey, ref TRowMapper result, ref bool success) | 202 | private void TryGetConnectionValue(DbConnection connection, TPrimaryKey primaryKey, ref TRowMapper result, ref bool success) |
131 | { | 203 | { |
132 | using ( | 204 | using ( |
@@ -148,6 +220,12 @@ namespace OpenSim.Data.Base | |||
148 | } | 220 | } |
149 | } | 221 | } |
150 | 222 | ||
223 | /// <summary> | ||
224 | /// | ||
225 | /// </summary> | ||
226 | /// <param name="primaryKey"></param> | ||
227 | /// <param name="value"></param> | ||
228 | /// <returns></returns> | ||
151 | public bool TryGetValue(TPrimaryKey primaryKey, out TRowMapper value) | 229 | public bool TryGetValue(TPrimaryKey primaryKey, out TRowMapper value) |
152 | { | 230 | { |
153 | TRowMapper result = default(TRowMapper); | 231 | TRowMapper result = default(TRowMapper); |
@@ -163,10 +241,15 @@ namespace OpenSim.Data.Base | |||
163 | return success; | 241 | return success; |
164 | } | 242 | } |
165 | 243 | ||
166 | // HACK: This is a temporary function used by Remove(). | 244 | /// <summary> |
167 | // Due to a bug in mono 1.2.6, delegate blocks cannot contain | 245 | /// HACK: This is a temporary function used by Remove(). |
168 | // a using block. This has been fixed in SVN, so the next | 246 | /// Due to a bug in mono 1.2.6, delegate blocks cannot contain |
169 | // mono release should work. | 247 | /// a using block. This has been fixed in SVN, so the next |
248 | /// mono release should work. | ||
249 | /// </summary> | ||
250 | /// <param name="connection"></param> | ||
251 | /// <param name="id"></param> | ||
252 | /// <param name="deleted"></param> | ||
170 | protected virtual void TryDelete(DbConnection connection, TPrimaryKey id, ref int deleted) | 253 | protected virtual void TryDelete(DbConnection connection, TPrimaryKey id, ref int deleted) |
171 | { | 254 | { |
172 | using ( | 255 | using ( |
@@ -177,6 +260,11 @@ namespace OpenSim.Data.Base | |||
177 | } | 260 | } |
178 | } | 261 | } |
179 | 262 | ||
263 | /// <summary> | ||
264 | /// | ||
265 | /// </summary> | ||
266 | /// <param name="id"></param> | ||
267 | /// <returns></returns> | ||
180 | public virtual bool Remove(TPrimaryKey id) | 268 | public virtual bool Remove(TPrimaryKey id) |
181 | { | 269 | { |
182 | int deleted = 0; | 270 | int deleted = 0; |
@@ -196,6 +284,13 @@ namespace OpenSim.Data.Base | |||
196 | } | 284 | } |
197 | } | 285 | } |
198 | 286 | ||
287 | /// <summary> | ||
288 | /// | ||
289 | /// </summary> | ||
290 | /// <param name="connection"></param> | ||
291 | /// <param name="fieldName"></param> | ||
292 | /// <param name="primaryKey"></param> | ||
293 | /// <returns></returns> | ||
199 | public DbCommand CreateDeleteCommand(DbConnection connection, string fieldName, TPrimaryKey primaryKey) | 294 | public DbCommand CreateDeleteCommand(DbConnection connection, string fieldName, TPrimaryKey primaryKey) |
200 | { | 295 | { |
201 | string table = TableName; | 296 | string table = TableName; |
@@ -213,10 +308,18 @@ namespace OpenSim.Data.Base | |||
213 | return command; | 308 | return command; |
214 | } | 309 | } |
215 | 310 | ||
216 | // HACK: This is a temporary function used by Update(). | 311 | |
217 | // Due to a bug in mono 1.2.6, delegate blocks cannot contain | 312 | |
218 | // a using block. This has been fixed in SVN, so the next | 313 | /// <summary> |
219 | // mono release should work. | 314 | /// HACK: This is a temporary function used by Update(). |
315 | /// Due to a bug in mono 1.2.6, delegate blocks cannot contain | ||
316 | /// a using block. This has been fixed in SVN, so the next | ||
317 | /// mono release should work. | ||
318 | /// </summary> | ||
319 | /// <param name="connection"></param> | ||
320 | /// <param name="primaryKey"></param> | ||
321 | /// <param name="value"></param> | ||
322 | /// <param name="updated"></param> | ||
220 | protected void TryUpdate(DbConnection connection, TPrimaryKey primaryKey, TRowMapper value, ref int updated) | 323 | protected void TryUpdate(DbConnection connection, TPrimaryKey primaryKey, TRowMapper value, ref int updated) |
221 | { | 324 | { |
222 | using (DbCommand command = CreateUpdateCommand(connection, value, primaryKey)) | 325 | using (DbCommand command = CreateUpdateCommand(connection, value, primaryKey)) |
@@ -225,6 +328,12 @@ namespace OpenSim.Data.Base | |||
225 | } | 328 | } |
226 | } | 329 | } |
227 | 330 | ||
331 | /// <summary> | ||
332 | /// | ||
333 | /// </summary> | ||
334 | /// <param name="primaryKey"></param> | ||
335 | /// <param name="value"></param> | ||
336 | /// <returns></returns> | ||
228 | public virtual bool Update(TPrimaryKey primaryKey, TRowMapper value) | 337 | public virtual bool Update(TPrimaryKey primaryKey, TRowMapper value) |
229 | { | 338 | { |
230 | int updated = 0; | 339 | int updated = 0; |
@@ -244,10 +353,15 @@ namespace OpenSim.Data.Base | |||
244 | } | 353 | } |
245 | } | 354 | } |
246 | 355 | ||
247 | // HACK: This is a temporary function used by Add(). | 356 | /// <summary> |
248 | // Due to a bug in mono 1.2.6, delegate blocks cannot contain | 357 | /// HACK: This is a temporary function used by Add(). |
249 | // a using block. This has been fixed in SVN, so the next | 358 | /// Due to a bug in mono 1.2.6, delegate blocks cannot contain |
250 | // mono release should work. | 359 | /// a using block. This has been fixed in SVN, so the next |
360 | /// mono release should work. | ||
361 | /// </summary> | ||
362 | /// <param name="connection"></param> | ||
363 | /// <param name="value"></param> | ||
364 | /// <param name="added"></param> | ||
251 | protected void TryAdd(DbConnection connection, TRowMapper value, ref int added) | 365 | protected void TryAdd(DbConnection connection, TRowMapper value, ref int added) |
252 | { | 366 | { |
253 | using (DbCommand command = CreateInsertCommand(connection, value)) | 367 | using (DbCommand command = CreateInsertCommand(connection, value)) |
@@ -256,6 +370,11 @@ namespace OpenSim.Data.Base | |||
256 | } | 370 | } |
257 | } | 371 | } |
258 | 372 | ||
373 | /// <summary> | ||
374 | /// | ||
375 | /// </summary> | ||
376 | /// <param name="value"></param> | ||
377 | /// <returns></returns> | ||
259 | public virtual bool Add(TRowMapper value) | 378 | public virtual bool Add(TRowMapper value) |
260 | { | 379 | { |
261 | int added = 0; | 380 | int added = 0; |