main
1using System;
2using System.IO;
3using Db4objects.Db4o;
4
5namespace solidware.financials.service.orm
6{
7 public class DB4OConnectionFactory : ConnectionFactory
8 {
9 public DB4OConnectionFactory()
10 {
11 database_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"mokhan.ca\momoney\default.db4o");
12 }
13
14 public Connection Open()
15 {
16 ensure_directories_exist();
17 return Open(database_path);
18 }
19
20 public Connection Open(string path)
21 {
22 if (null == connection)
23 {
24 connection = new DB4OConnection(Db4oFactory.OpenFile(database_path));
25 connection.Ext().Configure().ActivationDepth(int.MaxValue);
26 connection.Ext().Configure().UpdateDepth(int.MaxValue);
27 }
28 return connection;
29 }
30
31 void ensure_directories_exist()
32 {
33 var company_dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"mokhan.ca");
34 if (!Directory.Exists(company_dir))
35 Directory.CreateDirectory(company_dir);
36
37 var application_dir = Path.Combine(company_dir, "momoney");
38 if (!Directory.Exists(application_dir))
39 Directory.CreateDirectory(application_dir);
40 }
41
42 string database_path;
43 DB4OConnection connection;
44 }
45}