package com.ibm.nmon.data.definition;
import java.util.Collection;
import java.util.List;
import com.ibm.nmon.analysis.Statistic;
import com.ibm.nmon.data.DataSet;
import com.ibm.nmon.data.DataType;
/**
* A {@link DataDefinition} that matches a pre-defined set of data. This class matches on a single
* {@link DataSet}, a single {@link DataType} and a set of fields.
*/
public final class ExactDataDefinition extends DataDefinition {
private final List<DataSet> dataSets;
private final List<DataType> types;
private final List<String> fields;
public ExactDataDefinition(DataSet data, DataType type, List<String> fields, Statistic stat,
boolean useSecondaryYAxis) {
super(stat, useSecondaryYAxis);
this.dataSets = java.util.Collections.singletonList(data);
this.types = java.util.Collections.singletonList(type);
this.fields = fields;
}
public ExactDataDefinition(DataSet data, DataType type, List<String> fields) {
super();
this.dataSets = java.util.Collections.singletonList(data);
this.types = java.util.Collections.singletonList(type);
this.fields = fields;
}
public DataSet getDataSet() {
return dataSets.get(0);
}
public DataType getDataType() {
return types.get(0);
}
@Override
public boolean matchesHost(DataSet data) {
return data.equals(this.dataSets.get(0));
}
@Override
public List<DataSet> getMatchingHosts(Collection<DataSet> toMatch) {
return dataSets;
}
@Override
public List<DataType> getMatchingTypes(DataSet data) {
return types;
}
@Override
public List<String> getMatchingFields(DataType type) {
return fields;
}
public String toString() {
StringBuilder builder = new StringBuilder(128);
builder.append('{');
builder.append("data: ");
builder.append(dataSets);
builder.append("; ");
builder.append("types: ");
builder.append(types);
builder.append("; ");
builder.append("fields: ");
builder.append(fields);
builder.append('}');
return builder.toString();
}
}