IReport
インターフェースを実装する分析モジュールを作成する場合は、『IAnalyze を実装するアナライザーの作成』で概説した新規クラスの作成の手順に従います。
しかし、ここでは新規クラス・ウィザードに次の情報を入力します。
DWReport
com.ibm.dtfj.analyzer.base.AnalyzerBase
を追加します。com.ibm.dtfj.analyzer.ext.IReport
を追加します。 リスト 2 のコードは、IReport インターフェースを実装するクラスの例を示します。 この簡単な例では、ダンプが作成されたマシンのタイプを出力します。このクラスの唯一の機能はレポートの作成なので、クラスによって意思決定は行われません。 リスト 2 の内容を新たに作成した DWReport クラスに入力して、例に沿って進みます。
package mypackage; import com.ibm.dtfj.analyzer.base.AnalyzerBase; import com.ibm.dtfj.analyzer.base.AnalyzerContext; import com.ibm.dtfj.analyzer.ext.IAnalysisReport; import com.ibm.dtfj.analyzer.ext.IAnalyzerContext; import com.ibm.dtfj.analyzer.ext.IReport; import com.ibm.dtfj.image.DTFJException; import com.ibm.dtfj.image.Image; /** * This is the basic design required to implement an IReport Interface */ public class DWReport extends AnalyzerBase implements IReport { private static String description = "DWReport example"; public DWReport() {} /* * (non-Javadoc) * @see com.ibm.dtfj.analyzer.base.AnalyzerBase#getShortDescription() */ public String getShortDescription() { return description; } /* * (non-Javadoc) * @see com.ibm.dtfj.analyzer.ext.IReport#produceReport() */ public IAnalysisReport produceReport() { IAnalysisReport ret = allocateReport(); IAnalyzerContext ctx = getContext(); if (ctx instanceof AnalyzerContext) { try { Image p = ((AnalyzerContext)ctx).getCurrentImage(); ret.printLiteral("Image created on " + p.getSystemType()); } catch (DTFJException e) { e.printStackTrace(); } } return ret; } } |
この例から、2 つのメソッド、getShortDescription()
と produceReport
を実装する必要があることが分かります。
produceReport
メソッドの目的は、ダンプから有用な情報をいくつか抽出して、それをレポート形式で戻し、IAnalysisReport オブジェクトにカプセル化して後で使用できるようにすることです。レポート・オブジェクトはその後、表示のためにフォーマット設定されます。上記例では、ダンプが作成されたシステムのタイプを含む簡単なレポートが作成されます。