[Opensim-dev] further db thoughts
Stefan Andersson
stefan at tribalmedia.se
Mon Jan 14 10:31:50 UTC 2008
---
Stefan, It would be motivating if you could provide a sample about how the TribalMedia data framework should work. Could that be done by implementing the very simple asset server as an example ? I propose we would make it work, make tests, comment and try to improve it, then it may serve as a baseline for the other db stuff ?
---
*doh*
I'll just post the code; but beware, it doesn't work, it's just to show you how stuff would interact
(Also, the code could probably be cleaner...)
What to look for:
* how the Schema is created and populated
* how the m_keyFieldMapper (that is used to extract primary key from queries) is initialized
* how the FromReader passes on to FillObject() - the function that will use the Schema to populate the RowMapper (and the PrimitiveBaseShape)
* How the CRUD and CreateRowMapper functions are really just there to get a cleaner interface for the caller.
/Stefan
---
using System;
namespace TribalMedia.Framework.Data{ public class PrimitiveBaseShapeRowMapper : RowMapper<PrimitiveBaseShape> { public Guid SceneObjectPartId;
public PrimitiveBaseShapeRowMapper(Schema schema, PrimitiveBaseShape obj) : base(schema, obj) { } }
public class PrimitiveBaseShapeTableMapper : TableMapper<PrimitiveBaseShapeRowMapper, Guid> { public PrimitiveBaseShapeTableMapper(DbConnectionPool connection, string tableName) : base(connection, tableName) { RowMapperSchema<PrimitiveBaseShapeRowMapper> rowMapperSchema = new RowMapperSchema<PrimitiveBaseShapeRowMapper>(); m_schema = rowMapperSchema;
m_keyFieldMapper = rowMapperSchema.AddMapping<Guid>("SceneObjectPartId", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.SceneObjectPartId; }, delegate(PrimitiveBaseShapeRowMapper shape, Guid value) { shape.SceneObjectPartId = value; });
rowMapperSchema.AddMapping<byte>("PCode", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PCode; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PCode = value; });
rowMapperSchema.AddMapping<ushort>("PathBegin", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathBegin; }, delegate(PrimitiveBaseShapeRowMapper shape, ushort value) { shape.Object.PathBegin = value; });
rowMapperSchema.AddMapping<ushort>("PathEnd", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathEnd; }, delegate(PrimitiveBaseShapeRowMapper shape, ushort value) { shape.Object.PathEnd = value; });
rowMapperSchema.AddMapping<byte>("PathScaleX", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathScaleX; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathScaleX = value; });
rowMapperSchema.AddMapping<byte>("PathScaleY", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathScaleY; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathScaleY = value; });
rowMapperSchema.AddMapping<byte>("PathShearX", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathShearX; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathShearX = value; });
rowMapperSchema.AddMapping<byte>("PathShearY", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathShearY; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathShearY = value; });
rowMapperSchema.AddMapping<ushort>("ProfileBegin", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.ProfileBegin; }, delegate(PrimitiveBaseShapeRowMapper shape, ushort value) { shape.Object.ProfileBegin = value; });
rowMapperSchema.AddMapping<ushort>("ProfileEnd", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.ProfileEnd; }, delegate(PrimitiveBaseShapeRowMapper shape, ushort value) { shape.Object.ProfileEnd = value; });
rowMapperSchema.AddMapping<BluedogVector3>("Scale", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.Scale; }, delegate(PrimitiveBaseShapeRowMapper shape, BluedogVector3 value) { shape.Object.Scale = value; });
rowMapperSchema.AddMapping<sbyte>("PathTaperX", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathTaperX; }, delegate(PrimitiveBaseShapeRowMapper shape, sbyte value) { shape.Object.PathTaperX = value; });
rowMapperSchema.AddMapping<sbyte>("PathTaperY", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathTaperY; }, delegate(PrimitiveBaseShapeRowMapper shape, sbyte value) { shape.Object.PathTaperY = value; });
rowMapperSchema.AddMapping<sbyte>("PathTwist", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathTwist; }, delegate(PrimitiveBaseShapeRowMapper shape, sbyte value) { shape.Object.PathTwist = value; });
rowMapperSchema.AddMapping<sbyte>("PathRadiusOffset", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathRadiusOffset; }, delegate(PrimitiveBaseShapeRowMapper shape, sbyte value) { shape.Object.PathRadiusOffset = value; });
rowMapperSchema.AddMapping<byte>("PathRevolutions", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathRevolutions; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathRevolutions = value; });
rowMapperSchema.AddMapping<sbyte>("PathTwistBegin", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathTwistBegin; }, delegate(PrimitiveBaseShapeRowMapper shape, sbyte value) { shape.Object.PathTwistBegin = value; });
rowMapperSchema.AddMapping<byte>("PathCurve", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.PathCurve; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.PathCurve = value; });
rowMapperSchema.AddMapping<byte>("ProfileCurve", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.ProfileCurve; }, delegate(PrimitiveBaseShapeRowMapper shape, byte value) { shape.Object.ProfileCurve = value; });
rowMapperSchema.AddMapping<ushort>("ProfileHollow", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.ProfileHollow; }, delegate(PrimitiveBaseShapeRowMapper shape, ushort value) { shape.Object.ProfileHollow = value; });
rowMapperSchema.AddMapping<byte[]>("TextureEntry", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.TextureEntry; }, delegate(PrimitiveBaseShapeRowMapper shape, byte[] value) { shape.Object.TextureEntry = value; });
rowMapperSchema.AddMapping<byte[]>("ExtraParams", delegate(PrimitiveBaseShapeRowMapper shape) { return shape.Object.ExtraParams; }, delegate(PrimitiveBaseShapeRowMapper shape, byte[] value) { shape.Object.ExtraParams = value; }); }
public override PrimitiveBaseShapeRowMapper FromReader(DataReader reader) { PrimitiveBaseShape shape = new PrimitiveBaseShape();
PrimitiveBaseShapeRowMapper mapper = new PrimitiveBaseShapeRowMapper(m_schema, shape); mapper.FillObject( reader );
return mapper; }
public bool Update(Guid sceneObjectPartId, PrimitiveBaseShape primitiveBaseShape) { PrimitiveBaseShapeRowMapper mapper = CreateRowMapper(sceneObjectPartId, primitiveBaseShape); return Update(sceneObjectPartId, mapper); }
public bool Add(Guid sceneObjectPartId, PrimitiveBaseShape primitiveBaseShape) { PrimitiveBaseShapeRowMapper mapper = CreateRowMapper(sceneObjectPartId, primitiveBaseShape); return Add(mapper); }
private PrimitiveBaseShapeRowMapper CreateRowMapper(Guid sceneObjectPartId, PrimitiveBaseShape primitiveBaseShape) { PrimitiveBaseShapeRowMapper mapper = new PrimitiveBaseShapeRowMapper( m_schema, primitiveBaseShape ); mapper.SceneObjectPartId = sceneObjectPartId; return mapper; } }}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20080114/ac24ba52/attachment-0001.html>
More information about the Opensim-dev
mailing list