/*
* 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.eclipse.core.runtime.IProgressMonitor;
import org.teiid.designer.jdbc.JdbcException;
import org.teiid.designer.jdbc.metadata.JdbcNode;
import org.teiid.designer.jdbc.metadata.JdbcTable;
import org.teiid.designer.jdbc.relational.ModelerJdbcRelationalConstants.Processors;
import org.teiid.designer.jdbc.relational.impl.Context;
import org.teiid.designer.jdbc.relational.impl.JdbcModelStructure;
import org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl;
import org.teiid.designer.metamodels.relational.Column;
import org.teiid.designer.metamodels.relational.RelationalEntity;
import org.teiid.designer.metamodels.relational.Table;
/**
* The <code>ModeShapeModelProcessor</code> performs special processing when performing an import using the ModeShape JDBC driver.
*
* @since 8.0
*/
public class ModeShapeModelProcessor extends RelationalModelProcessorImpl {
/**
* Constructs a <code>ModeShapeModelProcessor</code> to be used by the JDBC importer.
*/
public ModeShapeModelProcessor() {
super();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl#createNewObject(org.teiid.designer.jdbc.metadata.JdbcNode,
* org.teiid.designer.metamodels.relational.RelationalEntity, org.teiid.designer.jdbc.relational.impl.JdbcModelStructure,
* java.util.Map, org.teiid.designer.jdbc.relational.impl.Context, int, int, int,
* org.eclipse.core.runtime.IProgressMonitor, java.util.List, java.util.List)
*/
@Override
protected RelationalEntity createNewObject( JdbcNode node,
RelationalEntity parent,
JdbcModelStructure modelStructure,
Map nodesToModelObjects,
Context context,
int totalNum,
int unitsPerModelObject,
int index,
IProgressMonitor monitor,
List problems,
List newTableObjects ) throws JdbcException {
RelationalEntity entity = super.createNewObject(node,
parent,
modelStructure,
nodesToModelObjects,
context,
totalNum,
unitsPerModelObject,
index,
monitor,
problems,
newTableObjects);
// make sure tables are not updateable
if (entity instanceof Table) {
Table table = (Table)entity;
table.setSupportsUpdate(false);
}
return entity;
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.jdbc.relational.impl.RelationalModelProcessorImpl#setColumnInfo(org.teiid.designer.metamodels.relational.Column,
* org.teiid.designer.jdbc.metadata.JdbcTable, org.teiid.designer.jdbc.relational.impl.Context, java.util.List,
* java.lang.String, int, java.lang.String, int, int, int, int, java.lang.String, int)
*/
@Override
protected void setColumnInfo( Column column,
JdbcTable tableNode,
Context context,
List problems,
String name,
int type,
String typeName,
int columnSize,
int numDecDigits,
int numPrecRadix,
int nullable,
String defaultValue,
int charOctetLen ) {
super.setColumnInfo(column,
tableNode,
context,
problems,
name,
type,
typeName,
columnSize,
numDecDigits,
numPrecRadix,
nullable,
defaultValue,
charOctetLen);
// set all columns to not be updateable
column.setUpdateable(false);
// make sure mode:properties is not selectable
if ("mode:properties".equals(name)) { //$NON-NLS-1$
column.setSelectable(false);
}
}
@Override
public String getType() {
return Processors.MODESHAPE;
}
}