aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorAlexRa2010-05-18 14:19:19 +0300
committerAlexRa2010-05-19 01:32:50 +0300
commita27d49b1887700d78498ee0a369c2b3d93d2642c (patch)
treee5780142c8a7e939914a5e0f1535c438f2023ce1
parentLooks like the new files were never added to prebuild.xml (diff)
downloadopensim-SC-a27d49b1887700d78498ee0a369c2b3d93d2642c.zip
opensim-SC-a27d49b1887700d78498ee0a369c2b3d93d2642c.tar.gz
opensim-SC-a27d49b1887700d78498ee0a369c2b3d93d2642c.tar.bz2
opensim-SC-a27d49b1887700d78498ee0a369c2b3d93d2642c.tar.xz
Added DBGuids.cs (static func DBGuid.FromDB()
This DBMS-independent function to be used converting UUIDs from whatever format used in the DB (string/binary/Guid). This is mostly needed for MySQL, as in MSSQL they are always UNIQUEIDENTIFIERs and in SQLite always strings (but would look better if we use it there anyway).
-rw-r--r--OpenSim/Data/DBGuids.cs44
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Data/DBGuids.cs b/OpenSim/Data/DBGuids.cs
new file mode 100644
index 0000000..1a13e06
--- /dev/null
+++ b/OpenSim/Data/DBGuids.cs
@@ -0,0 +1,44 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using OpenMetaverse;
5
6namespace OpenSim.Data
7{
8
9 public static class DBGuid
10 {
11 /// <summary>This function converts a value returned from the database in one of the
12 /// supported formats into a UUID. This function is not actually DBMS-specific right
13 /// now
14 ///
15 /// </summary>
16 /// <param name="id"></param>
17 /// <returns></returns>
18 public static UUID FromDB(object id)
19 {
20 if( (id == null) || (id == DBNull.Value))
21 return UUID.Zero;
22
23 if (id.GetType() == typeof(Guid))
24 return new UUID((Guid)id);
25
26 if (id.GetType() == typeof(byte[]))
27 {
28 if (((byte[])id).Length == 0)
29 return UUID.Zero;
30 else if (((byte[])id).Length == 36)
31 return new UUID((byte[])id, 0);
32 }
33 else if (id.GetType() == typeof(string))
34 {
35 if (((string)id).Length == 0)
36 return UUID.Zero;
37 else if (((string)id).Length == 36)
38 return new UUID((string)id);
39 }
40
41 throw new Exception("Failed to convert db value to UUID: " + id.ToString());
42 }
43 }
44}