Project

General

Profile

Download (3.47 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.cdm.database.update;
5

    
6
import java.util.ArrayList;
7
import java.util.List;
8

    
9
import org.apache.commons.lang.StringUtils;
10

    
11
/**
12
 * @author a.mueller
13
 *
14
 */
15
public class MapTableCreator extends TableCreator {
16

    
17
    private String firstTableName;
18
	private String firstTableAlias;
19
	private String secondTableName;
20
	private String secondTableAlias;
21
	private String mapKeyTableName;
22

    
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);
25
		return result;
26
	}
27

    
28

    
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);
31
	}
32

    
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;
40
	      addMyColumns();
41
	}
42

    
43

    
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);
48
	}
49

    
50
	@Override
51
	protected String primaryKey(boolean isAudit){
52
		String result = "";
53
		if (! isAudit){
54
			result = getFirstIdColumn() + ",";
55
			result += getMapKeyColumn() + ",";
56
		}else{
57
			result = "REV, " + primaryKey(false) + ",";
58
			result += getSecondIdColumn() + ",";
59
		}
60
		result = StringUtils.chomp(result.trim(), ",");
61
		return result;
62
	}
63

    
64
	@Override
65
    protected String unique(boolean isAudit){
66
		if (! isAudit){
67
			return getSecondIdColumn();
68
		}else{
69
			return null;
70
		}
71
	}
72

    
73
	private String getFirstIdColumn(){
74
		return this.firstTableAlias + "_id";
75
	}
76

    
77
	private String getSecondIdColumn(){
78
		String result = this.secondTableAlias.toLowerCase();
79

    
80
		if (this.secondTableAlias.equalsIgnoreCase(this.secondTableName) ){
81
			if (! result.endsWith("s")){
82
				result += "s";
83
			}
84
		}
85
		result += "_id";
86
		return result;
87
	}
88

    
89
	private String getMapKeyColumn(){
90
		String result = getSecondIdColumn();
91
		result = result.replace("_id", "_mapkey_id");
92
		return result;
93
	}
94
}
(21-21/41)