EGL には、プログラムによって参照されるパーツのログを作成するために使用できる 4 つの Java™ クラスが 組み込まれています。
Eclipse IDE 内のパーツ参照統計を生成するには、PartInfoFactory クラスを使用します。IDE 外のログを生成するには、GenerationServer クラスを EGLSDK クラスとともに使用します。
com.ibm.etools.egl.ui.parts.PartInfoFactory
PartInfoFactory クラスには、以下のメソッドが含まれています。
public static IPartInfo[] getReferencePartList(IFile eglFile)
throws Exception
public static IPartInfo[] getReferencePartList(IFile eglFile,
boolean removeUnusedMembers)
throws Exception
public static IPartInfo[] getReferenceElementsList(IFile eglFile)
throws Exception
public static IPartInfo[] getReferenceElementsList(IFile eglFile,
boolean removeUnusedMembers)
throws Exception
IPartInfo[] parts = PartInfoFactory.getReferencePartList(genPart);
com.ibm.etools.egl.GenerationServer
GenerationServer クラスには、以下のメソッドが含まれています。
public static void addListener(IGenerationListener listener)
public static void removeListener(IGenerationListener listener)
public static void enableGeneration (boolean flag)
enableGeneration を使用すると、パーツの生成を行うかどうかを指示するブール値の true または false フラグを設定することができます。 デフォルトは true です。EGLSDK を呼び出す前に値を false に設定した場合は、これ以降に生成を行うことなく、EGL ソースに関連するパーツの構文解析および作成を行うことができます。
public static IPartInfo[] getAllUniqueReferencedParts(
IPartInfo[] parts)
public static IElementInfo[] getAllUniqueReferecedElements(
IElementInfo[] elements)
GenerationServer.addListener(listener);
com.ibm.etools.egl.util.EGLSDK eglsdk = new com.ibm.etools.egl.util.EGLSDK();
GenerationServer.removeListener(listener);
IGenerationListener インターフェースには、以下のメソッドが含まれています。
IPartInfo インターフェースには、以下のメソッドが含まれています。
一般に、アクションにおいてすべてのパーツを処理するロジックの前後で、新しい Set および ArrayList が取得され、解放されます。 例えば、次のようになります。
public void run(IAction action) {
resources = new HashSet();
partList = new ArrayList();
Iterator selectionIterator = this.selection.iterator();
while (selectionIterator.hasNext()) {
Object object = selectionIterator.next();
if ((object instanceof IEGLFile)) {
IEGLFile iEglFile = (IEGLFile) object;
try {
IFile eglFile = ResourcesPlugin.getWorkspace().getRoot().getFile(iEglFile.getUnderlyingResource().getFullPath());
IPartInfo[] associatedParts = PartInfoFactory.getReferencePartList(eglFile);
generateEglSourceFile(associatedParts, eglFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
resources = null;
partList = null;
}
private static void generateEsf(IPartInfo[] associatedParts, IFile eglFile) {
....
associatedParts = GenerationServer.getAllUniqueReferecedParts(associatedParts);
try {
BufferedWriter out = new BufferedWriter(new FileWriter(outFile, false));
for (int i = 0; i < associatedParts.length; i++) {
out.write(associatedParts[i].getSource(resources, partList));
out.write("¥n");
}
out.close();
}
catch (Exception e) {
e.printStackTrace();
}
}