01: package dinamica.validators;
02:
03: import java.util.HashMap;
04: import javax.servlet.http.HttpServletRequest;
05: import dinamica.*;
06:
07: /**
08: * This validator returns FALSE if no rows are returned
09: * by a given SQL query. If at least one row is returned
10: * then the validator returns TRUE.
11: * <br><br>
12: * Rrequires the following custom attributes:<br>
13: * <ul>
14: * <li> sql: query to find any related record. You may use field makers
15: * that will be replaced by the corresponding request parameters passed
16: * as a recordset to the isValid method.
17: * </ul>
18: *
19: * (c) 2004 Martin Cordova<br>
20: * This code is released under the LGPL license<br>
21: * Dinamica Framework - http://www.martincordova.com<br>
22: * @author Martin Cordova (dinamica@martincordova.com)
23: * */
24: public class NoRecordsFound extends AbstractValidator {
25:
26: /* (non-Javadoc)
27: * @see dinamica.AbstractValidator#isValid(javax.servlet.http.HttpServletRequest, dinamica.Recordset, java.util.HashMap)
28: */
29: public boolean isValid(HttpServletRequest req,
30: Recordset inputParams, HashMap<String, String> attribs)
31: throws Throwable {
32:
33: boolean flag = true;
34:
35: //get db channel
36: Db db = getDb();
37:
38: //detect if sql parameter was passed to the validator
39: boolean bSql = attribs.containsKey("sql");
40:
41: if (!bSql) {
42:
43: throw new Throwable("[" + this .getClass().getName()
44: + "] Missing attribute [sql] in validator.xml");
45:
46: } else {
47:
48: //read config
49: String query = (String) attribs.get("sql");
50:
51: //load template and replace parameter values
52: String sql = getResource(query);
53: sql = getSQL(sql, inputParams);
54:
55: //execute sql
56: Recordset rs = db.get(sql);
57: if (rs.getRecordCount() == 0)
58: flag = false;
59:
60: }
61:
62: return flag;
63:
64: }
65:
66: }
|