franta-hg@16
|
1 |
package cz.frantovo.sql.vyuka.dao;
|
franta-hg@16
|
2 |
|
franta-hg@16
|
3 |
import cz.frantovo.superDAO.SuperDAO;
|
franta-hg@16
|
4 |
import java.sql.Connection;
|
franta-hg@16
|
5 |
import java.sql.SQLException;
|
franta-hg@16
|
6 |
import java.util.logging.Level;
|
franta-hg@86
|
7 |
import javax.naming.Context;
|
franta-hg@16
|
8 |
import javax.naming.InitialContext;
|
franta-hg@16
|
9 |
import javax.naming.NamingException;
|
franta-hg@16
|
10 |
import javax.sql.DataSource;
|
franta-hg@16
|
11 |
|
franta-hg@16
|
12 |
/**
|
franta-hg@16
|
13 |
*
|
franta-hg@16
|
14 |
* @author fiki
|
franta-hg@16
|
15 |
*/
|
franta-hg@16
|
16 |
public class VyukaSuperDAO extends SuperDAO {
|
franta-hg@16
|
17 |
|
franta-hg@86
|
18 |
protected Context kontext = null;
|
franta-hg@16
|
19 |
|
franta-hg@16
|
20 |
protected enum DATABAZE {
|
franta-hg@16
|
21 |
|
franta-hg@16
|
22 |
/** Databáze aplikace – historie, nastavení. */
|
franta-hg@16
|
23 |
APLIKACE,
|
franta-hg@16
|
24 |
/** Databáze, na které se spouštějí příkazy uživatelů. */
|
franta-hg@16
|
25 |
PISKOVISTE
|
franta-hg@16
|
26 |
}
|
franta-hg@16
|
27 |
|
franta-hg@16
|
28 |
public VyukaSuperDAO() {
|
franta-hg@16
|
29 |
try {
|
franta-hg@86
|
30 |
// v GlassFishi stačil InitialContext
|
franta-hg@86
|
31 |
// v Tomcatu / TomEE nešlo v InitialContextu DB spojení najít:
|
franta-hg@86
|
32 |
// javax.naming.NameNotFoundException: Name [jdbc/sqlVyuka/aplikace] is not bound in this Context. Unable to find [jdbc].)
|
franta-hg@86
|
33 |
// Po přidání lookup("java:comp/env") funguje v TomEE.
|
franta-hg@16
|
34 |
kontext = new InitialContext();
|
franta-hg@86
|
35 |
kontext = (Context) kontext.lookup("java:comp/env");
|
franta-hg@16
|
36 |
} catch (NamingException ex) {
|
franta-hg@16
|
37 |
log.log(Level.SEVERE, "Chyba při inicializaci kontextu", ex);
|
franta-hg@16
|
38 |
}
|
franta-hg@16
|
39 |
}
|
franta-hg@16
|
40 |
|
franta-hg@16
|
41 |
/**
|
franta-hg@16
|
42 |
* @param databaze Která databáze (aplikace = historie a nastavení | pískoviště = příkazy uživatele)
|
franta-hg@16
|
43 |
* @return Databázové spojení
|
franta-hg@16
|
44 |
*/
|
franta-hg@16
|
45 |
protected Connection getSpojeni(DATABAZE databaze) {
|
franta-hg@16
|
46 |
if (databaze == null) {
|
franta-hg@16
|
47 |
databaze = DATABAZE.PISKOVISTE;
|
franta-hg@16
|
48 |
}
|
franta-hg@33
|
49 |
String jndi = orizni(getVlastnost(databaze, VyukaSuperDAO.class));
|
franta-hg@16
|
50 |
DataSource zdroj = null;
|
franta-hg@16
|
51 |
try {
|
franta-hg@16
|
52 |
zdroj = (DataSource) kontext.lookup(jndi);
|
franta-hg@16
|
53 |
return zdroj.getConnection();
|
franta-hg@16
|
54 |
} catch (NamingException ex) {
|
franta-hg@16
|
55 |
log.log(Level.SEVERE, "getSpojeni: lookup", ex);
|
franta-hg@16
|
56 |
return null;
|
franta-hg@16
|
57 |
} catch (SQLException ex) {
|
franta-hg@16
|
58 |
log.log(Level.SEVERE, "getSpojeni: sql", ex);
|
franta-hg@16
|
59 |
return null;
|
franta-hg@16
|
60 |
}
|
franta-hg@16
|
61 |
}
|
franta-hg@16
|
62 |
} |