KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > transactions > ProjectsValidator


1 package transactions;
2
3 import java.util.HashMap JavaDoc;
4 import javax.servlet.http.HttpServletRequest JavaDoc;
5 import dinamica.AbstractValidator;
6 import dinamica.*;
7
8 public class ProjectsValidator extends AbstractValidator {
9
10     //stores validation error msgs for every cell/row
11
StringBuffer JavaDoc errMsg = new StringBuffer JavaDoc();
12
13     public boolean isValid(
14         HttpServletRequest JavaDoc req,
15         Recordset inputParams,
16         HashMap JavaDoc attribs)
17         throws Throwable JavaDoc
18     {
19     
20         //default return value
21
boolean flag = true;
22     
23         //read format mask to validate dates
24
String JavaDoc dateFormat = getContext().getInitParameter("def-input-date");
25     
26         //read array of columns (grid)
27
String JavaDoc id[] = getRequest().getParameterValues("project_id");
28         String JavaDoc description[] = getRequest().getParameterValues("description");
29         String JavaDoc budget[] = getRequest().getParameterValues("budget");
30         String JavaDoc startdate[] = getRequest().getParameterValues("start_date");
31         String JavaDoc managerid[] = getRequest().getParameterValues("manager_id");
32         String JavaDoc log[] = getRequest().getParameterValues("log_activity");
33         
34         //create recordset to contain array values
35
Recordset rs = new Recordset();
36         rs.append("project_id", java.sql.Types.INTEGER);
37         rs.append("description", java.sql.Types.VARCHAR);
38         rs.append("budget", java.sql.Types.DOUBLE);
39         rs.append("start_date", java.sql.Types.DATE);
40         rs.append("log_activity", java.sql.Types.VARCHAR);
41         rs.append("manager_id", java.sql.Types.INTEGER);
42         
43         //validate data types
44
int length = description.length;
45         for(int i=0;i<length;i++)
46         {
47             
48             //add record
49
rs.addNew();
50             
51             //read plain values
52
rs.setValue("project_id", new Integer JavaDoc(id[i]) );
53             rs.setValue("description", description[i]);
54             rs.setValue("log_activity", log[i]);
55             rs.setValue("manager_id", new Integer JavaDoc(managerid[i]) );
56             
57             //check date
58
java.util.Date JavaDoc d = ValidatorUtil.testDate(startdate[i], dateFormat);
59             if (d!=null)
60                 rs.setValue("start_date", d);
61             else
62             {
63                 errMsg.append("Invalid date on row #" + (i+1) + "; ");
64                 flag = false;
65             }
66                 
67             //check double
68
Double JavaDoc dn = ValidatorUtil.testDouble(budget[i]);
69             if (dn!=null)
70                 rs.setValue("budget", dn);
71             else
72             {
73                 errMsg.append("Invalid budget value on row #" + (i+1) + "; ");
74                 flag = false;
75             }
76         }
77         
78         //if validation=OK save recordset in request attribute so that
79
//the Transaction class can retrieve it and save it to DB
80
if (flag)
81             getRequest().setAttribute("projects", rs);
82         
83         return flag;
84         
85     }
86
87     /**
88      * Override this method to supply a custom error message
89      */

90     public String JavaDoc getErrorMessage()
91     {
92         return errMsg.toString();
93     }
94
95 }
96
Popular Tags