diff options
Diffstat (limited to 'OpenSim/Data/NHibernate/NHibernateInventoryData.cs')
-rw-r--r-- | OpenSim/Data/NHibernate/NHibernateInventoryData.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/OpenSim/Data/NHibernate/NHibernateInventoryData.cs b/OpenSim/Data/NHibernate/NHibernateInventoryData.cs index 938f47c..08d9dc1 100644 --- a/OpenSim/Data/NHibernate/NHibernateInventoryData.cs +++ b/OpenSim/Data/NHibernate/NHibernateInventoryData.cs | |||
@@ -29,12 +29,14 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.IO; | 30 | using System.IO; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Text.RegularExpressions; | ||
32 | using libsecondlife; | 33 | using libsecondlife; |
33 | using log4net; | 34 | using log4net; |
34 | using NHibernate; | 35 | using NHibernate; |
35 | using NHibernate.Cfg; | 36 | using NHibernate.Cfg; |
36 | using NHibernate.Expression; | 37 | using NHibernate.Expression; |
37 | using NHibernate.Mapping.Attributes; | 38 | using NHibernate.Mapping.Attributes; |
39 | using NHibernate.Tool.hbm2ddl; | ||
38 | using OpenSim.Framework; | 40 | using OpenSim.Framework; |
39 | using Environment=NHibernate.Cfg.Environment; | 41 | using Environment=NHibernate.Cfg.Environment; |
40 | 42 | ||
@@ -55,6 +57,10 @@ namespace OpenSim.Data.NHibernate | |||
55 | // Split out the dialect, driver, and connect string | 57 | // Split out the dialect, driver, and connect string |
56 | char[] split = {';'}; | 58 | char[] split = {';'}; |
57 | string[] parts = connect.Split(split); | 59 | string[] parts = connect.Split(split); |
60 | if (parts.Length != 3) { | ||
61 | // TODO: make this a real exception type | ||
62 | throw new Exception("Malformed Inventory connection string '" + connect + "'"); | ||
63 | } | ||
58 | 64 | ||
59 | // Establish NHibernate Connection | 65 | // Establish NHibernate Connection |
60 | cfg = new Configuration(); | 66 | cfg = new Configuration(); |
@@ -79,8 +85,31 @@ namespace OpenSim.Data.NHibernate | |||
79 | // new SchemaExport(cfg).Create(true, true); | 85 | // new SchemaExport(cfg).Create(true, true); |
80 | 86 | ||
81 | factory = cfg.BuildSessionFactory(); | 87 | factory = cfg.BuildSessionFactory(); |
88 | |||
89 | InitDB(); | ||
82 | } | 90 | } |
83 | 91 | ||
92 | |||
93 | private void InitDB() | ||
94 | { | ||
95 | string regex = @"no such table: Inventory"; | ||
96 | Regex RE = new Regex(regex, RegexOptions.Multiline); | ||
97 | try { | ||
98 | using(ISession session = factory.OpenSession()) { | ||
99 | session.Load(typeof(InventoryItemBase), LLUUID.Zero); | ||
100 | } | ||
101 | } catch (ObjectNotFoundException e) { | ||
102 | // yes, we know it's not there, but that's ok | ||
103 | } catch (ADOException e) { | ||
104 | Match m = RE.Match(e.ToString()); | ||
105 | if(m.Success) { | ||
106 | // We don't have this table, so create it. | ||
107 | new SchemaExport(cfg).Create(true, true); | ||
108 | } | ||
109 | } | ||
110 | } | ||
111 | |||
112 | |||
84 | /***************************************************************** | 113 | /***************************************************************** |
85 | * | 114 | * |
86 | * Basic CRUD operations on Data | 115 | * Basic CRUD operations on Data |