diff --git a/OpenSim/Data/NHibernate/NHibernateAssetData.cs b/OpenSim/Data/NHibernate/NHibernateAssetData.cs index 90d41e3bb0..e1d074f9ea 100644 --- a/OpenSim/Data/NHibernate/NHibernateAssetData.cs +++ b/OpenSim/Data/NHibernate/NHibernateAssetData.cs @@ -33,7 +33,6 @@ using System.Text.RegularExpressions; using OpenMetaverse; using log4net; using NHibernate; -using NHibernate.Mapping.Attributes; using OpenSim.Framework; using Environment=NHibernate.Cfg.Environment; diff --git a/OpenSim/Data/NHibernate/NHibernateManager.cs b/OpenSim/Data/NHibernate/NHibernateManager.cs index 36d84e2e02..46840ac415 100644 --- a/OpenSim/Data/NHibernate/NHibernateManager.cs +++ b/OpenSim/Data/NHibernate/NHibernateManager.cs @@ -31,7 +31,6 @@ using System.IO; using log4net; using NHibernate; using NHibernate.Cfg; -using NHibernate.Mapping.Attributes; using NHibernate.Tool.hbm2ddl; using OpenMetaverse; using Environment = NHibernate.Cfg.Environment; @@ -77,11 +76,6 @@ namespace OpenSim.Data.NHibernate //exp.SetOutputFile("nameofthefile.sql"); //exp.Create(false, true); - HbmSerializer.Default.Validate = true; - using (MemoryStream stream = - HbmSerializer.Default.Serialize(Assembly.GetExecutingAssembly())) - cfg.AddInputStream(stream); - factory = cfg.BuildSessionFactory(); session = factory.OpenSession(); diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_GridStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_GridStore.sql new file mode 100644 index 0000000000..df09603f27 --- /dev/null +++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_GridStore.sql @@ -0,0 +1,32 @@ +CREATE TABLE `regions` ( + `Uuid` varchar(36) NOT NULL, + `RegionHandle` bigint(20) unsigned NOT NULL, + `RegionName` varchar(32) default NULL, + `RegionRecvKey` varchar(128) default NULL, + `RegionSendKey` varchar(128) default NULL, + `RegionSecret` varchar(128) default NULL, + `RegionDataURI` varchar(255) default NULL, + `ServerIP` varchar(64) default NULL, + `ServerPort` int(10) unsigned default NULL, + `ServerURI` varchar(255) default NULL, + `RegionLocX` int(10) unsigned default NULL, + `RegionLocY` int(10) unsigned default NULL, + `RegionLocZ` int(10) unsigned default NULL, + `EastOverrideHandle` bigint(20) unsigned default NULL, + `WestOverrideHandle` bigint(20) unsigned default NULL, + `SouthOverrideHandle` bigint(20) unsigned default NULL, + `NorthOverrideHandle` bigint(20) unsigned default NULL, + `RegionAssetURI` varchar(255) default NULL, + `RegionAssetRecvKey` varchar(128) default NULL, + `RegionAssetSendKey` varchar(128) default NULL, + `RegionUserURI` varchar(255) default NULL, + `RegionUserRecvKey` varchar(128) default NULL, + `RegionUserSendKey` varchar(128) default NULL, `regionMapTexture` varchar(36) default NULL, + `ServerHttpPort` int(10) default NULL, `serverRemotingPort` int(10) default NULL, + `Owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null, + `OriginUUID` varchar(36), + PRIMARY KEY (`uuid`), + KEY `region_name` (`RegionName`), + KEY `region_handle` (`RegionHandle`), + KEY `overrideHandles` (`EastOverrideHandle`,`WestOverrideHandle`,`SouthOverrideHandle`,`NorthOverrideHandle`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Rev. 3'; \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/Resources/OpenSim.Data.NHibernate.addin.xml b/OpenSim/Data/NHibernate/Resources/OpenSim.Data.NHibernate.addin.xml new file mode 100644 index 0000000000..37b23cbcbc --- /dev/null +++ b/OpenSim/Data/NHibernate/Resources/OpenSim.Data.NHibernate.addin.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_GridStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_GridStore.sql new file mode 100644 index 0000000000..1cb18e37e4 --- /dev/null +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_GridStore.sql @@ -0,0 +1,38 @@ +BEGIN TRANSACTION; + +create table Regions ( + Uuid NVARCHAR(255) not null, + RegionHandle BIGINT null, + RegionName NVARCHAR(32) null, + RegionRecvKey NVARCHAR(128) null, + RegionSendKey NVARCHAR(128) null, + RegionSecret NVARCHAR(128) null, + RegionDataURI NVARCHAR(255) null, + ServerIP NVARCHAR(64) null, + ServerPort INT null, + ServerURI NVARCHAR(255) null, + RegionLocX INT null, + RegionLocY INT null, + RegionLocZ INT null, + EastOverrideHandle BIGINT null, + WestOverrideHandle BIGINT null, + SouthOverrideHandle BIGINT null, + NorthOverrideHandle BIGINT null, + RegionAssetURI NVARCHAR(255) null, + RegionAssetRecvKey NVARCHAR(128) null, + RegionAssetSendKey NVARCHAR(128) null, + RegionUserURI NVARCHAR(255) null, + RegionUserRecvKey NVARCHAR(128) null, + RegionUserSendKey NVARCHAR(128) null, + ServerHttpPort INT null, + ServerRemotingPort INT null, + RegionMapTextureID NVARCHAR(255) null, + Owner_uuid NVARCHAR(255) null, + OriginUUID NVARCHAR(255) null, + primary key (Uuid) +); + +create index region_handle on Regions (RegionHandle); +create index region_name on Regions (RegionName); + +COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql new file mode 100644 index 0000000000..d557b9a4a7 --- /dev/null +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql @@ -0,0 +1,102 @@ +BEGIN TRANSACTION; + +create table Prims ( + UUID TEXT not null, + ParentID INTEGER, + ParentUUID TEXT, + RegionID TEXT, + CreationDate INTEGER, + Name TEXT, + Text TEXT, + Description TEXT, + SitName TEXT, + TouchName TEXT, + ObjectFlags INTEGER, + CreatorID TEXT, + OwnerID TEXT, + GroupID TEXT, + LastOwnerID TEXT, + OwnerMask INTEGER, + NextOwnerMask INTEGER, + GroupMask INTEGER, + EveryoneMask INTEGER, + BaseMask INTEGER, + PositionX NUMERIC, + PositionY NUMERIC, + PositionZ NUMERIC, + GroupPositionX NUMERIC, + GroupPositionY NUMERIC, + GroupPositionZ NUMERIC, + VelocityX NUMERIC, + VelocityY NUMERIC, + VelocityZ NUMERIC, + AngularVelocityX NUMERIC, + AngularVelocityY NUMERIC, + AngularVelocityZ NUMERIC, + AccelerationX NUMERIC, + AccelerationY NUMERIC, + AccelerationZ NUMERIC, + SitTargetOffsetX NUMERIC, + SitTargetOffsetY NUMERIC, + SitTargetOffsetZ NUMERIC, + RotationX NUMERIC, + RotationY NUMERIC, + RotationZ NUMERIC, + RotationW NUMERIC, + SitTargetOrientX NUMERIC, + SitTargetOrientY NUMERIC, + SitTargetOrientZ NUMERIC, + SitTargetOrientW NUMERIC, + ScaleX NUMERIC, + ScaleY NUMERIC, + ScaleZ NUMERIC, + PCode INTEGER, + PathBegin INTEGER, + PathEnd INTEGER, + PathScaleX INTEGER, + PathScaleY INTEGER, + PathShearX INTEGER, + PathShearY INTEGER, + PathSkew INTEGER, + PathCurve INTEGER, + PathRadiusOffset INTEGER, + PathRevolutions INTEGER, + PathTaperX INTEGER, + PathTwist INTEGER, + ProfileBegin INTEGER, + ProfileEnd INTEGER, + ProfileCurve INTEGER, + ProfileHollow INTEGER, + Texture BLOB, + ExtraParams BLOB, + State INTEGER, + primary key (UUID) +); +create table Terrain ( + RegionID TEXT not null, + MapData BLOB, + primary key (RegionID) +); +create table PrimItems ( + ItemID TEXT not null, + PrimID TEXT, + AssetID TEXT, + ParentFolderID TEXT, + CreatorID TEXT, + OwnerID TEXT, + GroupID TEXT, + LastOwnerID TEXT, + CurrentPermissions INTEGER, + BasePermissions INTEGER, + EveryonePermissions INTEGER, + GroupPermissions INTEGER, + NextPermissions INTEGER, + Name TEXT, + Description TEXT, + CreationDate INTEGER, + Flags INTEGER, + InvType INTEGER, + primary key (ItemID) +); + +COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_UserStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_UserStore.sql new file mode 100644 index 0000000000..8d1ba5c5bc --- /dev/null +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_UserStore.sql @@ -0,0 +1,79 @@ +BEGIN TRANSACTION; + +create table UserAgents ( + ProfileID TEXT not null, + AgentIP TEXT, + AgentPort INTEGER, + AgentOnline INTEGER, + SessionID TEXT, + SecureSessionID TEXT, + InitialRegion TEXT, + Region TEXT, + LoginTime INTEGER, + LogoutTime INTEGER, + Handle INTEGER, + primary key (ProfileID) +); +create table UserProfiles ( + ID TEXT not null, + FirstName TEXT, + SurName TEXT, + PasswordHash TEXT, + PasswordSalt TEXT, + WebLoginKey TEXT, + HomeRegionX INTEGER, + HomeRegionY INTEGER, + HomeLocationX NUMERIC, + HomeLocationY NUMERIC, + HomeLocationZ NUMERIC, + HomeLookAtX NUMERIC, + HomeLookAtY NUMERIC, + HomeLookAtZ NUMERIC, + Created INTEGER, + LastLogin INTEGER, + RootInventoryFolderID TEXT, + UserInventoryURI TEXT, + UserAssetURI TEXT, + Image TEXT, + FirstLifeImage TEXT, + AboutText TEXT, + FirstLifeAboutText TEXT, + primary key (ID) +); +create table UserAppearances ( + Owner TEXT not null, + BodyItem TEXT, + BodyAsset TEXT, + SkinItem TEXT, + SkinAsset TEXT, + HairItem TEXT, + HairAsset TEXT, + EyesItem TEXT, + EyesAsset TEXT, + ShirtItem TEXT, + ShirtAsset TEXT, + PantsItem TEXT, + PantsAsset TEXT, + ShoesItem TEXT, + ShoesAsset TEXT, + SocksItem TEXT, + SocksAsset TEXT, + JacketItem TEXT, + JacketAsset TEXT, + GlovesItem TEXT, + GlovesAsset TEXT, + UnderShirtItem TEXT, + UnderShirtAsset TEXT, + UnderPantsItem TEXT, + UnderPantsAsset TEXT, + SkirtItem TEXT, + SkirtAsset TEXT, + Texture BLOB, + VisualParams BLOB, + Serial INTEGER, + primary key (Owner) +); +create index user_firstname on UserProfiles (FirstName); +create index user_surname on UserProfiles (SurName); + +COMMIT; \ No newline at end of file diff --git a/OpenSim/Data/NHibernate/SByteType.cs b/OpenSim/Data/NHibernate/SByteType.cs new file mode 100644 index 0000000000..0d8431d3d3 --- /dev/null +++ b/OpenSim/Data/NHibernate/SByteType.cs @@ -0,0 +1,104 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Data; +using OpenMetaverse; +using OpenSim.Framework; +using NHibernate; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace OpenSim.Data.NHibernate +{ + [Serializable] + public class SByteType: IUserType + { + public object Assemble(object cached, object owner) + { + return cached; + } + + bool IUserType.Equals(object sbyte1, object sbyte2) + { + return sbyte1.Equals(sbyte2); + } + + public object DeepCopy(object sbyte1) + { + return sbyte1; + } + + public object Disassemble(object sbyte1) + { + return sbyte1; + } + + public int GetHashCode(object sbyte1) + { + return (sbyte1 == null) ? 0 : sbyte1.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + object sbyte1 = null; + + int ord = rs.GetOrdinal(names[0]); + if (!rs.IsDBNull(ord)) + { + sbyte1 = Convert.ToSByte(rs.GetInt16(ord)); + } + return sbyte1; + } + + public void NullSafeSet(IDbCommand cmd, object obj, int index) + { + sbyte b = (sbyte)obj; + ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt16(b); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public Type ReturnedType + { + get { return typeof(sbyte); } + } + + public SqlType[] SqlTypes + { + get { return new SqlType [] { NHibernateUtil.Byte.SqlType }; } + } + } +} diff --git a/OpenSim/Data/NHibernate/UInt16Type.cs b/OpenSim/Data/NHibernate/UInt16Type.cs new file mode 100644 index 0000000000..b805288492 --- /dev/null +++ b/OpenSim/Data/NHibernate/UInt16Type.cs @@ -0,0 +1,105 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Data; +using OpenMetaverse; +using OpenSim.Framework; +using NHibernate; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace OpenSim.Data.NHibernate +{ + [Serializable] + public class UInt16Type : IUserType + { + public object Assemble(object cached, object owner) + { + return cached; + } + + bool IUserType.Equals(object uint1, object uint2) + { + return uint1.Equals(uint2); + } + + public object DeepCopy(object uint1) + { + return uint1; + } + + public object Disassemble(object uint1) + { + return uint1; + } + + public int GetHashCode(object uint1) + { + return (uint1 == null) ? 0 : uint1.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + object uint1 = null; + + int ord = rs.GetOrdinal(names[0]); + if (!rs.IsDBNull(ord)) + { + uint1 = (UInt16)rs.GetInt16(ord); + } + + return uint1; + } + + public void NullSafeSet(IDbCommand cmd, object obj, int index) + { + UInt16 uint1 = (UInt16)obj; + ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt16(uint1); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public Type ReturnedType + { + get { return typeof(UInt16); } + } + + public SqlType[] SqlTypes + { + get { return new SqlType [] { NHibernateUtil.Int16.SqlType }; } + } + } +} diff --git a/OpenSim/Data/NHibernate/UInt32Type.cs b/OpenSim/Data/NHibernate/UInt32Type.cs new file mode 100644 index 0000000000..2500194945 --- /dev/null +++ b/OpenSim/Data/NHibernate/UInt32Type.cs @@ -0,0 +1,105 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Data; +using OpenMetaverse; +using OpenSim.Framework; +using NHibernate; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace OpenSim.Data.NHibernate +{ + [Serializable] + public class UInt32Type : IUserType + { + public object Assemble(object cached, object owner) + { + return cached; + } + + bool IUserType.Equals(object uint1, object uint2) + { + return uint1.Equals(uint2); + } + + public object DeepCopy(object uint1) + { + return uint1; + } + + public object Disassemble(object uint1) + { + return uint1; + } + + public int GetHashCode(object uint1) + { + return (uint1 == null) ? 0 : uint1.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + object uint1 = null; + + int ord = rs.GetOrdinal(names[0]); + if (!rs.IsDBNull(ord)) + { + uint1 = (UInt32)rs.GetInt32(ord); + } + + return uint1; + } + + public void NullSafeSet(IDbCommand cmd, object obj, int index) + { + UInt32 uint1 = (UInt32)obj; + ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt32(uint1); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public Type ReturnedType + { + get { return typeof(UInt32); } + } + + public SqlType[] SqlTypes + { + get { return new SqlType [] { NHibernateUtil.Int32.SqlType }; } + } + } +} diff --git a/OpenSim/Data/NHibernate/UInt64Type.cs b/OpenSim/Data/NHibernate/UInt64Type.cs new file mode 100644 index 0000000000..304c9371b6 --- /dev/null +++ b/OpenSim/Data/NHibernate/UInt64Type.cs @@ -0,0 +1,105 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSim Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Data; +using OpenMetaverse; +using OpenSim.Framework; +using NHibernate; +using NHibernate.SqlTypes; +using NHibernate.UserTypes; + +namespace OpenSim.Data.NHibernate +{ + [Serializable] + public class UInt64Type : IUserType + { + public object Assemble(object cached, object owner) + { + return cached; + } + + bool IUserType.Equals(object uint1, object uint2) + { + return uint1.Equals(uint2); + } + + public object DeepCopy(object uint1) + { + return uint1; + } + + public object Disassemble(object uint1) + { + return uint1; + } + + public int GetHashCode(object uint1) + { + return (uint1 == null) ? 0 : uint1.GetHashCode(); + } + + public bool IsMutable + { + get { return false; } + } + + public object NullSafeGet(IDataReader rs, string[] names, object owner) + { + object uint1 = null; + + int ord = rs.GetOrdinal(names[0]); + if (!rs.IsDBNull(ord)) + { + uint1 = (UInt64)rs.GetInt64(ord); + } + + return uint1; + } + + public void NullSafeSet(IDbCommand cmd, object obj, int index) + { + UInt64 uint1 = (UInt64)obj; + ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt64(uint1); + } + + public object Replace(object original, object target, object owner) + { + return original; + } + + public Type ReturnedType + { + get { return typeof(UInt64); } + } + + public SqlType[] SqlTypes + { + get { return new SqlType [] { NHibernateUtil.Int64.SqlType }; } + } + } +} diff --git a/prebuild.xml b/prebuild.xml index 1320ff3a21..f4f17f775b 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1861,7 +1861,6 @@ -