fix an issue with user appearance where the new sqlite db adapter expects directly specification of byte[] type rather than base64 strings

0.6.9
Justin Clark-Casey (justincc) 2010-04-30 21:37:31 +01:00
parent 0b8b302aa0
commit 8966ed9c82
8 changed files with 25 additions and 81 deletions

View File

@ -108,22 +108,32 @@ namespace OpenSim.Data.SQLite
lock (ds) lock (ds)
{ {
Console.WriteLine("Here1");
ds.Tables.Add(createUsersTable()); ds.Tables.Add(createUsersTable());
ds.Tables.Add(createUserAgentsTable()); ds.Tables.Add(createUserAgentsTable());
ds.Tables.Add(createUserFriendsTable()); ds.Tables.Add(createUserFriendsTable());
ds.Tables.Add(createAvatarAppearanceTable()); ds.Tables.Add(createAvatarAppearanceTable());
Console.WriteLine("Here2");
setupUserCommands(da, conn); setupUserCommands(da, conn);
da.Fill(ds.Tables["users"]); da.Fill(ds.Tables["users"]);
CreateDataSetMapping(da, "users");
Console.WriteLine("Here3");
setupAgentCommands(dua, conn); setupAgentCommands(dua, conn);
dua.Fill(ds.Tables["useragents"]); dua.Fill(ds.Tables["useragents"]);
CreateDataSetMapping(dua, "useragents");
Console.WriteLine("Here4");
setupUserFriendsCommands(daf, conn); setupUserFriendsCommands(daf, conn);
daf.Fill(ds.Tables["userfriends"]); daf.Fill(ds.Tables["userfriends"]);
CreateDataSetMapping(daf, "userfriends");
Console.WriteLine("Here5");
setupAvatarAppearanceCommands(daa, conn); setupAvatarAppearanceCommands(daa, conn);
daa.Fill(ds.Tables["avatarappearance"]); daa.Fill(ds.Tables["avatarappearance"]);
CreateDataSetMapping(daa, "avatarappearance");
Console.WriteLine("Here6");
} }
return; return;
@ -706,15 +716,10 @@ namespace OpenSim.Data.SQLite
aa.SkirtItem = new UUID((String)row["SkirtItem"]); aa.SkirtItem = new UUID((String)row["SkirtItem"]);
aa.SkirtAsset = new UUID((String)row["SkirtAsset"]); aa.SkirtAsset = new UUID((String)row["SkirtAsset"]);
// Ewe Loon byte[] texture = (byte[])row["Texture"];
// Used Base64String because for some reason it wont accept using Byte[] (which works in Region date)
String str = (String)row["Texture"];
byte[] texture = Convert.FromBase64String(str);
aa.Texture = new Primitive.TextureEntry(texture, 0, texture.Length); aa.Texture = new Primitive.TextureEntry(texture, 0, texture.Length);
str = (String)row["VisualParams"]; byte[] VisualParams = (byte[])row["VisualParams"];
byte[] VisualParams = Convert.FromBase64String(str);
aa.VisualParams = VisualParams; aa.VisualParams = VisualParams;
aa.Serial = Convert.ToInt32(row["Serial"]); aa.Serial = Convert.ToInt32(row["Serial"]);
@ -793,6 +798,15 @@ namespace OpenSim.Data.SQLite
* *
**********************************************************************/ **********************************************************************/
protected void CreateDataSetMapping(IDataAdapter da, string tableName)
{
ITableMapping dbMapping = da.TableMappings.Add(tableName, tableName);
foreach (DataColumn col in ds.Tables[tableName].Columns)
{
dbMapping.ColumnMappings.Add(col.ColumnName, col.ColumnName);
}
}
/// <summary> /// <summary>
/// Create the "users" table /// Create the "users" table
/// </summary> /// </summary>
@ -924,9 +938,8 @@ namespace OpenSim.Data.SQLite
SQLiteUtil.createCol(aa, "SkirtItem", typeof(String)); SQLiteUtil.createCol(aa, "SkirtItem", typeof(String));
SQLiteUtil.createCol(aa, "SkirtAsset", typeof(String)); SQLiteUtil.createCol(aa, "SkirtAsset", typeof(String));
// Used Base64String because for some reason it wont accept using Byte[] (which works in Region date) SQLiteUtil.createCol(aa, "Texture", typeof (Byte[]));
SQLiteUtil.createCol(aa, "Texture", typeof (String)); SQLiteUtil.createCol(aa, "VisualParams", typeof (Byte[]));
SQLiteUtil.createCol(aa, "VisualParams", typeof (String));
SQLiteUtil.createCol(aa, "Serial", typeof(Int32)); SQLiteUtil.createCol(aa, "Serial", typeof(Int32));
SQLiteUtil.createCol(aa, "AvatarHeight", typeof(Double)); SQLiteUtil.createCol(aa, "AvatarHeight", typeof(Double));
@ -1090,8 +1103,8 @@ namespace OpenSim.Data.SQLite
row["SkirtAsset"] = appearance.SkirtAsset.ToString(); row["SkirtAsset"] = appearance.SkirtAsset.ToString();
// Used Base64String because for some reason it wont accept using Byte[] (which works in Region date) // Used Base64String because for some reason it wont accept using Byte[] (which works in Region date)
row["Texture"] = Convert.ToBase64String(appearance.Texture.GetBytes()); row["Texture"] = appearance.Texture.GetBytes();
row["VisualParams"] = Convert.ToBase64String(appearance.VisualParams); row["VisualParams"] = appearance.VisualParams;
row["Serial"] = appearance.Serial; row["Serial"] = appearance.Serial;
row["AvatarHeight"] = appearance.AvatarHeight; row["AvatarHeight"] = appearance.AvatarHeight;

