aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/MSSQL/MSSQLAssetData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Data/MSSQL/MSSQLAssetData.cs')
-rw-r--r--OpenSim/Data/MSSQL/MSSQLAssetData.cs87
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 }