Skip to content
Snippets Groups Projects
Commit 20311a47 authored by gmantele's avatar gmantele
Browse files

[TAP] Add Javadoc DBConnection

parent af33e445
No related branches found
No related tags found
No related merge requests found
...@@ -20,6 +20,7 @@ package tap.db; ...@@ -20,6 +20,7 @@ package tap.db;
* Astronomisches Rechen Institut (ARI) * Astronomisches Rechen Institut (ARI)
*/ */
import tap.TAPFactory;
import tap.data.DataReadException; import tap.data.DataReadException;
import tap.data.TableIterator; import tap.data.TableIterator;
import tap.metadata.TAPColumn; import tap.metadata.TAPColumn;
...@@ -35,6 +36,13 @@ import adql.translator.ADQLTranslator; ...@@ -35,6 +36,13 @@ import adql.translator.ADQLTranslator;
* <p>It lets executing ADQL queries and updating the TAP datamodel (with the list of schemas, tables and columns published in TAP, * <p>It lets executing ADQL queries and updating the TAP datamodel (with the list of schemas, tables and columns published in TAP,
* or with uploaded tables).</p> * or with uploaded tables).</p>
* *
* <p><b>IMPORTANT:</b>
* This connection aims only to provide a common and known interface for any kind of database connection.
* A connection MUST be opened/created and closed/freed ONLY by the {@link TAPFactory}, which will usually merely wrap
* the real database connection by a {@link DBConnection} object. That's why this interface does not provide anymore
* a close() function.
* </p>
*
* @author Gr&eacute;gory Mantelet (CDS;ARI) * @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 2.0 (07/2014) * @version 2.0 (07/2014)
*/ */
...@@ -230,15 +238,4 @@ public interface DBConnection { ...@@ -230,15 +238,4 @@ public interface DBConnection {
*/ */
public TableIterator executeQuery(final ADQLQuery adqlQuery) throws DBException; public TableIterator executeQuery(final ADQLQuery adqlQuery) throws DBException;
/**
* <p>Close the connection (if needed).</p>
*
* <p><i>note: This function is called at the end of a query/job execution, after the result
* has been successfully (or not) fetched. When called, it means the connection is no longer needed
* for the job and so, can be freed (or given back to a pool, for instance).</i></p>
*
* @throws DBException If any error occurs while closing the connection.
*/
public void close() throws DBException;
} }
...@@ -55,7 +55,7 @@ import adql.translator.JDBCTranslator; ...@@ -55,7 +55,7 @@ import adql.translator.JDBCTranslator;
import adql.translator.TranslationException; import adql.translator.TranslationException;
/** /**
* <p>This {@link DBConnection} implementation is theoretically able to deal with any DBMS connection.</p> * <p>This {@link DBConnection} implementation is theoretically able to deal with any DBMS JDBC connection.</p>
* *
* <p><i>Note: * <p><i>Note:
* "Theoretically", because its design has been done using information about Postgres, SQLite, Oracle, MySQL and Java DB (Derby). * "Theoretically", because its design has been done using information about Postgres, SQLite, Oracle, MySQL and Java DB (Derby).
...@@ -112,7 +112,7 @@ import adql.translator.TranslationException; ...@@ -112,7 +112,7 @@ import adql.translator.TranslationException;
* </i></p> * </i></p>
* *
* @author Gr&eacute;gory Mantelet (CDS;ARI) * @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 2.0 (07/2014) * @version 2.0 (08/2014)
* @since 2.0 * @since 2.0
*/ */
public class JDBCConnection implements DBConnection { public class JDBCConnection implements DBConnection {
...@@ -208,13 +208,7 @@ public class JDBCConnection implements DBConnection { ...@@ -208,13 +208,7 @@ public class JDBCConnection implements DBConnection {
} }
/** /**
* <p>Create a JDBC connection by wrapping the given connection.</p> * Create a JDBC connection by wrapping the given connection.
*
* <p><i><b>Warning:</b>
* Calling {@link #close()} will call the function close() of the given connection.
* So, if this connection is coming from a pool, it is here supposed that a call to this function will not close the connection but gives it back to the pool.
* If it's not the case, {@link #close()} must be overwritten in order to apply the good "close" behavior.
* </i></p>
* *
* @param conn Connection to wrap. * @param conn Connection to wrap.
* @param translator {@link ADQLTranslator} to use in order to get SQL from an ADQL query and to get qualified DB table names. * @param translator {@link ADQLTranslator} to use in order to get SQL from an ADQL query and to get qualified DB table names.
...@@ -312,15 +306,17 @@ public class JDBCConnection implements DBConnection { ...@@ -312,15 +306,17 @@ public class JDBCConnection implements DBConnection {
return ID; return ID;
} }
@Override /**
public void close() throws DBException{ * <p>Get the JDBC connection wrapped by this {@link JDBCConnection} object.</p>
try{ *
connection.close(); * <p><i>Note:
log(0, "Connection CLOSED.", null); * This is the best way to get the JDBC connection in order to properly close it.
}catch(SQLException se){ * </i></p>
log(1, "CLOSING connection impossible!", se); *
throw new DBException("Impossible to close the database connection !", se); * @return The wrapped JDBC connection.
} */
public final Connection getInnerConnection(){
return connection;
} }
/* ********************* */ /* ********************* */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment