Opravena chyba související s protected metodami:
authorFrantišek Kučera <franta-hg@frantovo.cz>
Wed Feb 11 22:23:22 2009 +0100 (2009-02-11)
changeset 23df37f25b286
parent 1 d32edd5bcb8a
child 3 e4845c29ae29
Opravena chyba související s protected metodami:
pokud jsme dříve měli protected metodu, ve které jsme používali getSQL nebo getVlastnost
a tuto metodu jsme volali z potomka, hledaly se SQL a Vlastnosti v XML souboru patřícímu potomkovi.
Proto je v protected metodách potřeba zadávat kromě názvu požadované hodnoty i třídu,
aby bylo jasné, že se mají hodnoty bráz z jejího XML souboru a ne ze souboru potomka.
java/SuperDAO/nbproject/build-impl.xml
java/SuperDAO/nbproject/genfiles.properties
java/SuperDAO/nbproject/private/private.properties
java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java
java/SuperDAOplugin/nbproject/build-impl.xml
java/SuperDAOplugin/nbproject/genfiles.properties
java/SuperDAOplugin/nbproject/project.xml
     1.1 --- a/java/SuperDAO/nbproject/build-impl.xml	Sun Nov 23 23:10:04 2008 +0100
     1.2 +++ b/java/SuperDAO/nbproject/build-impl.xml	Wed Feb 11 22:23:22 2009 +0100
     1.3 @@ -152,7 +152,7 @@
     1.4              <attribute default="${includes}" name="includes"/>
     1.5              <attribute default="${excludes}" name="excludes"/>
     1.6              <attribute default="${javac.debug}" name="debug"/>
     1.7 -            <attribute default="" name="sourcepath"/>
     1.8 +            <attribute default="/does/not/exist" name="sourcepath"/>
     1.9              <element name="customize" optional="true"/>
    1.10              <sequential>
    1.11                  <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
     2.1 --- a/java/SuperDAO/nbproject/genfiles.properties	Sun Nov 23 23:10:04 2008 +0100
     2.2 +++ b/java/SuperDAO/nbproject/genfiles.properties	Wed Feb 11 22:23:22 2009 +0100
     2.3 @@ -4,5 +4,5 @@
     2.4  # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
     2.5  # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
     2.6  nbproject/build-impl.xml.data.CRC32=958f21fd
     2.7 -nbproject/build-impl.xml.script.CRC32=d53793de
     2.8 -nbproject/build-impl.xml.stylesheet.CRC32=e55b27f5
     2.9 +nbproject/build-impl.xml.script.CRC32=e6e803c1
    2.10 +nbproject/build-impl.xml.stylesheet.CRC32=65b8de21
     3.1 --- a/java/SuperDAO/nbproject/private/private.properties	Sun Nov 23 23:10:04 2008 +0100
     3.2 +++ b/java/SuperDAO/nbproject/private/private.properties	Wed Feb 11 22:23:22 2009 +0100
     3.3 @@ -4,4 +4,4 @@
     3.4  javac.debug=true
     3.5  javadoc.preview=true
     3.6  jaxws.endorsed.dir=/usr/local/netbeans-6.5/java2/modules/ext/jaxws21/api:/usr/local/netbeans-6.5/ide10/modules/ext/jaxb/api
     3.7 -user.properties.file=/home/fiki/src/p\u00edskovi\u0161t\u011b/Graf1/build/testuserdir/build.properties
     3.8 +user.properties.file=/home/fiki/.netbeans/6.5/build.properties
     4.1 --- a/java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java	Sun Nov 23 23:10:04 2008 +0100
     4.2 +++ b/java/SuperDAO/src/cz/frantovo/superDAO/SuperDAO.java	Wed Feb 11 22:23:22 2009 +0100
     4.3 @@ -21,7 +21,7 @@
     4.4      private static Map<Class, Properties> sql = Collections.synchronizedMap(new HashMap<Class, Properties>());
     4.5      private static Map<Class, Properties> vlastnosti = Collections.synchronizedMap(new HashMap<Class, Properties>());
     4.6  
     4.7 -    private enum SQL {
     4.8 +    private enum VLASTNOSTI {
     4.9  
    4.10          AHOJ
    4.11      }
    4.12 @@ -29,24 +29,43 @@
    4.13      /**
    4.14       * Načítá SQL dotazy ze souboru, který se jmenuje stejně jako třída a má příponu sql.xml
    4.15       * Do těchto souborů patří pouze SQL dotazy - všechny ostatní parametry dáme do .xml souboru.
    4.16 +     * <p><strong>Pozor</strong> na použití v <em>protected</em> metodách, které mohou být volány z potomků –
    4.17 +     * pak se použije XML soubor daného potomka a ne XML soubor třídy, ve které se <em>protected</em> metoda nachází.
    4.18 +     * V takovém případě je potřeba použít parametr <em>trida</em></p>
    4.19       * @param klic Enum konstnanta z dané třídy
    4.20 +     * @param trida třída, jejíž XML soubor budeme hledat.
    4.21       * @return SQL dotaz nebo null v případě chyby
    4.22       */
    4.23 +    protected String getSQL(Enum klic, Class trida) {
    4.24 +        return getHodnota(sql, "sql.xml", klic, trida);
    4.25 +    }
    4.26 +
    4.27 +    /**
    4.28 +     * @see getSQL(Enum klic, Class trida)
    4.29 +     */
    4.30      protected String getSQL(Enum klic) {
    4.31 -
    4.32 -
    4.33 -
    4.34 -        return getHodnota(sql, "sql.xml", klic);
    4.35 +        return getSQL(klic, null);
    4.36      }
    4.37  
    4.38      /**
    4.39       * Načítá textové hodnoty (vlastnosti) ze souboru, který se jmenuje stejně jako třída a má příponu xml
    4.40       * Sem patří všechny parametry tříd kromě SQL dotazů.
    4.41 +     * <p><strong>Pozor</strong> na použití v <em>protected</em> metodách, které mohou být volány z potomků –
    4.42 +     * pak se použije XML soubor daného potomka a ne XML soubor třídy, ve které se <em>protected</em> metoda nachází.
    4.43 +     * V takovém případě je potřeba použít parametr <em>trida</em></p>
    4.44       * @param klic Enum konstnanta z dané třídy
    4.45 +     * @param trida třída, jejíž XML soubor budeme hledat.
    4.46       * @return textová hodnota nebo null v případě chyby
    4.47       */
    4.48 +    protected String getVlastnost(Enum klic, Class trida) {
    4.49 +        return getHodnota(vlastnosti, "xml", klic, trida);
    4.50 +    }
    4.51 +
    4.52 +    /**
    4.53 +     * @see getVlastnost(Enum klic, Class trida)
    4.54 +     */
    4.55      protected String getVlastnost(Enum klic) {
    4.56 -        return getHodnota(vlastnosti, "xml", klic);
    4.57 +        return getVlastnost(klic, null);
    4.58      }
    4.59  
    4.60      /**
    4.61 @@ -54,23 +73,27 @@
    4.62       * @param klic Enum konstnanta z dané třídy
    4.63       * @return textová hodnota nebo null v případě chyby
    4.64       */
    4.65 -    private String getHodnota(Map<Class, Properties> mezipamet, String pripona, Enum klic) {
    4.66 +    private String getHodnota(Map<Class, Properties> mezipamet, String pripona, Enum klic, Class trida) {
    4.67  
    4.68 -        if (mezipamet.get(getClass()) == null) {
    4.69 +        if (trida == null) {
    4.70 +            trida = getClass();
    4.71 +        }
    4.72 +
    4.73 +        if (mezipamet.get(trida) == null) {
    4.74              /** Ještě nemáme načteno ze souboru */
    4.75 -            mezipamet.put(getClass(), getHodnoty(pripona));
    4.76 +            mezipamet.put(trida, getHodnoty(pripona, trida));
    4.77  
    4.78 -            if (mezipamet.get(getClass()) == null) {
    4.79 +            if (mezipamet.get(trida) == null) {
    4.80                  /** Došlo k chybě --> už to příště nebudeme zkoušet načítat */
    4.81 -                mezipamet.put(getClass(), new Properties());
    4.82 +                mezipamet.put(trida, new Properties());
    4.83              }
    4.84          }
    4.85  
    4.86 -        return mezipamet.get(getClass()).getProperty(klic.toString());
    4.87 +        return mezipamet.get(trida).getProperty(klic.toString());
    4.88      }
    4.89  
    4.90      public static void main(String[] args) {
    4.91 -        System.out.println(new SuperDAO().getSQL(SQL.AHOJ));
    4.92 +        System.out.println(new SuperDAO().getSQL(VLASTNOSTI.AHOJ));
    4.93  
    4.94      }
    4.95  
    4.96 @@ -80,20 +103,18 @@
    4.97       * @param pripona přípona souboru - obvykle "sql.xml" nebo "xml" (bez tečky)
    4.98       * @return načtené vlastnosti nebo null v případě chyby
    4.99       */
   4.100 -    private Properties getHodnoty(String pripona) {
   4.101 -        Class trida = getClass();
   4.102 +    private Properties getHodnoty(String pripona, Class trida) {
   4.103          String soubor = trida.getSimpleName() + "." + pripona;
   4.104  
   4.105 -        Properties hodnoty = null;
   4.106          try {
   4.107 +            Properties hodnoty = new Properties();
   4.108              InputStream fis = trida.getResourceAsStream(soubor);
   4.109 -            hodnoty = new Properties();
   4.110              hodnoty.loadFromXML(fis);
   4.111 +            return hodnoty;
   4.112          } catch (Exception e) {
   4.113              log.log(Level.SEVERE, "Chyba při načítání vlastností: " + soubor, e);
   4.114 +            return null;
   4.115          }
   4.116 -
   4.117 -        return hodnoty;
   4.118      }
   4.119  
   4.120      /**
   4.121 @@ -102,7 +123,7 @@
   4.122       * @param prikaz DB dotaz
   4.123       * @param vysledek DB výsledek
   4.124       */
   4.125 -    protected void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) {
   4.126 +    protected static void zavri(Connection spojeni, Statement prikaz, ResultSet vysledek) {
   4.127          if (vysledek != null) {
   4.128              try {
   4.129                  vysledek.close();
   4.130 @@ -122,4 +143,16 @@
   4.131              }
   4.132          }
   4.133      }
   4.134 +
   4.135 +    /**
   4.136 +     * @param jndi původní řetězec
   4.137 +     * @return U JNDI jmen nemá smysl, aby měli na začátku nebo na konci bílé znaky (mezery…)
   4.138 +     */
   4.139 +    public static String orizniJNDI(String jndi) {
   4.140 +        if (jndi == null) {
   4.141 +            return null;
   4.142 +        } else {
   4.143 +            return jndi.trim();
   4.144 +        }
   4.145 +    }
   4.146  }
   4.147 \ No newline at end of file
     5.1 --- a/java/SuperDAOplugin/nbproject/build-impl.xml	Sun Nov 23 23:10:04 2008 +0100
     5.2 +++ b/java/SuperDAOplugin/nbproject/build-impl.xml	Wed Feb 11 22:23:22 2009 +0100
     5.3 @@ -4,8 +4,11 @@
     5.4  ***         EDIT ../build.xml INSTEAD         ***
     5.5  -->
     5.6  <project name="cz.frantovo.superDAO-impl" basedir="..">
     5.7 -    <property file="nbproject/private/platform-private.properties"/>
     5.8 -    <property file="nbproject/platform.properties"/>
     5.9 +    <property file="nbproject/private/suite-private.properties"/>
    5.10 +    <property file="nbproject/suite.properties"/>
    5.11 +    <fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
    5.12 +    <property file="${suite.dir}/nbproject/private/platform-private.properties"/>
    5.13 +    <property file="${suite.dir}/nbproject/platform.properties"/>
    5.14      <macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
    5.15          <attribute name="name"/>
    5.16          <attribute name="value"/>
     6.1 --- a/java/SuperDAOplugin/nbproject/genfiles.properties	Sun Nov 23 23:10:04 2008 +0100
     6.2 +++ b/java/SuperDAOplugin/nbproject/genfiles.properties	Wed Feb 11 22:23:22 2009 +0100
     6.3 @@ -1,8 +1,8 @@
     6.4 -build.xml.data.CRC32=2d88a397
     6.5 +build.xml.data.CRC32=60287c28
     6.6  build.xml.script.CRC32=ca10ceb8
     6.7  build.xml.stylesheet.CRC32=79c3b980
     6.8  # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
     6.9  # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
    6.10 -nbproject/build-impl.xml.data.CRC32=2d88a397
    6.11 -nbproject/build-impl.xml.script.CRC32=e97ccad3
    6.12 +nbproject/build-impl.xml.data.CRC32=60287c28
    6.13 +nbproject/build-impl.xml.script.CRC32=8c7cd5f9
    6.14  nbproject/build-impl.xml.stylesheet.CRC32=deb65f65
     7.1 --- a/java/SuperDAOplugin/nbproject/project.xml	Sun Nov 23 23:10:04 2008 +0100
     7.2 +++ b/java/SuperDAOplugin/nbproject/project.xml	Wed Feb 11 22:23:22 2009 +0100
     7.3 @@ -4,7 +4,7 @@
     7.4      <configuration>
     7.5          <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
     7.6              <code-name-base>cz.frantovo.superDAO</code-name-base>
     7.7 -            <standalone/>
     7.8 +            <suite-component/>
     7.9              <module-dependencies/>
    7.10              <public-packages>
    7.11                  <package>cz.frantovo.superDAO</package>