private void addTaps( SchemaDef parentSchemaDef, TapSchema parentTapSchema, Map<String, Tap> taps, Function<Tap, Fields> function )
{
for( String name : taps.keySet() )
{
TapSchema currentTapSchema = parentTapSchema;
SchemaDef currentSchemaDef = parentSchemaDef;
Tap tap = taps.get( name );
String[] split = name.split( "\\." );
for( int i = 0; i < split.length - 1; i++ )
{
currentTapSchema = createGetTapSchema( currentTapSchema, split[ i ] );
currentSchemaDef = createGetSchemaDef( currentSchemaDef, split[ i ] );
}
name = split[ split.length - 1 ];
Stereotype stereotype = new Stereotype( name, function.apply( tap ) );
TableDef tableDef = new TableDef( currentSchemaDef, name, tap.getIdentifier(), stereotype );
currentSchemaDef.addStereotype( stereotype );
currentTapSchema.addTapTableFor( tableDef, getDefaultSchema() == null );
}
}