1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.javagen.agile.db.visitor;
17
18 import org.javagen.agile.db.model.PkColumn;
19 import org.javagen.agile.db.model.Table;
20
21 /***
22 * Sets all non-composite, primary keys to unique.
23 *
24 * Wire this class into the code generation pipeline after database model creation, but before
25 * Java conversion.
26 *
27 * @author Richard Easterling
28 */
29 public class UniquePKFinderVisitor extends DefaultDatabaseVisitor {
30
31 public UniquePKFinderVisitor() {
32 this.setItinerary(new String[] {PkColumn.DEFAULT_MODEL_TYPE});
33 }
34
35 /***
36 * Identify and set auto-increment primary keys using specified pattern.
37 */
38 public void visit(PkColumn pkColumn) {
39 Table table = pkColumn.getParentTable();
40 if ( ! Boolean.TRUE.equals(pkColumn.getUnique())
41 && ! table.hasCompositeKey()
42 )
43 {
44 pkColumn.setUnique(Boolean.TRUE);
45 }
46 }
47 }