Statistik für Abschnittsverweise generieren
EGL beinhaltet vier Java™-Klassen, die Sie zum Erstellen eines Protokolls von Abschnitten verwenden können, auf die von einem Programm verwiesen wird.
Verwenden Sie die Klasse 'PartInfoFactory' zum Generieren von Statistikdaten zu Abschnittsverweisen innerhalb der Eclipse-IDE; verwenden Sie die Klasse 'GenerationServer' zusammen mit der Klasse EGLSDK, um ein Protokoll außerhalb der integrierten Entwicklungsumgebung (IDE) zu generieren.
PartInfoFactory
com.ibm.etools.egl.ui.parts.PartInfoFactory
Zur Klasse 'PartInfoFactory' gehören folgende Methoden:
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
- Die Feldgruppe, die von getReferencePartList() zurückgegeben wird und die den ersten Hauptabschnitt in eglFile und die zugehörigen Abschnitte enthält, auf die verwiesen wird.
- eglFile
- Die Datei, die den Abschnitt enthält, für den Sie die Verweisstatistik generieren.
- removeUnusedMembers
- Gibt an, ob nicht verwendete Abschnitte aus der Liste der zurückgegebenen Abschnitte entfernt werden sollen.
IPartInfo[] parts = PartInfoFactory.getReferencePartList(genPart);
GenerationServer
com.ibm.etools.egl.GenerationServer
Zur Klasse 'GenerationServer' gehören folgende Methoden:
public static void addListener(IGenerationListener listener)
public static void removeListener(IGenerationListener listener)
public static void enableGeneration (boolean flag)
'enableGeneration' ermöglicht das Festlegen eines booleschen Flags mit 'true' (wahr) oder 'false' (falsch), um anzugeben, ob die Generierung des Abschnitts erfolgen soll. Der Standardwert ist 'true'. Wenn Sie vor dem Aufrufen von EGLSDK den Wert auf 'false' setzen, können Sie eine Liste der zu einer EGL-Quelle gehörigen Abschnitte analysieren und erstellen, ohne dass nachfolgend eine Generierung erfolgt.
- listener
- Eine Instanz der Schnittstelle 'IGenerationListener'. Lesen Sie in diesem Thema den Abschnitt zur Schnittstelle 'IGenerationListener'.
public static IPartInfo[] getAllUniqueReferencedParts(
IPartInfo[] parts)
public static IElementInfo[] getAllUniqueReferecedElements(
IElementInfo[] elements)
- parts
- Eine Feldgruppe von Abschnitten, die zum Erstellen einer Feldgruppe aller Abschnitte verwendet wird, auf die verwiesen wird. Alle Abschnitte in der Feldgruppe sind eindeutig.
- elements
- Eine Feldgruppe von Elementen, die zum Erstellen einer Feldgruppe aller referenzierten Abschnitte, verschachtelten Funktionen, referenzierten Programme und weiterer Elemente verwendet wird. Alle Elemente in der Feldgruppe sind eindeutig.
GenerationServer.addListener(listener);
com.ibm.etools.egl.util.EGLSDK eglsdk = new com.ibm.etools.egl.util.EGLSDK();
GenerationServer.removeListener(listener);
Schnittstelle 'IGenerationListener'
Zur Schnittstelle 'IGenerationListener' gehören folgende Methoden:
- begin()
- Wird zu Beginn der Generierung für einen bestimmten Abschnitt aufgerufen.
- acceptGeneratedPart(part)
- Bietet die Benachrichtigung, dass der Abschnitt part generiert wurde. Diese Methode kann in einer einzigen Generierung mehrfach aufgerufen werden, wenn Sie zugeordnete Abschnitte generieren (Datentabellen (DataTables) und Formulargruppen (FormGroups)).
- acceptAssociatedPart(part)
- Bietet die Benachrichtigung, dass während der Generierung der Abschnitt part gefunden wurde.
- end()
- Wird am Ende der Generierung für einen bestimmten Abschnitt aufgerufen.
Schnittstelle 'IPartInfo'
Zur Schnittstelle 'IPartInfo' gehören folgende Methoden:
- getPackageName()
- Gibt den Paketnamen des Abschnitts zurück. Der Name ist eine durch '.' begrenzte Zeichenfolge aus Paketen.
- getResourceName()
- Gibt den vollständigen Pfadnamen der Datei zurück, in der der Abschnitt definiert ist.
- getSource()
- Gibt den EGL-Quellentext für diesen Abschnitt zurück, bei dem es sich um ein Programm, eine Funktion, einen Datensatz oder einen anderen Abschnitt handeln kann. Für diese Methode ist erforderlich, dass der EGL-Abschnitt erstellt wurde und sie beruht auf der Richtigkeit des von EGL kompilierten Informationsabrufs.
- getSource(Set resources, List partList)
- Gibt den EGL-Quellentext für diesen Abschnitt zurück, bei dem es sich um ein Programm, eine Funktion, einen Datensatz oder einen anderen Abschnitt handeln kann. Für diese Methode ist nicht erforderlich, dass der EGL-Abschnitt erstellt wurde und sie veranlasst ein Parsing der EGL-Quelle dieses Abschnitts während des Aufrufs.
In der Regel werden ein neues 'Set'- und ein 'ArrayList'-Element abgerufen und anschließend freigegeben, die die Logik umgeben, damit alle Abschnitte in der Aktion verarbeitet werden. Beispiel:
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();
}
}