1
2
3
4
5
6
7
8
9
10
11 package pt.digitalis.maven.ormgenerator.hibernate;
12
13 import java.util.List;
14
15 import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
16 import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
17 import org.hibernate.cfg.reveng.TableIdentifier;
18
19
20
21
22
23
24
25 public class CustomReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {
26
27
28
29
30
31
32 @SuppressWarnings("unchecked")
33 @Override
34 public String foreignKeyToCollectionName(String keyname, TableIdentifier fromTable, List fromColumns,
35 TableIdentifier referencedTable, List referencedColumns, boolean uniqueReference) {
36
37 String newTableName = referencedTable.getName().toUpperCase();
38
39 if (newTableName.startsWith("T_"))
40 newTableName = newTableName.substring(2);
41
42 if (newTableName.startsWith("TB"))
43 newTableName = newTableName.replaceFirst("TB", "TABLE_");
44
45 if (!newTableName.equals(referencedTable.getName()))
46 referencedTable =
47 new TableIdentifier(referencedTable.getCatalog(), referencedTable.getSchema(), newTableName);
48
49 newTableName = fromTable.getName().toUpperCase();
50
51 if (newTableName.startsWith("T_"))
52 newTableName = newTableName.substring(2);
53
54 if (newTableName.startsWith("TB"))
55 newTableName = newTableName.replaceFirst("TB", "TABLE_");
56
57 if (!newTableName.equals(fromTable.getName()))
58 fromTable =
59 new TableIdentifier(fromTable.getCatalog(), fromTable.getSchema(), newTableName);
60
61 String collectionName =
62 super.foreignKeyToCollectionName(keyname, fromTable, fromColumns, referencedTable, referencedColumns,
63 uniqueReference);
64
65
66
67
68
69
70
71 return collectionName;
72 }
73
74
75
76
77
78
79 @SuppressWarnings("unchecked")
80 @Override
81 public String foreignKeyToEntityName(String keyname, TableIdentifier fromTable, List fromColumnNames,
82 TableIdentifier referencedTable, List referencedColumnNames, boolean uniqueReference) {
83
84
85
86
87 String newTableName = referencedTable.getName().toUpperCase();
88
89 if (newTableName.startsWith("T_"))
90 newTableName = newTableName.substring(2);
91
92 if (newTableName.startsWith("TB"))
93 newTableName = newTableName.replaceFirst("TB", "TABLE_");
94
95 if (!newTableName.equals(referencedTable.getName()))
96 referencedTable =
97 new TableIdentifier(referencedTable.getCatalog(), referencedTable.getSchema(), newTableName);
98
99 return super.foreignKeyToEntityName(keyname, fromTable, fromColumnNames, referencedTable,
100 referencedColumnNames, uniqueReference);
101 }
102
103
104
105
106 public CustomReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
107 super(delegate);
108 }
109
110
111
112
113
114 @Override
115 public String columnToPropertyName(TableIdentifier table, String column) {
116
117 column = column.toUpperCase();
118
119 if (column.startsWith("CD_"))
120 column = column.replaceFirst("CD_", "CODE_");
121 else if (column.startsWith("NM_"))
122 column = column.replaceFirst("NM_", "NAME_");
123 else if (column.startsWith("DS_"))
124 column = column.replaceFirst("DS_", "DESC_");
125 else if (column.startsWith("HR_"))
126 column = column.replaceFirst("HR_", "HOUR_");
127 else if (column.startsWith("DT_"))
128 column = column.replaceFirst("DT_", "DATE_");
129 else if (column.startsWith("NR_"))
130 column = column.replaceFirst("NR_", "NUMBER_");
131
132 if (column.startsWith("T_"))
133 column = column.substring(2);
134
135 if (column.startsWith("TB"))
136 column = column.replaceFirst("TB", "TABLE_");
137
138 return super.columnToPropertyName(table, column);
139 }
140
141
142
143
144
145 @Override
146 public boolean excludeColumn(TableIdentifier identifier, String columnName) {
147
148 if (columnName.equalsIgnoreCase("REGISTER_ID"))
149 return true;
150 else
151 return super.excludeColumn(identifier, columnName);
152 }
153
154
155
156
157 @Override
158 public boolean excludeTable(TableIdentifier ti) {
159 return super.excludeTable(ti);
160 }
161
162
163
164
165 @Override
166 public String tableToClassName(TableIdentifier tableIdentifier) {
167
168 String newTableName = tableIdentifier.getName().toUpperCase();
169
170 if (newTableName.startsWith("T_"))
171 newTableName = newTableName.substring(2);
172
173 if (newTableName.startsWith("TB"))
174 newTableName = newTableName.replaceFirst("TB", "TABLE_");
175
176 if (!newTableName.equals(tableIdentifier.getName()))
177 tableIdentifier =
178 new TableIdentifier(tableIdentifier.getCatalog(), tableIdentifier.getSchema(), newTableName);
179
180 return super.tableToClassName(tableIdentifier);
181 }
182 }