Well, it *appears* to compile. Initial SQLite Local Storage module (supports saving, deletion and update of prims, but does not yet load them.)

0.1-prestable
Adam Frisby 2007-04-11 06:42:07 +00:00
parent adb56a46f4
commit 44989288d6
25 changed files with 315 additions and 0 deletions

View File

@ -0,0 +1,65 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2D49BA72-FF23-41EF-987C-0D6643FBE727}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OpenSim.Storage.LocalStorageSQLite</RootNamespace>
<AssemblyName>OpenSim.Storage.LocalStorageSQLite</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="libsecondlife, Version=0.9.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\libsecondlife.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.40.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\System.Data.SQLite.DLL</HintPath>
</Reference>
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SQLiteLocalStorage.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj">
<Project>{A7CD0630-0000-0000-0000-000000000000}</Project>
<Name>OpenSim.Framework.Console</Name>
</ProjectReference>
<ProjectReference Include="..\OpenSim.Framework\OpenSim.Framework.csproj">
<Project>{8ACA2445-0000-0000-0000-000000000000}</Project>
<Name>OpenSim.Framework</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OpenSim.Storage.LocalStorageSQLite")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OpenSim.Storage.LocalStorageSQLite")]
[assembly: AssemblyCopyright("Copyright © 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("ecd6e0c1-7909-413e-9e3f-659678ac3bc3")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.*")]
[assembly: AssemblyFileVersion("1.0.0.*")]

View File

@ -0,0 +1,171 @@
/*
* Copyright (c) OpenSim project, http://sim.opensecondlife.org/
*
* 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 <organization> 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 <copyright holder> ``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 <copyright holder> 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.
*
*/
// SQLite Support
// A bad idea, but the IRC people told me to!
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using libsecondlife;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Assets;
using OpenSim.Framework.Terrain;
namespace OpenSim.Storage.LocalStorageSQLite
{
public class SQLiteLocalStorage : ILocalStorage
{
IDbConnection db;
public SQLiteLocalStorage()
{
try
{
string connectionstring = "URI=file:localsim.db";
db = (IDbConnection)new SQLiteConnection(connectionstring);
db.Open();
}
catch (Exception e)
{
db.Close();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SQLiteLocalStorage :Constructor - Exception occured");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString());
}
}
public void StorePrim(PrimData prim)
{
IDbCommand cmd = db.CreateCommand();
//SECURITY WARNING:
// These parameters wont produce SQL injections since they are all integer based, however.
// if inserting strings such as name or description, you will need to use appropriate
// measures to prevent SQL injection (although the value of SQL injection in this is limited).
string sql = "REPLACE INTO prim (OwnerID,PCode,PathBegin,PathEnd,PathScaleX,PathScaleY,PathShearX,PathShearY,PathSkew,ProfileBegin,ProfileEnd,Scale,PathCurve,ProfileCurve,ParentID,ProfileHollow,PathRadiusOffset,PathRevolutions,PathTaperX,PathTaperY,PathTwist,PathTwistBegin,Texture,CreationDate,OwnerMask,NextOwnerMask,GroupMask,EveryoneMask,BaseMask,Position,Rotation,LocalID,FullID) ";
sql += "VALUES (";
sql += "\"" + prim.OwnerID.ToStringHyphenated() + "\","; // KILL ME NOW!
sql += "\"" + prim.PCode.ToString() + "\",";
sql += "\"" + prim.PathBegin.ToString() + "\",";
sql += "\"" + prim.PathEnd.ToString() + "\",";
sql += "\"" + prim.PathScaleX.ToString() + "\",";
sql += "\"" + prim.PathScaleY.ToString() + "\",";
sql += "\"" + prim.PathShearX.ToString() + "\",";
sql += "\"" + prim.PathShearY.ToString() + "\",";
sql += "\"" + prim.PathSkew.ToString() + "\",";
sql += "\"" + prim.ProfileBegin.ToString() + "\",";
sql += "\"" + prim.ProfileEnd.ToString() + "\",";
sql += "\"" + prim.Scale.ToString() + "\",";
sql += "\"" + prim.PathCurve.ToString() + "\",";
sql += "\"" + prim.ProfileCurve.ToString() + "\",";
sql += "\"" + prim.ParentID.ToString() + "\",";
sql += "\"" + prim.ProfileHollow.ToString() + "\",";
sql += "\"" + prim.PathRadiusOffset.ToString() + "\",";
sql += "\"" + prim.PathRevolutions.ToString() + "\",";
sql += "\"" + prim.PathTaperX.ToString() + "\",";
sql += "\"" + prim.PathTaperY.ToString() + "\",";
sql += "\"" + prim.PathTwist.ToString() + "\",";
sql += "\"" + prim.PathTwistBegin.ToString() + "\",";
sql += "\"" + prim.Texture.ToString() + "\",";
sql += "\"" + prim.CreationDate.ToString() + "\",";
sql += "\"" + prim.OwnerMask.ToString() + "\",";
sql += "\"" + prim.NextOwnerMask.ToString() + "\",";
sql += "\"" + prim.GroupMask.ToString() + "\",";
sql += "\"" + prim.EveryoneMask.ToString() + "\",";
sql += "\"" + prim.BaseMask.ToString() + "\",";
sql += "\"" + prim.Position.ToString() + "\",";
sql += "\"" + prim.Rotation.ToString() + "\",";
sql += "\"" + prim.LocalID.ToString() + "\",";
sql += "\"" + prim.FullID.ToString() + "\")";
cmd.CommandText = sql;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SQLiteLocalStorage :StorePrim - Exception occured");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString());
}
cmd.Dispose();
cmd = null;
}
public void RemovePrim(LLUUID primID)
{
IDbCommand cmd = db.CreateCommand();
//SECURITY WARNING:
// These parameters wont produce SQL injections since they are all integer based, however.
// if inserting strings such as name or description, you will need to use appropriate
// measures to prevent SQL injection (although the value of SQL injection in this is limited).
string sql = "DELETE FROM prim WHERE FullID = \"" + primID.ToStringHyphenated() + "\"";
cmd.CommandText = sql;
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SQLiteLocalStorage :RemovePrim - Exception occured");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString());
}
cmd.Dispose();
cmd = null;
}
public void LoadPrimitives(ILocalStorageReceiver receiver)
{
}
public float[] LoadWorld()
{
return new float[65536];
}
public void SaveMap(float[] heightmap)
{
}
public void ShutDown()
{
db.Close();
db = null;
}
}
}

