package com.ibm.nmon.data.transform.name;
import com.ibm.nmon.data.DataSet;
import com.ibm.nmon.data.NMONDataSet;
/**
* <p>
* Replaces the given string with the name of the LPAR, as pulled from an NMON DataSet.
* </p>
*
* <p>
* This class <em>does not</em> attempt to match the given string for validity. Callers are
* responsible for ensuring a given string should be aliased; if it is not,
* {@link #transform(String) transform()} should not be called.
* </p>
*/
public final class LPARNameTransformer implements NameTransformer {
private final NMONDataSet data;
public LPARNameTransformer(DataSet data) {
if ((data != null) && NMONDataSet.class.equals(data.getClass())) {
this.data = (NMONDataSet) data;
}
else {
this.data = null;
}
}
@Override
public String transform(String original) {
if (data == null) {
return original;
}
else {
NMONDataSet nmonData = (NMONDataSet) data;
if (nmonData.getMetadata("AIX") != null) {
String lparstat = nmonData.getSystemInfo("lparstat -i");
if (lparstat != null) {
int idx = lparstat.indexOf("Partition Name");
if (idx != -1) {
// some number of spaces before the colon
idx = lparstat.indexOf(": ", idx);
int end = lparstat.indexOf("\n", idx);
return lparstat.substring(idx + 2, end);
}
}
}
return original;
}
}
@Override
public String toString() {
return "LPAR name";
}
}