package com.ibm.nmon.data.transform;
import com.ibm.nmon.data.DataType;
/**
* An interface defining methods for a parser to modify data from the file as it is being parsed. A
* given DataTransform may add, remove, or change fields.
*/
public interface DataTransform {
/**
* Create a DataType based on transformed data. The given fields may be added, removed or
* renamed.
*
* @param id the DataType id
* @param subIdthe SubDataType id
* @param name the name of the DataType
* @param fields the original fields from the parsed file
*
* @return a new, transformed DataType
*/
public DataType buildDataType(String id, String subId, String name, String... fields);
/**
* Transform the given data according to the DataType. This DataType will be the same as created
* by a previous call to <code>buildDataType</code>.
*
* @param type the DataType to transform
* @param data the orginal data from the parsed file
*
* @return the transformed data array, which may be a different size than the original
*/
public double[] transform(DataType type, double[] data);
/**
* Can this DataTransform manipulate data for the given DataType id? Transforms can be valid for
* multiple DataTypes.
*
* @param typeId
*
* @return true if the parser should apply this transform for the given DataType
*/
public boolean isValidFor(String typeId, String subId);
}