## defs/Query.java

/* [<][>][^][v][top][bottom][index][help] */

## FUNCTIONS

This source file includes following functions.

1. Query
2. replaceVars
3. getStruct
4. startDoc
5. endDoc

       1 /**
       2  * RIPE attribute.
       3  *
       4  * @author ottrey@ripe.net
       5  * @version $Version$
       6  *
       7  */
       8 public class Query {
         /* [<][>][^][v][top][bottom][index][help] */
       9
      10   private String qrytype;
      11   private boolean lookup;
      12   private String keytype;
      13   private String code;
      14   private String clars;
      15   private String sqlQuery;
      16   private String Querydesc;
      17
      18   // -----------------oOo-----------------
      19   //              Constructors
      20   // -----------------oOo-----------------
      21   /**
      22    * Creates a Query structure.
      23    *
      24    * @author ottrey@ripe.net
      25    *
      26    */
      27   public Query(String qrytype, boolean lookup, String keytype, String code, String clars, String sqlQuery) {
      28
      29     this.qrytype = qrytype;
      30     this.lookup = lookup;
      31     this.keytype = keytype.toUpperCase();
      32     this.code = code;
      33     this.clars = clars;
      34     this.sqlQuery = sqlQuery;
      35
      36     // now prepare a query description
      37     if( qrytype.equals("SQL") ) {
      38         Querydesc = qrytype + ":" + clars + "/" + code + "/" + this.keytype;
      39     } else {
      40         Querydesc = qrytype + ":" + clars + "/" + this.keytype;
      41     }
      42   }// Query()
      43
      44     private String replaceVars(Defs defs) {
         /* [<][>][^][v][top][bottom][index][help] */
      45         String finalQuery = "";
      46         int lastindex = 0;
      47
      48
      49         // paste into finalQuery, replacing the symbols
      50         do {
      51             int begin, end;
      52
      53             begin = sqlQuery.indexOf("$(", lastindex);
      54
      55             if( begin != -1 ) {
      56                 end = sqlQuery.indexOf(")", begin);
      57                 String variable = sqlQuery.substring(begin+2, end);
      58
      59                 //System.out.println( "var: " +  variable );
      60
      61                 finalQuery = finalQuery.concat(sqlQuery.substring(lastindex, begin));
      62                 finalQuery = finalQuery.concat(defs.getValueByEnum(variable) );
      63                 lastindex = end + 1;
      64             } else {
      65                 //System.out.println( "finishing: " + sqlQuery.substring(lastindex));
      66                 finalQuery = finalQuery.concat(sqlQuery.substring(lastindex));
      67                 lastindex = sqlQuery.length();
      68             }
      69
      70             //System.out.println( "final: " + finalQuery);
      71
      72         } while( lastindex < sqlQuery.length() );
      73
      74         return finalQuery;
      75
      76     } // replaceVars
      77
      78   /**
      79    * @return String C - structure in the form:
      80    * {
      81    *   R_SQL,
      82    *   Q_LOOKUP,
      83    *   WK_NAME,
      84    *   A_PN,
      85    *   "SELECT N01.pe_ro_id FROM %s WHERE %s",
      86    *   0,
      87    *   0
      88    * },
      89    * @param String the level of indenting.
      90    *
      91    */
      92   public String getStruct(String indent, Defs defs) {
         /* [<][>][^][v][top][bottom][index][help] */
      93     String result = new String();
      94
      95     String FinalQuery = replaceVars(defs);
      96
      97     result += indent + "{" + "\n  ";
      98     result += indent + "R_" + qrytype.toUpperCase() + ",\n  ";
      99     if (lookup) {
     100       result += indent + "Q_LOOKUP";
     101     }
     102     else {
     103       result += indent + "Q_INVERSE";
     104     }
     105     result += ",\n  ";
     106     result += indent + keytype.toUpperCase() + ",\n  ";
     107     result += indent + "A_" + code.toUpperCase() + ",\n  ";
     108     if (clars.equals("ANY")) {
     109       result += indent + "-1" + ",\n  ";
     110     }
     111     else {
     112       result += indent + "C_" + clars.toUpperCase() + ",\n  ";
     113     }
     114     result += indent + "\"" + FinalQuery.replace('\n', ' ') + "\""  + ",\n  ";
     115
     116     result += indent + "\"" + Querydesc  + "\""  + "\n  ";
     117
     118     result += indent + "},";
     119
     120     return result;
     121   } //  getStruct()
     122
     123   public static String startDoc() {
         /* [<][>][^][v][top][bottom][index][help] */
     124     String result = new String();
     125
     126     // depend on external structure definition in defs.h
     127     result += "Query_t Query[] = {\n";
     128
     129     return result;
     130   } // startDoc()
     131
     132   public static String endDoc() {
         /* [<][>][^][v][top][bottom][index][help] */
     133     String result = new String();
     134
     135     result += "  {\n";
     136     result += "    0,\n";
     137     result += "    0,\n";
     138     result += "    0,\n";
     139     result += "    0,\n";
     140     result += "    0,\n";
     141     result += "    NULL\n";
     142     result += "  }\n";
     143     result += "}; /* Query[] */\n";
     144
     145     return result;
     146   } // endDoc()
     147
     148 } // Query
     149

/* [<][>][^][v][top][bottom][index][help] */