View File

@ -1,18 +0,0 @@
BEGIN TRANSACTION;
CREATE TABLE auth (
UUID char(36) NOT NULL,
passwordHash char(32) NOT NULL default '',
passwordSalt char(32) NOT NULL default '',
webLoginKey varchar(255) NOT NULL default '',
accountType VARCHAR(32) NOT NULL DEFAULT 'UserAccount',
PRIMARY KEY (`UUID`)
);
CREATE TABLE tokens (
UUID char(36) NOT NULL,
token varchar(255) NOT NULL,
validity datetime NOT NULL
);
COMMIT;

View File

@ -1,9 +0,0 @@
BEGIN TRANSACTION;
CREATE TABLE Avatars (
PrincipalID CHAR(36) NOT NULL,
Name VARCHAR(32) NOT NULL,
Value VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY(PrincipalID, Name));
COMMIT;

View File

@ -1,10 +0,0 @@
BEGIN TRANSACTION;
CREATE TABLE `Friends` (
`PrincipalID` CHAR(36) NOT NULL,
`Friend` VARCHAR(255) NOT NULL,
`Flags` VARCHAR(16) NOT NULL DEFAULT 0,
`Offered` VARCHAR(32) NOT NULL DEFAULT 0,
PRIMARY KEY(`PrincipalID`, `Friend`));
COMMIT;

View File

@ -1,17 +0,0 @@
BEGIN TRANSACTION;
-- useraccounts table
CREATE TABLE UserAccounts (
PrincipalID CHAR(36) primary key,
ScopeID CHAR(36) NOT NULL,
FirstName VARCHAR(64) NOT NULL,
LastName VARCHAR(64) NOT NULL,
Email VARCHAR(64),
ServiceURLs TEXT,
Created INT(11),
UserLevel integer NOT NULL DEFAULT 0,
UserFlags integer NOT NULL DEFAULT 0,
UserTitle varchar(64) NOT NULL DEFAULT ''
);
COMMIT;

View File

@ -1,5 +0,0 @@
BEGIN TRANSACTION;
INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey) SELECT `UUID` AS UUID, `passwordHash` AS passwordHash, `passwordSalt` AS passwordSalt, `webLoginKey` AS webLoginKey FROM users;
COMMIT;

View File

@ -1,5 +0,0 @@
BEGIN TRANSACTION;
INSERT INTO `Friends` SELECT `ownerID`, `friendID`, `friendPerms`, 0 FROM `userfriends`;
COMMIT;

View File

@ -1,5 +0,0 @@
BEGIN TRANSACTION;
INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT `UUID` AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID, username AS FirstName, surname AS LastName, '' as Email, '' AS ServiceURLs, created as Created FROM users;
COMMIT;