package com.ibm.nmon.data.transform; import com.ibm.nmon.data.DataType; /** * Adds <code>used</code> columns to AIX MEM statistics in addition to the default <code>free</code> * data. */ public final class AIXMemoryTransform implements DataTransform { @Override public DataType buildDataType(String id, String subId, String name, String... fields) { String[] newFields = new String[fields.length + 4]; // Real Free % and Virtual free % newFields[0] = fields[0]; newFields[1] = fields[1]; newFields[2] = "Real used %"; newFields[3] = "Virtual used %"; // Real free(MB) and Virtual free(MB) newFields[4] = fields[2]; newFields[5] = fields[3]; newFields[6] = "Real used(MB)"; newFields[7] = "Virtual used(MB)"; for (int i = 4; i < fields.length; i++) { newFields[i + 4] = fields[i]; } return new DataType(id, name, newFields); } @Override public double[] transform(DataType type, double[] data) { double[] newData = new double[data.length + 4]; newData[0] = data[0]; newData[1] = data[1]; // free % = 100 - used newData[2] = 100 - data[0]; newData[3] = 100 - data[1]; newData[4] = data[2]; newData[5] = data[3]; // free = total - used newData[6] = data[4] - data[2]; newData[7] = data[5] - data[3]; for (int i = 4; i < data.length; i++) { newData[i + 4] = data[i]; } return newData; } @Override public boolean isValidFor(String typeId, String subId) { return "MEM".equals(typeId); } }