4 package eu
.etaxonomy
.cdm
.database
.update
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Arrays
;
10 import org
.apache
.commons
.lang
.StringUtils
;
16 public class MnTableCreator
extends TableCreator
{
18 private String firstTableName
;
19 private String firstTableAlias
;
20 private String secondTableName
;
21 private String secondTableAlias
;
22 private boolean hasSortIndex
;
23 private boolean secondTableInKey
;
25 public static MnTableCreator
NewMnInstance(String stepName
, String firstTableName
, String secondTableName
, boolean includeAudTable
){
26 MnTableCreator result
= new MnTableCreator(stepName
, firstTableName
, null, secondTableName
, null, new String
[]{}, new String
[]{}, null, null, includeAudTable
, false, true, false, false);
30 public static MnTableCreator
NewMnInstance(String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, boolean includeAudTable
, boolean hasSortIndex
, boolean secondTableInKey
){
31 MnTableCreator result
= new MnTableCreator(stepName
, firstTableName
, firstTableAlias
, secondTableName
, secondTableAlias
, new String
[]{}, new String
[]{}, null, null, includeAudTable
, hasSortIndex
, secondTableInKey
, false, false);
36 protected MnTableCreator(String stepName
, String firstTableName
, String firstTableAlias
, String secondTableName
, String secondTableAlias
, String
[] columnNames
, String
[] columnTypes
,
37 List
<Object
> defaultValues
, List
<Boolean
> isNull
, boolean includeAudTable
, boolean hasSortIndex
, boolean secondTableInKey
, boolean includeCdmBaseAttributes
, boolean includeIdentifiableEntity
) {
38 super(stepName
, firstTableName
+ "_" + secondTableName
, Arrays
.asList(columnNames
), Arrays
.asList(columnTypes
), defaultValues
, isNull
, new ArrayList
<String
>(), includeAudTable
, includeCdmBaseAttributes
, includeIdentifiableEntity
);
39 this.firstTableName
= firstTableName
;
40 this.secondTableName
= secondTableName
;
41 this.firstTableAlias
= (firstTableAlias
!= null )? firstTableAlias
: firstTableName
;
42 this.secondTableAlias
= (secondTableAlias
!= null)? secondTableAlias
: secondTableName
;
43 this.hasSortIndex
= hasSortIndex
;
44 this.secondTableInKey
= secondTableInKey
;
49 protected void addMyColumns(){
50 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, getFirstIdColumn(), false, true, this.firstTableName
));
51 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, getSecondIdColumn(), false, true, this.secondTableName
));
52 if (this.hasSortIndex
){
53 this.columnAdders
.add(ColumnAdder
.NewIntegerInstance(stepName
, tableName
, "sortIndex", false, true, null));
58 protected String
primaryKey(boolean isAudit
){
61 result
= getFirstIdColumn() + ",";
62 result
+= secondTableInKey ?
getSecondIdColumn() + "," : "";
63 result
+= hasSortIndex ?
"sortIndex," : "";
65 result
= "REV, " + primaryKey(false);
66 result
+= (!secondTableInKey
) ?
","+getSecondIdColumn() + "," : "";
68 result
= StringUtils
.chomp(result
.trim(), ",");
72 protected String
unique(boolean isAudit
){
74 return getSecondIdColumn();
80 private String
getFirstIdColumn(){
81 return this.firstTableAlias
+ "_id";
84 private String
getSecondIdColumn(){
85 String result
= this.secondTableAlias
.toLowerCase();
87 if (this.secondTableAlias
.equalsIgnoreCase(this.secondTableName
) ){
88 if (! result
.endsWith("s")){