package com.skp.experiment.common.join;
import java.util.List;
import com.skp.experiment.common.OptionParseUtil;
public class JoinOption {
public static final String DELIMETER = ":";
public static final String INNER_DELIMETER = ",";
private String table;
private List<Integer> sourceTableKeyIndexs;
private List<Integer> targetTableKeyIndexs;
private List<Integer> targetTableValueIndexs;
private String type;
private int optionColumnSize = 5;
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public List<Integer> getSourceTableKeyIndexs() {
return sourceTableKeyIndexs;
}
public void setSourceTableKeyIndexs(List<Integer> sourceTableKeyIndexs) {
this.sourceTableKeyIndexs = sourceTableKeyIndexs;
}
public List<Integer> getTargetTableKeyIndexs() {
return targetTableKeyIndexs;
}
public void setTargetTableKeyIndexs(List<Integer> targetTableKeyIndexs) {
this.targetTableKeyIndexs = targetTableKeyIndexs;
}
public List<Integer> getTargetTableValueIndexs() {
return targetTableValueIndexs;
}
public void setTargetTableValueIndexs(List<Integer> targetTableValueIndexs) {
this.targetTableValueIndexs = targetTableValueIndexs;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean parseOption(String optionStr) {
String[] tokens = optionStr.split(DELIMETER);
if (tokens.length != optionColumnSize) return false;
this.table = tokens[0];
this.sourceTableKeyIndexs = OptionParseUtil.decode(tokens[1], INNER_DELIMETER);
this.targetTableKeyIndexs = OptionParseUtil.decode(tokens[2], INNER_DELIMETER);
this.targetTableValueIndexs = OptionParseUtil.decode(tokens[3], INNER_DELIMETER);
this.type = tokens[4];
return true;
}
private String buildInnerElement(List<Integer> indexs) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < indexs.size(); i++) {
sb.append(indexs.get(i));
if (i < indexs.size() - 1) {
sb.append(INNER_DELIMETER);
}
}
return sb.toString();
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(table).append(DELIMETER);
sb.append(buildInnerElement(sourceTableKeyIndexs)).append(DELIMETER);
sb.append(buildInnerElement(targetTableKeyIndexs)).append(DELIMETER);
sb.append(buildInnerElement(targetTableValueIndexs)).append(DELIMETER);
sb.append(this.type);
return sb.toString();
}
}