Project

General

Profile

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

    
6
import java.util.ArrayList;
7

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

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

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

    
22
	public static MapTableCreator NewMapTableInstance(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String mapKeyTableName, boolean includeAudTable){
23
		MapTableCreator result = new MapTableCreator(stepName, firstTableName, firstTableAlias, secondTableName, secondTableAlias, mapKeyTableName, includeAudTable);
24
		return result;
25
	}
26

    
27

    
28
	protected MapTableCreator(String stepName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String mapKeyTableName, boolean includeAudTable) {
29
		this(stepName,  firstTableName + "_" + StringUtils.capitalise(secondTableAlias), firstTableName, firstTableAlias, secondTableName, secondTableAlias, mapKeyTableName, includeAudTable);
30
	}
31

    
32
	   protected MapTableCreator(String stepName, String MN_tableName, String firstTableName, String firstTableAlias, String secondTableName, String secondTableAlias, String mapKeyTableName, boolean includeAudTable) {
33
	        super(stepName, MN_tableName, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<Object>(), new ArrayList<Boolean>(), new ArrayList<String>(), includeAudTable, false, false, false, false);
34
	        this.firstTableName = firstTableName;
35
	        this.secondTableName = secondTableName;
36
	        this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;
37
	        this.secondTableAlias = (secondTableAlias !=  null)? secondTableAlias : secondTableName ;
38
	        this.mapKeyTableName = mapKeyTableName;
39
	        addMyColumns();
40
	    }
41

    
42

    
43
	protected void addMyColumns(){
44
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, firstTableName));
45
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, secondTableName));
46
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getMapKeyColumn(), false, true, mapKeyTableName));
47
	}
48

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

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

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

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

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

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