diff options
-rw-r--r-- | OpenSim/Data/NHibernate/NHibernateRegionData.cs | 35 | ||||
-rw-r--r-- | OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml | 8 |
2 files changed, 36 insertions, 7 deletions
diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs index 98d82a1..1f997e7 100644 --- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs +++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs | |||
@@ -34,6 +34,7 @@ using libsecondlife; | |||
34 | using log4net; | 34 | using log4net; |
35 | using NHibernate; | 35 | using NHibernate; |
36 | using NHibernate.Cfg; | 36 | using NHibernate.Cfg; |
37 | using NHibernate.Expression; | ||
37 | using NHibernate.Mapping.Attributes; | 38 | using NHibernate.Mapping.Attributes; |
38 | using NHibernate.Tool.hbm2ddl; | 39 | using NHibernate.Tool.hbm2ddl; |
39 | using OpenSim.Framework; | 40 | using OpenSim.Framework; |
@@ -123,12 +124,15 @@ namespace OpenSim.Data.NHibernate | |||
123 | { | 124 | { |
124 | try | 125 | try |
125 | { | 126 | { |
127 | m_log.InfoFormat("Storing part {0}", part.UUID); | ||
126 | session.SaveOrUpdate(part); | 128 | session.SaveOrUpdate(part); |
129 | session.Flush(); | ||
127 | } | 130 | } |
128 | catch (Exception e) | 131 | catch (Exception e) |
129 | { | 132 | { |
130 | m_log.Error("Can't save: ", e); | 133 | m_log.Error("Can't save: ", e); |
131 | } | 134 | } |
135 | |||
132 | } | 136 | } |
133 | 137 | ||
134 | } | 138 | } |
@@ -151,8 +155,33 @@ namespace OpenSim.Data.NHibernate | |||
151 | /// <returns>List of loaded groups</returns> | 155 | /// <returns>List of loaded groups</returns> |
152 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) | 156 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
153 | { | 157 | { |
154 | List<SceneObjectGroup> prims = new List<SceneObjectGroup>(); | 158 | Dictionary<LLUUID, SceneObjectGroup> SOG = new Dictionary<LLUUID, SceneObjectGroup>(); |
155 | return prims; | 159 | List<SceneObjectGroup> ret = new List<SceneObjectGroup>(); |
160 | |||
161 | ICriteria criteria = session.CreateCriteria(typeof(SceneObjectPart)); | ||
162 | criteria.Add(Expression.Eq("RegionID", regionUUID)); | ||
163 | criteria.AddOrder( Order.Asc("ParentID") ); | ||
164 | foreach (SceneObjectPart p in criteria.List()) | ||
165 | { | ||
166 | // root part | ||
167 | if (p.UUID == p.ParentUUID) | ||
168 | { | ||
169 | SceneObjectGroup group = new SceneObjectGroup(); | ||
170 | group.AddPart(p); | ||
171 | group.RootPart = p; | ||
172 | SOG.Add(p.ParentUUID, group); | ||
173 | } | ||
174 | else | ||
175 | { | ||
176 | SOG[p.ParentUUID].AddPart(p); | ||
177 | } | ||
178 | } | ||
179 | foreach (SceneObjectGroup g in SOG.Values) | ||
180 | { | ||
181 | ret.Add(g); | ||
182 | } | ||
183 | |||
184 | return ret; | ||
156 | } | 185 | } |
157 | 186 | ||
158 | /// <summary> | 187 | /// <summary> |
@@ -215,7 +244,7 @@ namespace OpenSim.Data.NHibernate | |||
215 | /// </summary> | 244 | /// </summary> |
216 | public void Shutdown() | 245 | public void Shutdown() |
217 | { | 246 | { |
218 | 247 | session.Flush(); | |
219 | } | 248 | } |
220 | 249 | ||
221 | /// <summary> | 250 | /// <summary> |
diff --git a/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml b/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml index 4fe01e1..a605e48 100644 --- a/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml +++ b/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml | |||
@@ -1,7 +1,7 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" ?> | 1 | <?xml version="1.0" encoding="utf-8" ?> |
2 | <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> | 2 | <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> |
3 | <class name="OpenSim.Region.Environment.Scenes.SceneObjectPart, OpenSim.Region.Environment" table="Prims" lazy="false"> | 3 | <class name="OpenSim.Region.Environment.Scenes.SceneObjectPart, OpenSim.Region.Environment" table="Prims" lazy="false"> |
4 | <id name="UUID" column="ID" type="OpenSim.Data.NHibernate.LLUUIDUserType, OpenSim.Data.NHibernate"> | 4 | <id name="UUID" type="OpenSim.Data.NHibernate.LLUUIDUserType, OpenSim.Data.NHibernate"> |
5 | <generator class="assigned" /> | 5 | <generator class="assigned" /> |
6 | </id> | 6 | </id> |
7 | <property name="ParentID" type="OpenSim.Data.NHibernate.LLUUIDUserType, OpenSim.Data.NHibernate" /> | 7 | <property name="ParentID" type="OpenSim.Data.NHibernate.LLUUIDUserType, OpenSim.Data.NHibernate" /> |
@@ -56,9 +56,9 @@ | |||
56 | </property> | 56 | </property> |
57 | 57 | ||
58 | <property name="SitTargetPositionLL" type="OpenSim.Data.NHibernate.LLVector3UserType, OpenSim.Data.NHibernate" > | 58 | <property name="SitTargetPositionLL" type="OpenSim.Data.NHibernate.LLVector3UserType, OpenSim.Data.NHibernate" > |
59 | <column name="SitTargetPosX" /> | 59 | <column name="SitTargetOffsetX" /> |
60 | <column name="SitTargetPosY" /> | 60 | <column name="SitTargetOffsetY" /> |
61 | <column name="SitTargetPosZ" /> | 61 | <column name="SitTargetOffsetZ" /> |
62 | </property> | 62 | </property> |
63 | 63 | ||
64 | <property name="RotationOffset" type="OpenSim.Data.NHibernate.LLQuaternionUserType, OpenSim.Data.NHibernate" > | 64 | <property name="RotationOffset" type="OpenSim.Data.NHibernate.LLQuaternionUserType, OpenSim.Data.NHibernate" > |