4 package eu
.etaxonomy
.cdm
.database
.update
;
6 import java
.util
.ArrayList
;
9 import org
.apache
.commons
.lang3
.StringUtils
;
15 public class MapTableCreator
extends TableCreator
{
17 private String firstTableName
;
18 private String firstTableAlias
;
19 private String secondTableName
;
20 private String secondTableAlias
;
21 private String mapKeyTableName
;
23 public static MapTableCreator
NewMapTableInstance(List
<ISchemaUpdaterStep
> stepList
, String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String mapKeyTableName
, boolean includeAudTable
){
24 MapTableCreator result
= new MapTableCreator(stepList
, stepName
, firstTableName
, firstTableAlias
, secondTableName
, secondTableAlias
, mapKeyTableName
, includeAudTable
);
29 protected MapTableCreator(List
<ISchemaUpdaterStep
> stepList
, String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String mapKeyTableName
, boolean includeAudTable
) {
30 this(stepList
, stepName
, firstTableName
+ "_" + StringUtils
.capitalize(secondTableAlias
), firstTableName
, firstTableAlias
, secondTableName
, secondTableAlias
, mapKeyTableName
, includeAudTable
);
33 protected MapTableCreator(List
<ISchemaUpdaterStep
> stepList
, String stepName
, String MN_tableName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String mapKeyTableName
, boolean includeAudTable
) {
34 super(stepList
, stepName
, MN_tableName
, new ArrayList
<>(), new ArrayList
<>(), new ArrayList
<Object
>(), new ArrayList
<Boolean
>(), new ArrayList
<String
>(), includeAudTable
, false, false, false, false, false);
35 this.firstTableName
= firstTableName
;
36 this.secondTableName
= secondTableName
;
37 this.firstTableAlias
= (firstTableAlias
!= null )? firstTableAlias
: firstTableName
;
38 this.secondTableAlias
= (secondTableAlias
!= null)? secondTableAlias
: secondTableName
;
39 this.mapKeyTableName
= mapKeyTableName
;
44 protected void addMyColumns(){
45 ColumnAdder
.NewIntegerInstance(columnAdders
, stepName
, tableName
, getFirstIdColumn(), false, true, firstTableName
);
46 ColumnAdder
.NewIntegerInstance(columnAdders
, stepName
, tableName
, getSecondIdColumn(), false, true, secondTableName
);
47 ColumnAdder
.NewIntegerInstance(columnAdders
, stepName
, tableName
, getMapKeyColumn(), false, true, mapKeyTableName
);
51 protected String
primaryKey(boolean isAudit
){
54 result
= getFirstIdColumn() + ",";
55 result
+= getMapKeyColumn() + ",";
57 result
= "REV, " + primaryKey(false) + ",";
58 result
+= getSecondIdColumn() + ",";
60 result
= StringUtils
.chomp(result
.trim(), ",");
65 protected String
unique(boolean isAudit
){
67 return getSecondIdColumn();
73 private String
getFirstIdColumn(){
74 return this.firstTableAlias
+ "_id";
77 private String
getSecondIdColumn(){
78 String result
= this.secondTableAlias
.toLowerCase();
80 if (this.secondTableAlias
.equalsIgnoreCase(this.secondTableName
) ){
81 if (! result
.endsWith("s")){
89 private String
getMapKeyColumn(){
90 String result
= getSecondIdColumn();
91 result
= result
.replace("_id", "_mapkey_id");