diff -r 4858f952774d -r 3df37f25b286 java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java --- a/java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java Mon Oct 06 09:36:27 2008 +0200 +++ b/java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java Wed Feb 11 22:23:22 2009 +0100 @@ -21,7 +21,7 @@ private static Map sql = Collections.synchronizedMap(new HashMap()); private static Map vlastnosti = Collections.synchronizedMap(new HashMap()); - private enum SQL { + private enum VLASTNOSTI { AHOJ } @@ -29,24 +29,43 @@ /** * Načítá SQL dotazy ze souboru, který se jmenuje stejně jako třída a má příponu sql.xml * Do těchto souborů patří pouze SQL dotazy - všechny ostatní parametry dáme do .xml souboru. + *

Pozor na použití v protected metodách, které mohou být volány z potomků – + * pak se použije XML soubor daného potomka a ne XML soubor třídy, ve které se protected metoda nachází. + * V takovém případě je potřeba použít parametr trida

* @param klic Enum konstnanta z dané třídy + * @param trida třída, jejíž XML soubor budeme hledat. * @return SQL dotaz nebo null v případě chyby */ + protected String getSQL(Enum klic, Class trida) { + return getHodnota(sql, "sql.xml", klic, trida); + } + + /** + * @see getSQL(Enum klic, Class trida) + */ protected String getSQL(Enum klic) { - - - - return getHodnota(sql, "sql.xml", klic); + return getSQL(klic, null); } /** * Načítá textové hodnoty (vlastnosti) ze souboru, který se jmenuje stejně jako třída a má příponu xml * Sem patří všechny parametry tříd kromě SQL dotazů. + *

Pozor na použití v protected metodách, které mohou být volány z potomků – + * pak se použije XML soubor daného potomka a ne XML soubor třídy, ve které se protected metoda nachází. + * V takovém případě je potřeba použít parametr trida

* @param klic Enum konstnanta z dané třídy + * @param trida třída, jejíž XML soubor budeme hledat. * @return textová hodnota nebo null v případě chyby */ + protected String getVlastnost(Enum klic, Class trida) { + return getHodnota(vlastnosti, "xml", klic, trida); + } + + /** + * @see getVlastnost(Enum klic, Class trida) + */ protected String getVlastnost(Enum klic) { - return getHodnota(vlastnosti, "xml", klic); + return getVlastnost(klic, null); } /** @@ -54,23 +73,27 @@ * @param klic Enum konstnanta z dané třídy * @return textová hodnota nebo null v případě chyby */ - private String getHodnota(Map mezipamet, String pripona, Enum klic) { + private String getHodnota(Map mezipamet, String pripona, Enum klic, Class trida) { - if (mezipamet.get(getClass()) == null) { + if (trida == null) { + trida = getClass(); + } + + if (mezipamet.get(trida) == null) { /** Ještě nemáme načteno ze souboru */ - mezipamet.put(getClass(), getHodnoty(pripona)); + mezipamet.put(trida, getHodnoty(pripona, trida)); - if (mezipamet.get(getClass()) == null) { + if (mezipamet.get(trida) == null) { /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */ - mezipamet.put(getClass(), new Properties()); + mezipamet.put(trida, new Properties()); } } - return mezipamet.get(getClass()).getProperty(klic.toString()); + return mezipamet.get(trida).getProperty(klic.toString()); } public static void main(String[] args) { - System.out.println(new SuperDAO().getSQL(SQL.AHOJ)); + System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ)); } @@ -80,20 +103,18 @@ * @param pripona přípona souboru - obvykle "sql.xml" nebo "xml" (bez tečky) * @return načtené vlastnosti nebo null v případě chyby */ - private Properties getHodnoty(String pripona) { - Class trida = getClass(); + private Properties getHodnoty(String pripona, Class trida) { String soubor = trida.getSimpleName() + "." + pripona; - Properties hodnoty = null; try { + Properties hodnoty = new Properties(); InputStream fis = trida.getResourceAsStream(soubor); - hodnoty = new Properties(); hodnoty.loadFromXML(fis); + return hodnoty; } catch (Exception e) { log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e); + return null; } - - return hodnoty; } /** @@ -102,7 +123,7 @@ * @param prikaz DB dotaz * @param vysledek DB výsledek */ - protected void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) { + protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) { if (vysledek != null) { try { vysledek.close(); @@ -122,4 +143,16 @@ } } } + + /** + * @param jndi původní řetězec + * @return U JNDI jmen nemá smysl, aby měli na začátku nebo na konci bílé znaky (mezery…) + */ + public static String orizniJNDI(String jndi) { + if (jndi == null) { + return null; + } else { + return jndi.trim(); + } + } } \ No newline at end of file