summaryrefslogtreecommitdiff
path: root/product/DataAccess/Db40/ConnectionFactory.cs
blob: 8fec9414442bb6b715608aabbd40ad2cfcb175bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using Db4objects.Db4o;
using Db4objects.Db4o.Config;
using Gorilla.Commons.Infrastructure.FileSystem;
using Gorilla.Commons.Utility.Extensions;
using MoMoney.DataAccess.Transactions;

namespace MoMoney.DataAccess.Db40
{
    public class ConnectionFactory : IConnectionFactory
    {
        readonly IConfigureDatabaseStep setup;
        readonly IConfigureObjectContainerStep setup_container;

        public ConnectionFactory(IConfigureDatabaseStep setup, IConfigureObjectContainerStep setup_container)
        {
            this.setup = setup;
            this.setup_container = setup_container;
        }

        public IDatabaseConnection open_connection_to(IFile the_path_to_the_database_file)
        {
            var configuration = Db4oFactory.NewConfiguration();
            setup.configure(configuration);
            return new DatabaseConnection(get_container(the_path_to_the_database_file, configuration));
        }

        IObjectContainer get_container(IFile the_path_to_the_database_file, IConfiguration configuration)
        {
            return Db4oFactory
                .OpenFile(configuration, the_path_to_the_database_file.path)
                .and_configure_with(setup_container);
        }
    }
}