View File

@ -0,0 +1,12 @@
obj\Debug\ResolveAssemblyReference.cache
bin\Debug\OpenSim.Storage.LocalStorageSQLite.dll
bin\Debug\OpenSim.Storage.LocalStorageSQLite.pdb
bin\Debug\libsecondlife.dll
bin\Debug\OpenSim.Framework.Console.dll
bin\Debug\OpenSim.Framework.dll
bin\Debug\System.Data.SQLite.DLL
bin\Debug\Db4objects.Db4o.dll
bin\Debug\OpenSim.Framework.pdb
bin\Debug\OpenSim.Framework.Console.pdb
obj\Debug\OpenSim.Storage.LocalStorageSQLite.dll
obj\Debug\OpenSim.Storage.LocalStorageSQLite.pdb

View File

@ -36,6 +36,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGridServices.GridServer
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{FFD5951C-4002-4ACA-9ADF-68852357B94A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageSQLite", "OpenSim.Storage.LocalStorageSQLite\OpenSim.Storage.LocalStorageSQLite.csproj", "{2D49BA72-FF23-41EF-987C-0D6643FBE727}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -114,6 +116,10 @@ Global
{FFD5951C-4002-4ACA-9ADF-68852357B94A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFD5951C-4002-4ACA-9ADF-68852357B94A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFD5951C-4002-4ACA-9ADF-68852357B94A}.Release|Any CPU.Build.0 = Release|Any CPU
{2D49BA72-FF23-41EF-987C-0D6643FBE727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D49BA72-FF23-41EF-987C-0D6643FBE727}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D49BA72-FF23-41EF-987C-0D6643FBE727}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D49BA72-FF23-41EF-987C-0D6643FBE727}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Binary file not shown.

BIN
bin/System.Data.SQLite.DLL Normal file

Binary file not shown.

View File

@ -474,6 +474,32 @@
</Files>
</Project>
<Project name="OpenSim.Storage.LocalStorageSQLite" path="OpenSim.Storage.LocalStorageSQLite" type="Library">
<Configuration name="Debug">
<Options>
<OutputPath>../bin/</OutputPath>
</Options>
</Configuration>
<Configuration name="Release">
<Options>
<OutputPath>../bin/</OutputPath>
</Options>
</Configuration>
<ReferencePath>../bin/</ReferencePath>
<Reference name="System" localCopy="false"/>
<Reference name="System.Xml"/>
<Reference name="System.Data"/>
<Reference name="System.Data.SQLite.DLL"/>
<Reference name="libsecondlife.dll"/>
<Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Console"/>
<Files>
<Match pattern="*.cs" recurse="true"/>
</Files>
</Project>
</Solution>