mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Glenn Van Lint
21.09.2013 da9d318892e119b070bf204e850c05208466ad28
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
 * CDDL HEADER START
 * 
 * The contents of this file are subject to the terms of the Common Development and
 * Distribution License (the License). You may not use this file except in compliance with the
 * License.
 *
 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
 * specific language governing permission and limitations under the License.
 *
 * When distributing Covered Software, include this CDDL Header Notice in each file and include
 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
 * Header, with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions Copyright [year] [name of copyright owner]".
 *
 * CDDL HEADER END
 *
 * Copyright 2013 ForgeRock AS.
 * Portions Copyright 2013 IS4U.
 */
 
package org.forgerock.opendj.virtual;
 
import org.forgerock.opendj.ldap.Connection;
import org.forgerock.opendj.ldap.ConnectionFactory;
import org.forgerock.opendj.ldap.ErrorResultException;
import org.forgerock.opendj.ldap.FutureResult;
import org.forgerock.opendj.ldap.ResultHandler;
 
/**
 * A factory class which can be used to obtain connections to an SQL Database
 * Server.
 */
public final class JDBCConnectionFactory implements ConnectionFactory 
{
  private String ConnectionUrl = "";
  private final String Host;
  private final int Port;
  private final String DbName;
  private JDBCConnection jdbc;
 
  /**
   * Creates a new JDBC connection factory which can be used to create JDBC
   * connections to the Database Server at the provided host and port
   * address.
   *
   *  @param host
   *            The host name.
   *  @param port
   *            The port number.
   *  @param dbName
   *            The name of the SQL database.              
   * @throws NullPointerException
   *             If {@code dbName} was {@code null}.
   */
  public JDBCConnectionFactory(final String host, final int port, final String dbName) 
  {
    this.Host = host;
    this.Port = port;
    this.DbName = dbName;
 
    //For connection to h2 database, use this.ConnectionUrl="jdbc:h2"
    this.ConnectionUrl="jdbc:mysql://"
        .concat(Host+":")
        .concat(Port+"/")
        .concat(DbName);
  }
 
  /**
   * Returns a connection to the Directory Server associated with this
   * connection factory. The connection returned by this method can be used
   * immediately.
   * <p>
   * If the calling thread is interrupted while waiting for the connection
   * attempt to complete then the calling thread unblock and throw a
   * {@link CancelledResultException} whose cause is the underlying
   * {@link InterruptedException}.
   *
   * @return A connection to the Database Server associated with this
   *         connection factory.
   * @throws ErrorResultException
   *             If the connection request failed for some reason.
   */
  @Override
  public Connection getConnection() throws ErrorResultException 
  {
    if (jdbc == null){
      this.jdbc = new JDBCConnection(ConnectionUrl);
    }
    return jdbc;
  }
 
  /**
   * Returns the SQL database host name that was provided to this 
   * connection factory.
   *
   * @return The SQL database host name that this connection factory uses.
   */
  public String getHostName() 
  {
    return Host;
  }
 
  /**
   * Returns the SQL database port number that was provided to this 
   * connection factory. 
   *
   * @return The SQL database name that this connection factory uses.
   */
  public int getPort() 
  {
    return Port;
  }
 
  /**
   * Returns the SQL database name that was provided to this
   * connection factory. 
   *
   * @return The SQL database name that this connection factory uses.
   */
  public String getDatabaseName()
  {
    return DbName;
  }
 
  @Override
  public FutureResult<Connection> getConnectionAsync(
      ResultHandler<? super Connection> handler) 
  {
    return null;
  }
}