Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/project/validator/ProcedureValidator.java


1   package org.objectstyle.cayenne.project.validator;
2   
3   import java.util.Iterator;
4   import java.util.List;
5   
6   import org.apache.log4j.Logger;
7   import org.objectstyle.cayenne.map.DataMap;
8   import org.objectstyle.cayenne.map.Procedure;
9   import org.objectstyle.cayenne.project.ProjectPath;
10  import org.objectstyle.cayenne.util.Util;
11  
12  /**
13   * Validator for stored procedures.
14   * 
15   * @author Andrei Adamchik
16   */
17  public class ProcedureValidator extends TreeNodeValidator {
18    private static Logger logObj = Logger.getLogger(ProcedureValidator.class);
19    
20      public void validateObject(ProjectPath treeNodePath, Validator validator) {
21      Procedure procedure = (Procedure) treeNodePath.getObject();
22          validateName(procedure, treeNodePath, validator);
23          
24          // check that return value is present
25          if(procedure.isReturningValue()) {
26            List parameters = procedure.getCallParameters();
27            if(parameters.size() == 0) {
28          validator.registerWarning("Procedure returns a value, but has no parameters.", treeNodePath);
29            }
30          }
31      }
32  
33      protected void validateName(Procedure procedure, ProjectPath path, Validator validator) {
34          String name = procedure.getName();
35  
36          // Must have name
37          if (Util.isEmptyString(name)) {
38              validator.registerError("Unnamed Procedure.", path);
39              return;
40          }
41  
42          DataMap map = (DataMap) path.getObjectParent();
43          if (map == null) {
44              return;
45          }
46  
47          // check for duplicate names in the parent context
48          Iterator it = map.getProcedures().iterator();
49          while (it.hasNext()) {
50              Procedure otherProcedure = (Procedure) it.next();
51              if (otherProcedure == procedure) {
52                  continue;
53              }
54  
55              if (name.equals(otherProcedure.getName())) {
56                  validator.registerError("Duplicate Procedure name: " + name + ".", path);
57                  break;
58              }
59          }
60      }
61  
62  }