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}