class SystemData extends BaseTransform<SystemDataMeta, SystemDataData> implements ITransform<SystemDataMeta, SystemDataData> {

  public boolean processRow() throws HopException {
    Object[] row;
    if ( data.readsRows ) {
      row = getRow();
      if ( row == null ) {
        setOutputDone();
        return false;
      }

      if ( first ) {
        first = false;
        data.outputRowMeta = getInputRowMeta().clone();
        meta.getFields( data.outputRowMeta, getTransformName(), null, null, this, metadataProvider );
      }

    } else {
      row = new Object[] {}; // empty row
      incrementLinesRead();

      if ( first ) {
        first = false;
        data.outputRowMeta = new RowMeta();
        meta.getFields( data.outputRowMeta, getTransformName(), null, null, this, metadataProvider );
      }
    }

    IRowMeta imeta = getInputRowMeta();
    if ( imeta == null ) {
      imeta = new RowMeta();
      this.setInputRowMeta( imeta );
    }

    row = getSystemData( imeta, row );

    if ( log.isRowLevel() ) {
      logRowlevel( "System info returned: " + data.outputRowMeta.getString( row ) );
    }

    putRow( data.outputRowMeta, row );

    if ( !data.readsRows ) {
      // Just one row and then stop!
      setOutputDone();
      return false;
    }

    return true;
  }

  public  SystemData( TransformMeta transformMeta, SystemDataMeta meta, SystemDataData data, int copyNr, PipelineMeta pipelineMeta,
                     Pipeline pipeline );

}