/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.server.preference.family;
import net.codjo.expression.FunctionHolder;
import net.codjo.expression.FunctionManager;
import net.codjo.sql.builder.QueryConfig;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Repr�sente le param�trage statique attach� � une famille.
*
* @version $Revision: 1.5 $
*/
public class XmlFamilyPreference {
private final String familyId;
private final String rootTable;
private String destinationTable;
private QueryConfig deleteConfig;
private QueryConfig selectConfig;
private QueryConfig resultConfig;
private TableMetaData tableMetaData;
private List<String> functionHolderClassList;
private List<FunctionHolder> functionHolderList;
private List<String> argumentNameList;
private RowFilter filter;
private List<TableFieldInfo> resultColumns;
private List<VarField> variables;
public XmlFamilyPreference(String familyId, String rootTable, String destinationTable) {
this.familyId = familyId;
this.rootTable = rootTable;
this.destinationTable = destinationTable;
}
public QueryConfig getSelectConfig() {
return selectConfig;
}
public void setSelectConfig(QueryConfig selectConfig) {
this.selectConfig = selectConfig;
}
public QueryConfig getDeleteConfig() {
return deleteConfig;
}
public void setDeleteConfig(QueryConfig deleteConfig) {
this.deleteConfig = deleteConfig;
}
public String getRootTable() {
return rootTable;
}
public String getDestinationTable() {
return destinationTable;
}
public TableMetaData getTableMetaData() {
return tableMetaData;
}
public void setTableMetaData(TableMetaData tableMetaData) {
this.tableMetaData = tableMetaData;
}
public String getResultTableName() {
return tableMetaData.getName();
}
public String[] getResultTableColumnNames() {
return tableMetaData.getColumnNames();
}
public int getResultTableColumnType(String columnName) {
return tableMetaData.getColumnType(columnName);
}
public final String getFamilyId() {
return familyId;
}
List<FunctionHolder> getFunctionHolderList() {
return functionHolderList;
}
final List<String> getFunctionHolderClassList() {
return functionHolderClassList;
}
public final void setFunctionHolderClassList(List<String> functionHolderClassList) {
this.functionHolderClassList = functionHolderClassList;
}
public List<String> getArgumentNameList() {
return argumentNameList;
}
public final void setArgumentNameList(List<String> argumentNameList) {
this.argumentNameList = argumentNameList;
}
public final RowFilter getFilter() {
if (!hasFilter()) {
throw new NullPointerException();
}
return filter;
}
public final void setFilter(RowFilter filter) {
this.filter = filter;
}
public final boolean hasFilter() {
return filter != null;
}
void compileConfiguration() throws BadConfigurationException {
if (functionHolderClassList == null) {
functionHolderList = Collections.emptyList();
return;
}
try {
functionHolderList = new ArrayList<FunctionHolder>(functionHolderClassList.size() + 1);
functionHolderList.add(new DefaultFunctionHolder());
for (String functionHolderClassName : getFunctionHolderClassList()) {
functionHolderList.add((FunctionHolder)Class.forName(functionHolderClassName).newInstance());
}
}
catch (Exception e) {
throw new BadConfigurationException(familyId, e);
}
}
public FunctionManager createFunctionManager() {
FunctionManager functionManager = new FunctionManager();
functionManager.addFunctionHolder(new DefaultFunctionHolder());
for (FunctionHolder functionHolder : functionHolderList) {
functionManager.addFunctionHolder(functionHolder);
}
return functionManager;
}
public void setResultConfig(QueryConfig config) {
resultConfig = config;
}
public QueryConfig getResultConfig() {
return resultConfig;
}
public void setResultColumns(List<TableFieldInfo> resultColumns) {
this.resultColumns = resultColumns;
}
public List<TableFieldInfo> getResultColumns() {
return resultColumns;
}
public List<VarField> getVariables() {
return variables;
}
public void setVariables(List<VarField> variables) {
this.variables = variables;
}
}