Project

General

Profile

Download (2.91 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 secondTableAlias;
19
	private String secondTableName;
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
		super(stepName, firstTableName + "_" + secondTableName, new ArrayList<String>(), new ArrayList<String>(), new ArrayList<Object>(), new ArrayList<Boolean>(), new ArrayList<String>(), includeAudTable, false, false, false, false);
30
		this.firstTableName = firstTableName;
31
		this.secondTableName = secondTableName;
32
		this.firstTableAlias = (firstTableAlias != null )? firstTableAlias : firstTableName ;
33
		this.secondTableAlias = (secondTableAlias !=  null)? secondTableAlias : secondTableName ;
34
		this.mapKeyTableName = mapKeyTableName;
35
		addMyColumns();
36
	}
37

    
38
	
39
	protected void addMyColumns(){
40
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getFirstIdColumn(), false, true, firstTableName));
41
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getSecondIdColumn(), false, true, secondTableName));
42
		this.columnAdders.add(ColumnAdder.NewIntegerInstance(stepName, tableName, getMapKeyColumn(), false, true, mapKeyTableName));
43
	}
44

    
45
	protected String primaryKey(boolean isAudit){
46
		String result = "";
47
		if (! isAudit){
48
			result = getFirstIdColumn() + ",";
49
			result += getMapKeyColumn() + ",";
50
		}else{
51
			result = "REV, " + primaryKey(false) + ",";
52
			result += getSecondIdColumn() + ",";
53
		}
54
		result = StringUtils.chomp(result.trim(), ",");
55
		return result;
56
	}
57
	
58
	protected String unique(boolean isAudit){
59
		if (! isAudit){
60
			return getSecondIdColumn();
61
		}else{
62
			return null;
63
		}
64
	}
65
	
66
	private String getFirstIdColumn(){
67
		return this.firstTableAlias + "_id";
68
	}
69
	
70
	private String getSecondIdColumn(){
71
		String result = this.secondTableAlias.toLowerCase();
72
		
73
		if (this.secondTableAlias.equalsIgnoreCase(this.secondTableName) ){
74
			if (! result.endsWith("s")){
75
				result += "s";
76
			}
77
		}
78
		result += "_id";
79
		return result;
80
	}
81
	
82
	private String getMapKeyColumn(){
83
		String result = getSecondIdColumn();
84
		result = result.replace("_id", "_mapkey_id");
85
		return result;
86
	}
87
}
(16-16/34)