4 package eu
.etaxonomy
.cdm
.database
.update
;
6 import java
.util
.ArrayList
;
9 import org
.apache
.commons
.lang
.StringUtils
;
15 public class MapTableCreator
extends TableCreator
{
17 private String firstTableName
;
18 private String firstTableAlias
;
19 private String secondTableAlias
;
20 private String secondTableName
;
21 private String mapKeyTableName
;
23 public static MapTableCreator
NewMapTableInstance(String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String mapKeyTableName
, boolean includeAudTable
){
24 MapTableCreator result
= new MapTableCreator(stepName
, firstTableName
, firstTableAlias
, secondTableName
, secondTableAlias
, mapKeyTableName
, includeAudTable
);
29 protected MapTableCreator(String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String mapKeyTableName
, boolean includeAudTable
) {
30 super(stepName
, firstTableName
+ "_" + secondTableName
, new ArrayList
<String
>(), new ArrayList
<String
>(), new ArrayList
<Object
>(), new ArrayList
<Boolean
>(), new ArrayList
<String
>(), includeAudTable
, false, false);
31 this.firstTableName
= firstTableName
;
32 this.secondTableName
= secondTableName
;
33 this.firstTableAlias
= (firstTableAlias
!= null )? firstTableAlias
: firstTableName
;
34 this.secondTableAlias
= (secondTableAlias
!= null)? secondTableAlias
: secondTableName
;
35 this.mapKeyTableName
= mapKeyTableName
;
40 protected void addMyColumns(){
41 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, getFirstIdColumn(), false, true, firstTableName
));
42 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, getSecondIdColumn(), false, true, secondTableName
));
43 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, getMapKeyColumn(), false, true, mapKeyTableName
));
46 protected String
primaryKey(boolean isAudit
){
49 result
= getFirstIdColumn() + ",";
50 result
+= getMapKeyColumn() + ",";
52 result
= "REV, " + primaryKey(false) + ",";
53 result
+= getSecondIdColumn() + ",";
55 result
= StringUtils
.chomp(result
.trim(), ",");
59 protected String
unique(boolean isAudit
){
61 return getSecondIdColumn();
67 private String
getFirstIdColumn(){
68 return this.firstTableAlias
+ "_id";
71 private String
getSecondIdColumn(){
72 String result
= this.secondTableAlias
.toLowerCase();
74 if (this.secondTableAlias
.equalsIgnoreCase(this.secondTableName
) ){
75 if (! result
.endsWith("s")){
83 private String
getMapKeyColumn(){
84 String result
= getSecondIdColumn();
85 result
= result
.replace("_id", "_mapkey_id");