View Javadoc

1   /*
2    * joey-gen and its relative products are published under the terms
3    * of the Apache Software License.
4    * 
5    * Created on 2004/08/15 18:00:19
6    */
7   package org.asyrinx.joey.gen.command.rdb;
8   
9   import org.apache.commons.lang.StringUtils;
10  import org.asyrinx.joey.gen.model.rdb.ForeignKey;
11  import org.asyrinx.joey.gen.model.rdb.ForeignKeyEntry;
12  import org.asyrinx.joey.gen.model.rdb.Table;
13  
14  /***
15   * @author akima
16   */
17  public class CheckForeignKey extends RdbCommand {
18  
19      /*
20       * (non-Javadoc)
21       * 
22       * @see org.asyrinx.joey.gen.model.rdb.visitor.RdbVisitorMock#visit(org.asyrinx.joey.gen.model.rdb.ForeignKey)
23       */
24      public void visit(ForeignKey foreignKey) {
25          if (StringUtils.isEmpty(foreignKey.getForeign()))
26              addError(foreignKey, "foreignKey requires foreignTable");
27          final Table foreignTable = foreignKey.getForeignTable();
28          if (foreignTable == null)
29              addError(foreignKey, "table '" + foreignKey.getForeign() + "' not found");
30      }
31  
32      /*
33       * (non-Javadoc)
34       * 
35       * @see org.asyrinx.joey.gen.model.rdb.RdbVisitor#visit(org.asyrinx.joey.gen.model.rdb.ForeignKeyEntry)
36       */
37      public void visit(ForeignKeyEntry entry) {
38          if (StringUtils.isEmpty(entry.getLocal()))
39              addError(entry, "foreignKeyEntry requires local");
40          if (StringUtils.isEmpty(entry.getForeign()))
41              addError(entry, "foreignKeyEntry requires foreign");
42          final ForeignKey foreignKey = entry.getParent();
43          if (entry.getLocalColumn() == null)
44              addError(entry, "column '" + entry.getLocal() + "' not found in table '"
45                      + foreignKey.getLocal().getFullName() + "'");
46          if (entry.getForeignColumn() == null)
47              addError(entry, "column '" + entry.getForeign() + "' not found in table '"
48                      + foreignKey.getForeignTable().getFullName() + "'");
49      }
50  
51  }