1
2
3
4
5
6
7 package org.asyrinx.joey.gen.command.rdb;
8
9 import java.util.Iterator;
10
11 import org.apache.commons.lang.StringUtils;
12 import org.asyrinx.joey.gen.model.rdb.Column;
13 import org.asyrinx.joey.gen.model.rdb.ForeignKey;
14 import org.asyrinx.joey.gen.model.rdb.ForeignKeyEntry;
15 import org.asyrinx.joey.gen.model.rdb.ForeignKeyType;
16 import org.asyrinx.joey.gen.model.rdb.Table;
17
18 /***
19 * @author takeshi
20 */
21 public class ExtendsToFk extends RdbCommand {
22
23 /***
24 *
25 */
26 public ExtendsToFk() {
27 super();
28 }
29
30
31
32
33
34
35 public void visit(Table table) {
36 if (StringUtils.isEmpty(table.getExtends()))
37 return;
38 final Table extendsTable = table.getExtendsTable();
39 if (extendsTable == null) {
40 addError(table, "could not find table'" + table.getExtends() + "'");
41 }
42 final ForeignKey foreignKey = new ForeignKey(table, extendsTable.getName());
43 foreignKey.setType(ForeignKeyType.EXTENDS);
44 this.log(foreignKey, "create FK ");
45 if (table.hasPrimaryKey()) {
46 this.log
47 .warn("table '"
48 + table.getName()
49 + "' has primary key. "
50 + "if you use hibernate, don't set primary key because primary key will be automatically generated.");
51 }
52 for (Iterator i = extendsTable.getPkColumns(); i.hasNext();) {
53 final Column foreignColumn = (Column) i.next();
54 final Column localColumn = new Column(table, foreignColumn.getName(), foreignColumn.getType(),
55 foreignColumn.getSize(), foreignColumn.isRequired(), !table.hasPrimaryKey(), foreignColumn
56 .getDefaultValue());
57 localColumn.setExtended(true);
58 this.log(localColumn, "create Col ");
59 final ForeignKeyEntry foreignKeyEntry = new ForeignKeyEntry(foreignKey, localColumn.getName(),
60 foreignColumn.getName());
61 this.log(foreignKeyEntry, "create FKEntry");
62 }
63 }
64
65 }