diff options
Diffstat (limited to 'OpenSim/Data/MSSQL/MSSQLAssetData.cs')
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLAssetData.cs | 87 |
1 files changed, 17 insertions, 70 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLAssetData.cs b/OpenSim/Data/MSSQL/MSSQLAssetData.cs index ec9d4f6..c7488d8 100644 --- a/OpenSim/Data/MSSQL/MSSQLAssetData.cs +++ b/OpenSim/Data/MSSQL/MSSQLAssetData.cs | |||
@@ -145,26 +145,19 @@ namespace OpenSim.Data.MSSQL | |||
145 | /// <param name="asset">the asset</param> | 145 | /// <param name="asset">the asset</param> |
146 | override public void StoreAsset(AssetBase asset) | 146 | override public void StoreAsset(AssetBase asset) |
147 | { | 147 | { |
148 | if (ExistsAsset(asset.FullID)) | 148 | |
149 | UpdateAsset(asset); | 149 | string sql = |
150 | else | 150 | @"IF EXISTS(SELECT * FROM assets WHERE id=@id) |
151 | InsertAsset(asset); | 151 | UPDATE assets set name = @name, description = @description, assetType = @assetType, |
152 | } | 152 | local = @local, temporary = @temporary, creatorid = @creatorid, data = @data |
153 | 153 | WHERE id=@id | |
154 | 154 | ELSE | |
155 | private void InsertAsset(AssetBase asset) | 155 | INSERT INTO assets |
156 | { | 156 | ([id], [name], [description], [assetType], [local], |
157 | if (ExistsAsset(asset.FullID)) | 157 | [temporary], [create_time], [access_time], [creatorid], [asset_flags], [data]) |
158 | { | 158 | VALUES |
159 | return; | 159 | (@id, @name, @description, @assetType, @local, |
160 | } | 160 | @temporary, @create_time, @access_time, @creatorid, @asset_flags, @data)"; |
161 | |||
162 | string sql = @"INSERT INTO assets | ||
163 | ([id], [name], [description], [assetType], [local], | ||
164 | [temporary], [create_time], [access_time], [creatorid], [asset_flags], [data]) | ||
165 | VALUES | ||
166 | (@id, @name, @description, @assetType, @local, | ||
167 | @temporary, @create_time, @access_time, @creatorid, @asset_flags, @data)"; | ||
168 | 161 | ||
169 | string assetName = asset.Name; | 162 | string assetName = asset.Name; |
170 | if (asset.Name.Length > 64) | 163 | if (asset.Name.Length > 64) |
@@ -202,58 +195,11 @@ namespace OpenSim.Data.MSSQL | |||
202 | } | 195 | } |
203 | catch(Exception e) | 196 | catch(Exception e) |
204 | { | 197 | { |
205 | m_log.Error("[ASSET DB]: Error inserting item :" + e.Message); | 198 | m_log.Error("[ASSET DB]: Error storing item :" + e.Message); |
206 | } | 199 | } |
207 | } | 200 | } |
208 | } | 201 | } |
209 | 202 | ||
210 | /// <summary> | ||
211 | /// Update asset in m_database | ||
212 | /// </summary> | ||
213 | /// <param name="asset">the asset</param> | ||
214 | private void UpdateAsset(AssetBase asset) | ||
215 | { | ||
216 | string sql = @"UPDATE assets set name = @name, description = @description, assetType = @assetType, | ||
217 | local = @local, temporary = @temporary, data = @data | ||
218 | , creatorid = @creatorid | ||
219 | WHERE id = @keyId;"; | ||
220 | |||
221 | string assetName = asset.Name; | ||
222 | if (asset.Name.Length > 64) | ||
223 | { | ||
224 | assetName = asset.Name.Substring(0, 64); | ||
225 | m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on update"); | ||
226 | } | ||
227 | |||
228 | string assetDescription = asset.Description; | ||
229 | if (asset.Description.Length > 64) | ||
230 | { | ||
231 | assetDescription = asset.Description.Substring(0, 64); | ||
232 | m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on update"); | ||
233 | } | ||
234 | |||
235 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
236 | using (SqlCommand command = new SqlCommand(sql, conn)) | ||
237 | { | ||
238 | command.Parameters.Add(m_database.CreateParameter("keyId", asset.FullID)); | ||
239 | command.Parameters.Add(m_database.CreateParameter("name", assetName)); | ||
240 | command.Parameters.Add(m_database.CreateParameter("description", assetDescription)); | ||
241 | command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type)); | ||
242 | command.Parameters.Add(m_database.CreateParameter("local", asset.Local)); | ||
243 | command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary)); | ||
244 | command.Parameters.Add(m_database.CreateParameter("data", asset.Data)); | ||
245 | command.Parameters.Add(m_database.CreateParameter("creatorid", asset.Metadata.CreatorID)); | ||
246 | conn.Open(); | ||
247 | try | ||
248 | { | ||
249 | command.ExecuteNonQuery(); | ||
250 | } | ||
251 | catch (Exception e) | ||
252 | { | ||
253 | m_log.Error(e.ToString()); | ||
254 | } | ||
255 | } | ||
256 | } | ||
257 | 203 | ||
258 | // Commented out since currently unused - this probably should be called in GetAsset() | 204 | // Commented out since currently unused - this probably should be called in GetAsset() |
259 | // private void UpdateAccessTime(AssetBase asset) | 205 | // private void UpdateAccessTime(AssetBase asset) |
@@ -302,7 +248,7 @@ namespace OpenSim.Data.MSSQL | |||
302 | string sql = @"WITH OrderedAssets AS | 248 | string sql = @"WITH OrderedAssets AS |
303 | ( | 249 | ( |
304 | SELECT id, name, description, assetType, temporary, creatorid, | 250 | SELECT id, name, description, assetType, temporary, creatorid, |
305 | Row = ROW_NUMBER() OVER (ORDER BY id) | 251 | RowNumber = ROW_NUMBER() OVER (ORDER BY id) |
306 | FROM assets | 252 | FROM assets |
307 | ) | 253 | ) |
308 | SELECT * | 254 | SELECT * |
@@ -320,12 +266,13 @@ namespace OpenSim.Data.MSSQL | |||
320 | while (reader.Read()) | 266 | while (reader.Read()) |
321 | { | 267 | { |
322 | AssetMetadata metadata = new AssetMetadata(); | 268 | AssetMetadata metadata = new AssetMetadata(); |
323 | metadata.FullID = new UUID((Guid)reader["id"]); | 269 | metadata.FullID = DBGuid.FromDB(reader["id"]); |
324 | metadata.Name = (string)reader["name"]; | 270 | metadata.Name = (string)reader["name"]; |
325 | metadata.Description = (string)reader["description"]; | 271 | metadata.Description = (string)reader["description"]; |
326 | metadata.Type = Convert.ToSByte(reader["assetType"]); | 272 | metadata.Type = Convert.ToSByte(reader["assetType"]); |
327 | metadata.Temporary = Convert.ToBoolean(reader["temporary"]); | 273 | metadata.Temporary = Convert.ToBoolean(reader["temporary"]); |
328 | metadata.CreatorID = (string)reader["creatorid"]; | 274 | metadata.CreatorID = (string)reader["creatorid"]; |
275 | retList.Add(metadata); | ||
329 | } | 276 | } |
330 | } | 277 | } |
331 | } | 278 | } |