// Path: src/main/java/net/ucanaccess/jdbc/UcanaccessSQLException.java
// public class UcanaccessSQLException extends SQLException {
// 	public enum ExceptionMessages{
// 		CONCURRENT_PROCESS_ACCESS,
// 		INVALID_CREATE_STATEMENT,
// 		INVALID_INTERVAL_VALUE,
// 		INVALID_JACKCESS_OPENER,
// 		INVALID_MONTH_NUMBER, 
// 		NOT_A_VALID_PASSWORD, 
// 		ONLY_IN_MEMORY_ALLOWED, 
// 		UNPARSABLE_DATE,
// 		COMPLEX_TYPE_UNSUPPORTED, 
// 		INVALID_PARAMETER,
// 		INVALID_TYPES_IN_COMBINATION,
// 		UNSUPPORTED_TYPE
// 	}
// 	private static final long serialVersionUID = -1432048647665807662L;
// 	private Throwable cause;
// 	public UcanaccessSQLException() {
// 	}
// 	
// 	public UcanaccessSQLException(ExceptionMessages reason) {
// 		super(Logger.getMessage(reason.name()));
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String SQLState) {
// 		super(Logger.getMessage(reason), SQLState);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String SQLState, int vendorCode) {
// 		super(Logger.getMessage(reason), SQLState, vendorCode);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String sqlState,
// 			int vendorCode, Throwable cause) {
// 		super(Logger.getMessage(reason), sqlState, vendorCode, cause);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String sqlState, Throwable cause) {
// 		super(Logger.getMessage(reason), sqlState, cause);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, Throwable cause) {
// 		super(Logger.getMessage(reason), cause);
// 	}
// 	
// 	public UcanaccessSQLException(Throwable cause) {
// 		super( explaneCause(cause));
// 		this.cause=cause;
// 	}
// 	
// 	public static String explaneCause(Throwable cause){
// 		if(cause instanceof SQLException){
// 			SQLException se=(SQLException)cause;
// 			if(se.getErrorCode()==-5562){
// 				return cause.getMessage()+" "+Logger.getMessage(ExceptionMessages.INVALID_TYPES_IN_COMBINATION.name());
// 			}
// 		}
// 		return cause.getMessage();
// 	}
// 
// 	public Throwable getCause() {
// 		return this.cause;
// 	}
// }
// 
// Path: src/main/java/net/ucanaccess/jdbc/UcanaccessSQLException.java
// public enum ExceptionMessages{
// 	CONCURRENT_PROCESS_ACCESS,
// 	INVALID_CREATE_STATEMENT,
// 	INVALID_INTERVAL_VALUE,
// 	INVALID_JACKCESS_OPENER,
// 	INVALID_MONTH_NUMBER, 
// 	NOT_A_VALID_PASSWORD, 
// 	ONLY_IN_MEMORY_ALLOWED, 
// 	UNPARSABLE_DATE,
// 	COMPLEX_TYPE_UNSUPPORTED, 
// 	INVALID_PARAMETER,
// 	INVALID_TYPES_IN_COMBINATION,
// 	UNSUPPORTED_TYPE
// }


import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey;
import com.healthmarketscience.jackcess.impl.complex.ComplexColumnInfoImpl;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import net.ucanaccess.jdbc.UcanaccessSQLException;
import net.ucanaccess.jdbc.UcanaccessSQLException.ExceptionMessages;
import com.healthmarketscience.jackcess.complex.ComplexDataType;
import com.healthmarketscience.jackcess.complex.ComplexValue;

	
	public ComplexBase(ComplexValue.Id id, String tableName, String columnName) {
		super();
		this.id = id.get();
		this.tableName = tableName;
		this.columnName = columnName;
	}
	public ComplexBase(ComplexValue cv) {
		this(cv.getId(),
				cv.getComplexValueForeignKey().getColumn().getTable().getName(),
				cv.getComplexValueForeignKey().getColumn().getName()
				);
	}
	

	public String getTableName() {
		return tableName;
	}
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}
	public String getColumnName() {
		return columnName;
	}
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	@Override
	public int hashCode() {
		final int prime = 31;

// Path: src/main/java/net/ucanaccess/jdbc/UcanaccessSQLException.java
// public class UcanaccessSQLException extends SQLException {
// 	public enum ExceptionMessages{
// 		CONCURRENT_PROCESS_ACCESS,
// 		INVALID_CREATE_STATEMENT,
// 		INVALID_INTERVAL_VALUE,
// 		INVALID_JACKCESS_OPENER,
// 		INVALID_MONTH_NUMBER, 
// 		NOT_A_VALID_PASSWORD, 
// 		ONLY_IN_MEMORY_ALLOWED, 
// 		UNPARSABLE_DATE,
// 		COMPLEX_TYPE_UNSUPPORTED, 
// 		INVALID_PARAMETER,
// 		INVALID_TYPES_IN_COMBINATION,
// 		UNSUPPORTED_TYPE
// 	}
// 	private static final long serialVersionUID = -1432048647665807662L;
// 	private Throwable cause;
// 	public UcanaccessSQLException() {
// 	}
// 	
// 	public UcanaccessSQLException(ExceptionMessages reason) {
// 		super(Logger.getMessage(reason.name()));
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String SQLState) {
// 		super(Logger.getMessage(reason), SQLState);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String SQLState, int vendorCode) {
// 		super(Logger.getMessage(reason), SQLState, vendorCode);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String sqlState,
// 			int vendorCode, Throwable cause) {
// 		super(Logger.getMessage(reason), sqlState, vendorCode, cause);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, String sqlState, Throwable cause) {
// 		super(Logger.getMessage(reason), sqlState, cause);
// 	}
// 	
// 	public UcanaccessSQLException(String reason, Throwable cause) {
// 		super(Logger.getMessage(reason), cause);
// 	}
// 	
// 	public UcanaccessSQLException(Throwable cause) {
// 		super( explaneCause(cause));
// 		this.cause=cause;
// 	}
// 	
// 	public static String explaneCause(Throwable cause){
// 		if(cause instanceof SQLException){
// 			SQLException se=(SQLException)cause;
// 			if(se.getErrorCode()==-5562){
// 				return cause.getMessage()+" "+Logger.getMessage(ExceptionMessages.INVALID_TYPES_IN_COMBINATION.name());
// 			}
// 		}
// 		return cause.getMessage();
// 	}
// 
// 	public Throwable getCause() {
// 		return this.cause;
// 	}
// }
// 
// Path: src/main/java/net/ucanaccess/jdbc/UcanaccessSQLException.java
// public enum ExceptionMessages{
// 	CONCURRENT_PROCESS_ACCESS,
// 	INVALID_CREATE_STATEMENT,
// 	INVALID_INTERVAL_VALUE,
// 	INVALID_JACKCESS_OPENER,
// 	INVALID_MONTH_NUMBER, 
// 	NOT_A_VALID_PASSWORD, 
// 	ONLY_IN_MEMORY_ALLOWED, 
// 	UNPARSABLE_DATE,
// 	COMPLEX_TYPE_UNSUPPORTED, 
// 	INVALID_PARAMETER,
// 	INVALID_TYPES_IN_COMBINATION,
// 	UNSUPPORTED_TYPE
// }


// Path: src/main/java/net/ucanaccess/complex/ComplexBase.java
import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey;
import com.healthmarketscience.jackcess.impl.complex.ComplexColumnInfoImpl;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import net.ucanaccess.jdbc.UcanaccessSQLException;
import net.ucanaccess.jdbc.UcanaccessSQLException.ExceptionMessages;
import com.healthmarketscience.jackcess.complex.ComplexDataType;
import com.healthmarketscience.jackcess.complex.ComplexValue;

	
	public ComplexBase(ComplexValue.Id id, String tableName, String columnName) {
		super();
		this.id = id.get();
		this.tableName = tableName;
		this.columnName = columnName;
	}
	public ComplexBase(ComplexValue cv) {
		this(cv.getId(),
				cv.getComplexValueForeignKey().getColumn().getTable().getName(),
				cv.getComplexValueForeignKey().getColumn().getName()
				);
	}
	

	public String getTableName() {
		return tableName;
	}
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}
	public String getColumnName() {
		return columnName;
	}
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	@Override
	public int hashCode() {
		final int prime = 31;

		int result = 1;
