class GetTableNames extends BaseTransform<GetTableNamesMeta, GetTableNamesData> implements ITransform<GetTableNamesMeta, GetTableNamesData> {

  @VisibleForTesting
  void processIncludeView( Object[] outputRow ) {
    // Views
    if ( meta.isIncludeView() ) {
      try {
        String[] viewNames = data.db.getViews( data.realSchemaName, meta.isAddSchemaInOut() );
        String[] viewNamesWithoutSchema = data.db.getViews( data.realSchemaName, false );
        String ObjectType = BaseMessages.getString( PKG, "GetTableNamesDialog.ObjectType.View" );
        for ( int i = 0; i < viewNames.length && !isStopped(); i++ ) {
          Object[] outputRowView = outputRow.clone();
          int outputIndex = data.totalpreviousfields;

          String viewName = viewNames[ i ];
          String viewNameWithoutSchema = viewNamesWithoutSchema[ i ];
          outputRowView[ outputIndex++ ] = viewName;

          if ( !Utils.isEmpty( data.realObjectTypeFieldName ) ) {
            outputRowView[ outputIndex++ ] = ObjectType;
          }
          if ( !Utils.isEmpty( data.realIsSystemObjectFieldName ) ) {
            outputRowView[ outputIndex++ ] = Boolean.valueOf( data.db.isSystemTable( viewNameWithoutSchema ) );
          }

          if ( !Utils.isEmpty( data.realSqlCreationFieldName) ) {
            outputRowView[ outputIndex++ ] = null;
          }
          data.rownr++;
          putRow( data.outputRowMeta, outputRowView ); // copy row to output rowset(s);

          logInfo( outputRowView );
        }
      } catch ( Exception e ) {
        // Ignore
      }
    }
  }

  public  GetTableNames( TransformMeta transformMeta, GetTableNamesMeta meta, GetTableNamesData data, int copyNr, PipelineMeta pipelineMeta,
                        Pipeline pipeline );

}