/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.jdbc.relational.impl.custom;
import java.util.List;
import java.util.Map;
import org.teiid.designer.jdbc.metadata.JdbcDatabase;
import org.teiid.designer.jdbc.relational.ModelerJdbcRelationalConstants.Processors;
import org.teiid.designer.jdbc.relational.impl.Context;
import org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl;
import org.teiid.designer.metamodels.core.ModelAnnotation;
import org.teiid.designer.metamodels.relational.RelationalFactory;
import org.teiid.designer.metamodels.relational.UniqueKey;
import org.teiid.designer.metamodels.relational.util.RelationalTypeMapping;
/**
* SqlServerModelProcessor
*
* @since 8.0
*/
public class Db2ModelProcessor extends RelationalModelProcessorImpl {
/**
* Construct an instance of SqlServerModelProcessor.
*
*/
public Db2ModelProcessor() {
super();
}
/**
* Construct an instance of SqlServerModelProcessor.
* @param factory
*/
public Db2ModelProcessor(RelationalFactory factory) {
super(factory);
}
/**
* Construct an instance of SqlServerModelProcessor.
* @param factory
* @param mapping
*/
public Db2ModelProcessor(RelationalFactory factory, RelationalTypeMapping mapping) {
super(factory, mapping);
}
/**
* @see org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl#updateModelAnnotation(org.teiid.designer.metamodels.core.ModelAnnotation)
*/
@Override
protected void updateModelAnnotation(final ModelAnnotation modelAnnotation) {
super.updateModelAnnotation(modelAnnotation);
modelAnnotation.setMaxSetSize(16000);
}
/**
* @see org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl#findUniqueKey(org.teiid.designer.jdbc.metadata.JdbcDatabase, java.util.Map, java.lang.String, java.lang.String, java.lang.String, java.util.List)
* @since 4.2
*/
@Override
protected UniqueKey findUniqueKey(JdbcDatabase dbNode,
Map nodesToModelObjects,
String catalogName,
String schemaName,
String tableName,
List columnNames,
Context context,
List<String> problems) {
// Per defect 13227, the getImportedKeys and getExportedKeys returns a non-null value in the
// 'catalog' column, even though DatabaseMetaData returns 'false' for supportsCatalogs.
// Therefore, as a workaround, ignore the catalog name when supportsCatalogs is false ...
return super.findUniqueKey(dbNode, nodesToModelObjects, catalogName, schemaName, tableName, columnNames, context, problems);
}
/**
* DB2 doesn't need to do both imported and exported FKs. This is an optimization.
* @see org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl#checkExportedForeignKeysIfNoImportedForeignKeysFound()
* @since 4.2
*/
@Override
protected boolean checkExportedForeignKeysIfNoImportedForeignKeysFound() {
return false;
}
@Override
public String getType() {
return Processors.DB2;
}
}