Subversion Repository Public Repository

litesoft

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.sql;

import java.sql.*;
import java.util.*;

import org.litesoft.db.*;
import org.litesoft.logger.*;

public abstract class SQLDBconnectionProvider
{
    public static final Logger LOGGER = LoggerFactory.getLogger( SQLDBconnectionProvider.class );

    protected static final String PROP_KEY_USER = "user";
    protected static final String PROP_KEY_PASSWORD = "password";

    protected String mDatabaseURL;
    protected Properties mConnectionProperties;
    protected Driver mDriver;
    private boolean mDBisSetup = false;

    protected Driver createDriver( String pDatabaseURL, String pUserName, String pPassword )
    {
        mDatabaseURL = pDatabaseURL;
        mConnectionProperties = new Properties();
        mConnectionProperties.put( PROP_KEY_USER, pUserName );
        mConnectionProperties.put( PROP_KEY_PASSWORD, pPassword );
        try
        {
            mDriver = DriverManager.getDriver( mDatabaseURL );
        }
        catch ( Exception e )
        {
            String zErrorMessage = "Failed to create JDBC Driver for " + mDatabaseURL;
            LOGGER.error.log( e, zErrorMessage );
            throw new Error( zErrorMessage, e );
        }
        return mDriver;
    }

    public final SQLDBconnection createSQLDBconnection()
            throws DBException
    {
        setup();
        Connection zConnection;
        try
        {
            zConnection = mDriver.connect( mDatabaseURL, mConnectionProperties );
        }
        catch ( SQLException e )
        {
            throw new WrappedSQLException( e );
        }
        try
        {
            DBinfo zDBinfo = getDBinfo( zConnection, mDatabaseURL );
            return LLcreateSQLDBconnection( zConnection, zDBinfo );
        }
        catch ( SQLException e )
        {
            try
            {
                zConnection.close();
            }
            catch ( SQLException e1 )
            {
                // Whatever!
            }
            throw new WrappedSQLException( e );
        }
    }

    protected SQLDBconnection LLcreateSQLDBconnection( Connection pConnection, DBinfo pDBinfo )
    {
        return new SQLDBconnection( pConnection, mDatabaseURL, pDBinfo );
    }

    synchronized protected void setup()
    {
        if ( !mDBisSetup )
        {
            mDBisSetup = true;
            setupDB();
        }
    }

    protected synchronized DBinfo getDBinfo( Connection pCon, String pUrl )
            throws SQLException
    {
        DBinfo zDBinfo = mDBinfosByUrls.get( pUrl );
        if ( zDBinfo == null )
        {
            mDBinfosByUrls.put( pUrl, zDBinfo = SQLHelper.createDBinfo( pCon ) );
            LOGGER.info.log( pUrl, " connects to ", zDBinfo );
        }
        return zDBinfo;
    }

    private Map<String, DBinfo> mDBinfosByUrls = new HashMap<String, DBinfo>();

    abstract protected void setupDB();
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/sql/SQLDBconnectionProvider.java

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000