in empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java [249:338]
public void getDDLScript(DDLActionType type, DBObject dbo, DBSQLScript script)
{
// The Object's database must be attached to this dbms
if (dbo==null || dbo.getDatabase().getDbms()!=dbms)
throw new InvalidArgumentException("dbo", dbo);
// Check Type of object
String schema = dbo.getDatabase().getSchema();
if (dbo instanceof DBDatabase)
{ // Database
switch (type)
{
case CREATE:
createDatabase((DBDatabase) dbo, script);
return;
case DROP:
dropObject(null, schema, databaseObjectName, script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
}
}
else if (dbo instanceof DBTable)
{ // Table
switch (type)
{
case CREATE:
createTable((DBTable) dbo, script);
return;
case DROP:
dropObject(schema, ((DBTable) dbo).getName(), "TABLE", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
}
}
else if (dbo instanceof DBView)
{ // View
switch (type)
{
case CREATE:
createView((DBView) dbo, script);
return;
case DROP:
dropObject(schema, ((DBView) dbo).getName(), "VIEW", script);
return;
case ALTER:
dropObject(schema, ((DBView) dbo).getName(), "VIEW", script);
createView((DBView) dbo, script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
}
}
else if (dbo instanceof DBRelation)
{ // Relation
switch (type)
{
case CREATE:
createRelation((DBRelation) dbo, script);
return;
case DROP:
dropObject(schema, ((DBRelation) dbo).getName(), "CONSTRAINT", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
}
}
else if (dbo instanceof DBIndex)
{ // Relation
switch (type)
{
case CREATE:
createIndex(((DBIndex) dbo).getTable(), (DBIndex) dbo, script);
return;
case DROP:
dropObject(schema, ((DBIndex) dbo).getName(), "INDEX", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
}
}
else if (dbo instanceof DBTableColumn)
{ // Table Column
alterTable((DBTableColumn) dbo, type, script);
}
else
{ // dll generation not supported for this type
throw new NotSupportedException(this, "getDDLScript() for "+dbo.getClass().getName());
}
}