mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-12-16 07:10:32 +00:00
Versioning db Android
This commit is contained in:
parent
9d83e524cd
commit
a7d83aa6f0
3 changed files with 54 additions and 27 deletions
|
|
@ -109,6 +109,9 @@
|
||||||
<AndroidAsset Include="..\..\Data\library.db">
|
<AndroidAsset Include="..\..\Data\library.db">
|
||||||
<Link>Assets\library.db</Link>
|
<Link>Assets\library.db</Link>
|
||||||
</AndroidAsset>
|
</AndroidAsset>
|
||||||
|
<AndroidAsset Include="..\..\Data\library.ver">
|
||||||
|
<Link>Assets\library.ver</Link>
|
||||||
|
</AndroidAsset>
|
||||||
<None Include="Resources\AboutResources.txt" />
|
<None Include="Resources\AboutResources.txt" />
|
||||||
<None Include="Assets\AboutAssets.txt" />
|
<None Include="Assets\AboutAssets.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using AideDeJeu.Tools;
|
using AideDeJeu.Tools;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
using System;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
@ -30,36 +29,60 @@ namespace AideDeJeu.Droid
|
||||||
|
|
||||||
public async Task<string> GetDatabasePathAsync(string databaseName)
|
public async Task<string> GetDatabasePathAsync(string databaseName)
|
||||||
{
|
{
|
||||||
//string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
|
if (await CheckDatabaseVersionAsync(databaseName))
|
||||||
//string dbPath = Path.Combine(path, databaseName);
|
{
|
||||||
//return dbPath;
|
await CopyOldToNewFileAsync(databaseName, "db");
|
||||||
var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
|
await CopyOldToNewFileAsync(databaseName, "ver");
|
||||||
var path = Path.Combine(documentsDirectoryPath, $"{databaseName}.db");
|
}
|
||||||
|
return GetNewFilePath(databaseName, "db");
|
||||||
|
}
|
||||||
|
|
||||||
// This is where we copy in our pre-created database
|
public Stream GetOldFileStream(string fileName, string extension)
|
||||||
|
{
|
||||||
|
return Android.App.Application.Context.Assets.Open($"{fileName}.{extension}");
|
||||||
|
}
|
||||||
|
public string GetNewFilePath(string fileName, string extension)
|
||||||
|
{
|
||||||
|
var documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
|
||||||
|
return Path.Combine(documentsDirectoryPath, $"{fileName}.{extension}");
|
||||||
|
}
|
||||||
|
public async Task CopyOldToNewFileAsync(string fileName, string extension)
|
||||||
|
{
|
||||||
|
using (var inStream = GetOldFileStream(fileName, extension))
|
||||||
|
{
|
||||||
|
using (var outStream = new FileStream(GetNewFilePath(fileName, extension), FileMode.Create))
|
||||||
|
{
|
||||||
|
await inStream.CopyToAsync(outStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> CheckDatabaseVersionAsync(string databaseName)
|
||||||
|
{
|
||||||
|
var path = GetNewFilePath(databaseName, "ver");
|
||||||
if (!File.Exists(path))
|
if (!File.Exists(path))
|
||||||
{
|
{
|
||||||
using (var inStream = Android.App.Application.Context.Assets.Open($"{databaseName}.db"))
|
return true;
|
||||||
{
|
|
||||||
using (var outStream = new FileStream(path, FileMode.Create))
|
|
||||||
{
|
|
||||||
await inStream.CopyToAsync(outStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//using (var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(databaseName)))
|
|
||||||
//{
|
|
||||||
// using (var binaryWriter = new BinaryWriter(new FileStream(path, FileMode.Create)))
|
|
||||||
// {
|
|
||||||
// byte[] buffer = new byte[2048];
|
|
||||||
// int length = 0;
|
|
||||||
// while ((length = binaryReader.Read(buffer, 0, buffer.Length)) > 0)
|
|
||||||
// {
|
|
||||||
// binaryWriter.Write(buffer, 0, length);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
return path;
|
int newVersion = 0;
|
||||||
|
int oldVersion = -1;
|
||||||
|
using (var newStream = GetOldFileStream(databaseName, "ver"))
|
||||||
|
{
|
||||||
|
using (var sr = new StreamReader(newStream))
|
||||||
|
{
|
||||||
|
var str = await sr.ReadToEndAsync();
|
||||||
|
int.TryParse(str, out newVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
using (var oldStream = new FileStream(path, FileMode.Open))
|
||||||
|
{
|
||||||
|
using (var sr = new StreamReader(oldStream))
|
||||||
|
{
|
||||||
|
var str = await sr.ReadToEndAsync();
|
||||||
|
int.TryParse(str, out oldVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newVersion > oldVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1
Data/library.ver
Normal file
1
Data/library.ver
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
4
|
||||||
Loading…
Add table
Add a link
Reference in a new issue