|
Letzte
Bearbeitung dieses Dokuments: |
Voraussetzungen für das Verständnis dieses Dokuments:Grundkenntnisse in
der Programmierung von Java (Klassen, Methoden,
Schleifen). |
Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:Arbeitszeit:
|
In
diesem Dokument wird die Client-Seitige Klasse für eine Liste
mit Business-Objects (BO) der Klasse 'ProjectLanguage'
implementiert.
Sie wird auf der Client-Seite einer
Geschäftsanwendung implementiert.
Diese Klasse wird allgemein
als BOC (Business-Object-Client) bezeichnet.
Sie transferiert die
Werte aus den Variablen des BO von/zu GUI-Elementen für die
Anzeige und steuert das Selektieren von Daten durch den Aufruf von
Methoden eines Objektes der zugeordneten Server-Side Klasse.
Einen
Überblick über die verschiedenen Klassen zur Verwaltung von
persistenten Daten finden Sie im Dokument Business-Object
– Überblick über die Funktion zum Abfragen und
Speichern von Daten.
Eine
detailliertere Beschreibung der Aufgabe einer Client-Side BO Klasse
finden Sie im Dokument Business-Object
– Client-Side Class (Klasse für die Client-Programme).
Als
Besonderheit der Klasse sind Methoden implementiert, die die 'rohen'
Daten aus den BO in der Liste formatieren und in eine Matrix
übertragen.
Die 'Spalten' der Matrix sind mit symbolischen
Namen versehen und über diese symbolischen Namen kann die
Anzeige der Liste der Daten über die SML-Struktur in der Datei
'DisplayStrings.xml'
gesteuert werden.
Voriger Schritt: Server-Side BO-Set Klasse für eine Liste mit 'ProjectLanguage' Business-Objects
Vorbemerkung
Vorbedingungen
BOC-Set-Klasse
eröffnen
Code für
die BOC-Set-Klasse
*
Von Basisklasse erben
*
Importieren der Bibliotheken
*
Konstante Werte für die symbolischen Namen der formatierten
Daten
* Variablen der
Klasse
*
Constructor-Methode
*
Methode zum Selektieren der Daten
*
Methode zum Aufbau der Matrix mit den formatierten Daten
*
Methode zum Anzeigen der formatierten Daten
Gesamter
Code am Ende des Schrittes
Klasse
JS_ProjAssist_ProjectLanguage_BOC_Set
Weitere
Schritte und verwandte Dokumentation
Nächster Schritt: Liste der Daten anzeigen und zur Bearbeitung auswählen
Obwohl
Eclipse in 'deutscher Version' installiert werden kann, sind
die Abbildungen in diesem Dokument mit der 'english Version'
erstellt. |
Voriger Schritt Server-Side BO-Set Klasse für eine Liste mit 'ProjectLanguage' Business-Objects dieses Tutorials abgeschlossen.
Überblicks-Kenntnisse über die theoretschen Grundlagen aus den Dokumenten Business-Object – Überblick über die Funktion zum Abfragen und Speichern von Daten, Business-Object – Realisierung mit Java-Klassen und Business-Object – Client-Side Class (Klasse für die Client-Programme).
BOC-Set-Klasse
eröffnen
Diese
Klasse wird im gleichen Java-Package erstellt wie die Client-Seitige
BO-Klasse.
Das
Erstellen einer neuen Klasse wurde bereits mehrmals im Detail und mit
Abbildungen beschrieben.
Aus diesem Grund wird er Vorgang nur mehr
in Stichworten beschrieben.
Wenn sie unsicher sind, nehmen Sie
bitte die ausführliche Anleitung unter JavaScout
ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01) –
DataBase-Access (DBA) Klasse für DB-Tabelle 'ProjLang'
>
DBA-Klasse
eröffnen
als
Richtlinie.
Um
eine neue Java-Klasse zu eröffnen wird mit der rechten
Maustaste das Project (Java_Fatclient_01) angeklickt und aus dem
Kontext-Menu
>New>Class
ausgewählt.
Im darauf hin erscheinenden Fenster (New Java Class) wird
Das 'Package' (js_projassist.boc) festgelegt.
Der
Name der Klasse (JS_ProjAssist_ProjectLanguage_BOC_Set)
festgelegt.
ProjectLanguage
ist die Bezeichnung des BO (Business-Object).
Folgende
Auswahl-Möglichkeiten werden de-markiert:
[ ] public
static void main(String[] args)
[ ] Constructors
from superclass
[ ] Inherited abstract
methods
Die anderen bereits vorgegebenen Werte werden nicht verändert.
Durch
Anklicken der Schaltfläche
[ Finish ]
wird
die Datei für den Quell-Code der Klasse angelegt.
Code
für die BOC-Set-Klasse
Der
Code für die BOC-Klasse folgt dem Schema wie es unter
Business-Object
– Server-Side Class (Klasse für die Programme auf dem
Server)
vorgestellt
wurde.
Der
gesamte Code ist unter Klasse
JS_ProjAssist_ProjectLanguage_BOC_Set
gelistet
und mit Kommentaren versehen.
Aus diesem Grund wird anschließend
der Code nicht mehr im Gesamten wiederholt sondern nur mehr
Erläuterungen gegeben.
Von
Basisklasse erben
package
js_projassist.boc;
.
. . . . . . .
. . . . . . . ./*
*
Package mit gerbten Generellen Klassen für BO und BO-Set.
*/import
js_projassist.bo.*;
.
. . . . . . .
. . . . . . . .public
class
JS_ProjAssist_ProjectLanguage_BOC_Set
extends
JS_ProjAssist_ProjectLanguage_BO_Set
{
/*
Der
'Vector' für die Liste der BO und eine Methode zum Kopieren der
Liste sind in der General BO-Set
Klasse mit einer Liste für 'ProjectLanguage' Business-Objects
definiert.
Mit den obigen Anweisungen wird die Bibliothek, in der
diese Klasse enthalten ist, importiert und von dieser Klasse
'geerbt'.
Importieren
der Bibliotheken
Die
zu importierenden Bibliotheken sind weitest gehend identisch mit den
Bibliotheken für die Klasse
JS_ProjAssist_ProjectLanguage_BOC
.
Bitte
lesen sie in der dortigen Beschreibung Importieren
der Bibliotheken
nach
oder beachten Sie den Kommentar beim betreffenden Code.
Konstante
Werte für die symbolischen Namen der formatierten Daten
/*
*/
public
class
JS_ProjAssist_ProjectLanguage_BOC_Set
extends
JS_ProjAssist_ProjectLanguage_BO_Set
{
/* ---------------------
* KONSTANTE für die symbolischen Namen der
'Spalten' in der Matrix der formatierten
Daten.
* ---------------------
* Diese
symbolischen Namen werden in der Methode 'buildRawDataVector'
verwendet.
* Über XML-Parameter in der Datei
'DisplayStrings.xml' wird damit die Anordnung der
* Spalten
für die Auswahl-Tabelle gesteuert. */
public
static final
String
CONST_ColumnName_LanguageCode
=
"LanguageCode"
;
public
static final
String
CONST_ColumnName_ProjectCode
=
"ProjectCode"
;
public
static final
String
CONST_ColumnName_TargetDirectory
=
"TargetDirectory"
;
/* ---------------------
Als
Vorbereitung für eine variable Anzeige verschiedener Werte in
einer Tabelle wird für jede anzuzeigende Variable des BO ein
symbolischer Wert festgelegt.
Diese
symbolischen Namen werden verwendet, um beim Aufbau der Matrix mit
den formatierten Daten (siehe
Methode
zum Aufbau der Matrix mit den formatierten Daten
)
die Werte der einzelnen Spalten zu kennzeichnen.
In
der Methode zur Anzeige der Daten in einem GUI-Element vom Typ
'JTable' (siehe
Methode
zum Anzeigen der formatierten Daten
)
wird dann die passende Methode der Basisklasse
JSBS_XML_DisplayStrings
aufgerufen. Diese liest die Formatierungsinformation aus der
XML-Struktur in der sprach-abhängigen Datei 'DisplayStrings.xml'
(Beschreibung im Dokument
Datei
'DisplayStrings.xml' mit sprachabhängigen Texten für die
Anzeige auf der GUI
)
und ordnet die Spalten entsprechend der Formatierungsinformation an.
Variablen
der Klasse
Neben
dem Vector für die Liste mit den BO aus der Basisklasse JSBS_BO,
die über die Generelle Klasse für eine Liste mit BO geerbt
wurde (siehe
Tutorial:
JavaScout ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01) –
General BO-Set Klasse für eine Liste mit 'ProjectLanguage'
Business-Objects > Von Basisklasse erben
),
wird nur eine Variable definiert, die die Referenz auf das Task-Frame
enthält, die diese BOC-Klasse 'konstruiert' hat.
Im
referenzierten Task-Frame ist festgelegt, ob der Zugriff auf die
persistenten Daten 'lokal' ober über einen EJB-Mechanismus über
den Java-Application-Server (JAS) erfolgen soll.
Für
diesen Schritt des Tutorial ist der 'lokale' Zugriff beschrieben.
Constructor-Methode
Die
Methode ist gleich wie bei der Client-Side Klasse für das BO und
wurde schon im Dokument
Tutorial:
JavaScout ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01) –
Client-Side BO (Business-Object) Klasse für 'ProjectLanguage' >
Constructor-Methoden
beschrieben.
Bitte
lesen Sie die Kommentare im Code für eine genauere Erklärung
des Zwecks der jeweiligen Methode.
Methode
zum Selektieren der Daten
Diese
Methode
wurde
schon im Dokument
Tutorial:
JavaScout ProjectAssist, Task-Frame Grundlagen (Java_Fatclient_01) –
Client-Side BO (Business-Object) Klasse für 'ProjectLanguage' >
Methoden zum Speichern und Selektieren der Daten
beschrieben.
Dieser
Mechanismus ist aber wesentlich für das Verständnis des
JavaScout Fat-Client-Frameworks (JS-FCF) und wird deswegen noch
einmal detailliert beschrieben.
Entscheiden,
ob der Zugriff 'lokal' oder über den EJB-Meachanismus
erfolgt.
Für diesen Schritt des Tutorials wird nur ein
'lokaler' Zugriff implementiert./*
* Entscheiden, ob diese Application als
Einzelplatz-Version (StandAlone) oder
* Client/Server-Version
(FatClient) implementiert ist. */
switch
(
frmTask
.
frmCC
.
RunVersion
)
{
case
JSBS_StartFrame.
CONST_StandAlone
:
/*
Ein
Server-Side Business-Object (BOS-Klasse)
'konstruieren'.
Anschließend wird beim gerade
'konstruierten' BOS die Methode
selectAllProjectLanguageCombinations()
aufgerufen
und damit die Selektion der Daten von der Datenbank-Tabelle
ausgeführt.
/*
* Einzelplatz-Version bzw. Datenbank-Zugriff über
TCP/IP-Netzwerk.
* Server-Side-BO-Set 'konstruieren'.
*/
JS_ProjAssist_ProjectLanguage_BOS_Set
bos_BO_Set =
new
JS_ProjAssist_ProjectLanguage_BOS_Set(
frmTask
.
structMinParm
,
frmTask
.
frmCC
.
structJSBS_DB_ConnectionManager
);
/*
* Methode zum Selektieren der Werte aufrufen.
*/
bos_BO_Set.selectAllProjectLanguageCombinations()
;
/*
Zuletzt
werden die Daten aus dem BOS in das BOC kopiert.
Beim Selektieren
werden damit die gefundenen Daten aus dem BOS in das BOC
kopiert.
Mit break
wird
die Verarbeitung innerhalb der
switch
-Struktur
abgebrochen.
/*
* Neue Werte des BOS wieder in dieses BOC
übertragen.
* Damit sind geschäfts-spezifiesche
Attribute, Common-Attributes, Status-Code
* und
Status-Message in diesem BOC verfügbar.
*/
copyFromJS_ProjAssist_ProjectLanguage_BO_Set(bos_BO_Set);
break
;
/*
*/
case
JSBS_StartFrame.
CONST_FatClient
:
/*
* Client-Server-Version mit Aufruf des EJB wird in
einem späteren Schritt implementiert.
*/
break
;
}/*
* Methode aufrufen, die die Matrix mit den
formatierten Daten erstellt. */
buildRawDataVector();
}/*
Vor
dem Beenden der Methode wird aufgerufen. Damit wird die Matrix mit
den formatierten Daten aufgebaut.
case
JSBS_StartFrame.
CONST_FatClient
:
/*
* Client-Server-Version mit Aufruf des EJB wird in
einem späteren Schritt implementiert.
*/
break
;
}/*
* Methode aufrufen, die die Matrix mit den
formatierten Daten erstellt. */
buildRawDataVector();
}
Methode
zum Aufbau der Matrix mit den formatierten Daten
Um
die Anordnung der Spalten nicht fix bei der Programmierung festlegen
zu müssen ist in der Basisklasse JSBS_XML_DisplayStrings
die Methode
processJTable(...)
enthalten.
Ein
Parameter für diese Methode ist eine Matrix, die aus Variablen
des Java-Typs 'Vector' besteht und die anzuzeigenden Daten als
Java-Typ 'String' formatiert enthält.
Die Anordnung der
Spalten wird von der Methode processJTable(...)
aus
der Datei 'DisplayStrings.xml' ausgelesen.
Der
Vector
vecRawDisplayData
,
der die 'Matrix' enthält, ist bereits in der Basisklasse
JSBS_BO_Set
definiert.
/* ---------------------
* METHODE zum Aufbau der Matrix mit den formatierten
Daten.
* ---------------------
* In
dieser Matrix sind in der ersten Zeile die symbolischen
Spalten-Namen enthalten.
* Über XML-Parameter in
der Datei 'DisplayStrings.xml' wird damit die Anordnung
der
* Spalten für die Auswahl-Tabelle
gesteuert.
* Die 'Matrix' besteht aus einem 'Vector'
der für jede Zeile wieder einen 'Vector'
* mit
den Daten für die Spalten enthält.
* In der
ersten 'Reihe' der Matrix sind die symbolischen Spaltennamen
enthalten. */
public
void
buildRawDataVector()
{
/*
* Vector für die Zeilen leeren; dieser Vector
ist in der geerbten Basisklasse definiert.
*/
vecRawDisplayData
.removeAllElements();
Der
'erste' Vector (die erste Zeile der Matrix) innerhalb von
vecRawDisplayData
enthält
die Information, welche 'Spalte' welche Daten enthält.
Für
die Festlegung werden die Konstanten, die unter Konstante
Werte für die symbolischen Namen der formatierten Daten
definiert
wurden, verwendet.
Ein spezieller symbolischer Name ist
RowNr
.
Dieser ist in der Basisklasse JSBS_BO_Set
definiert und zeigt die Zeilennummer an.
Die Zeilennummer ist
notwendig, um ein bestimmtes BO mit Hilfe der Tastatur auswählen
zu können.
vecRawDisplayData
.removeAllElements();
/*
* Neuen 'Vector' für die erste Zeile
'konstruieren'; diese Zeile enthält die
* symbolischen
Namen für die Spalten. */
Vector
vecHeader =
new
Vector();
/* Die
Konstante für die Zeilen-Nummer ist in der geerbten Basisklasse
definiert.
*/
vecHeader.addElement(
CONST_ColumnName_RowNr
);
vecHeader.addElement(
CONST_ColumnName_ProjectCode
);
vecHeader.addElement(
CONST_ColumnName_LanguageCode
);
vecHeader.addElement(
CONST_ColumnName_TargetDirectory
);
/* Die
gerade erstellte 'Zeile' einfügen.
*/
vecRawDisplayData
.addElement(
vecHeader
);
In
einer
for
-Schleife
wird dann für jedes BO aus der Liste mit den BO eine weitere
'Zeile' in den 'Matrix'-Vector eingefügt.
Für die neue
'Zeile' wird ein eigener 'Vector' konstruiert.
Die Zeilennummer
wird in einen 'String' umgewandelt – so ist das für jeden
numerischen Wert notwendig um ihn anzeigen zu
können.
vecRawDisplayData
.addElement(
vecHeader
);
/*
* In
einer for-Schleife die Daten dieses BO-Set in die Matrix einfügen.
*/
int
locintVectorIndex;
int
locintVectorSize
=
vecRecordSet
.size();
for
(locintVectorIndex
= 0; locintVectorIndex < locintVectorSize; locintVectorIndex++)
{
/*
* Neuen 'Vector' für die Zeile 'konstruieren'.
*/
Vector
vecData =
new
Vector();
/* Die
Zeilennummer formatieren und als Spalte einfügen.
*/
String
locstrRowNumber = JSBS_Formatter.toFormattedString(locintVectorIndex
+ 1, 3);
vecData.addElement(locstrRowNumber);
Um
den Code nicht zu kompliziert werden zu lassen, wird für jedes
BO in der Liste ein eigenes Objekt der entsprechenden Klasse
erstellt und die Werte des BOs in der Liste auf das neu erstellte
Objekt kopiert.
Dadurch wird das Übertragen der einzelnen
Werte in den 'Matrix'-Vector leichter
verständlich.
vecData.addElement(locstrRowNumber);/*
* Das indizierte BO aus der Liste mit den (von der
Datenbank gelesenen) BO 'herauslösen'.
* Die
Werte werden auf ein neu 'konstruiertes' BO kopiert weil innerhalb
des Vector
* nur mit Referenzen gearbeitet wird und
deswegen ein Objekt, auf das der Vector 'zeigen'
* kann,
notwendig ist. */
JS_ProjAssist_ProjectLanguage_BO
tmpJS_ProjAssist_ProjectLanguage_BO =
new
JS_ProjAssist_ProjectLanguage_BO();
tmpJS_ProjAssist_ProjectLanguage_BO.copyFromJS_ProjAssist_ProjectLanguage_BO(
(JS_ProjAssist_ProjectLanguage_BO)
vecRecordSet
.elementAt(locintVectorIndex));
Als
letzter Teil innerhalb der
for
-Schleife
wird jeder Wert des BO in den Vector, der die 'Zeile' darstellt,
eingefügt.
Anschließend wird der 'Zeile'-Vector in den
'Matrix'-Vector eingefügt.
In dem einfachen Beispiel des
Tutorials werden nur 'String's als Datentypen verwendet. Wenn
numerische Datentypen vorkommen würden, müßten diese
in einen 'String' aufbereitet werden bevor sie in den 'Zeile'-Vector
eingefügt
werden.
(JS_ProjAssist_ProjectLanguage_BO)
vecRecordSet
.elementAt(locintVectorIndex));
/*
* Werte der Variablen aus dem 'herausgelösten'
BO in den 'Matrix'-Vector einfügen.
* Weil in
diesem Tutorial nur mit 'Strings' gearbeitet wird ist keine
Formatierung notwendig.
*/
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.ProjectCode
);
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.LanguageCode
);
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.TargetDirectory
);
/*
* Die
gerade erstellte 'Zeile' einfügen.
*/
vecRawDisplayData
.addElement(
vecData
);
}
}
Methode
zum Anzeigen der formatierten Daten
In
dieser Methode werden die Daten in einer 'JTable' angezeigt.
Die
Anordnung der Spalten ist in der sprach-abhängigen Datei
'DisplayStrings.xml' (Beschreibung im Dokument Datei
'DisplayStrings.xml' mit sprachabhängigen Texten für die
Anzeige auf der GUI
)
festgelegt. Die XML-Struktur aus dieser Datei wurde beim Starten des
Programms in das Start-Frame übernommen und die Informationen
über die Anordnung der Spalten wird von der Methode
processJTable(...)
abgerufen.
Bitte
lesen Sie die Kommentare beim Code für die Erklärung der
einzelnen Parameter.
/* ---------------------
* METHODE zum Anzeigen der Werte aus diesem BO in
einem GUI-Element vom Typ JTable. *//* ---------------------
* Diese Methode verwendet eine Methode der
Basisklasse 'JSBS_XML_DisplayStrings'
* um ein
GUI-Element vom Typ 'JTable' mit den Daten zu füllen.
* Im
Parameter 'parmArrayColumnWidth' wird eine Information über die
Spaltenbreite
* übergeben. */
public
void
setToGUI(JTable
parmJTable,
String[]
parmArrayColumnWidth)
{
/*
* Namen der Klasse des Task-Frames ermitteln.
*/
String
strFrameClassName =
frmTask
.getClass().getName()
;
/*
* Methode, die in der Klasse für die
DisplayStrings implementiert ist aufrufen.
*/
frmTask
.
frmCC
.
structJSBS_XML_DisplayStrings
.processJTable(
parmJTable,
strFrameClassName,
vecRawDisplayData
,
parmArrayColumnWidth)
;
}
Gesamter
Code am Ende des Schrittes
package
js_projassist.boc;
/*
*
Package mit der Bibliothek für den Vector, der für den
Aufbau der Liste mit den formatierten
* Daten benötigt
wird. */import
java.util.*;
/*
*
Package mit der Bibliothek der GUI-Elemente. */import
javax.swing.*;
/*
*
Package mit der Basisklasse für Start- und Task-Frame. */import
js_base.frame.*;
/*
*
Package mit der Basisklasse für die Formattierung von Werten.
*/import
js_base.utilities.JSBS_Formatter;
/*
* Packages
mit den zugehörigen Klassen (Generelle Klasse und
Server-Side-Klasse) dieses BO. */import
js_projassist.bo.*;
import
js_projassist.bos.JS_ProjAssist_ProjectLanguage_BOS_Set;
/*
*/
public
class
JS_ProjAssist_ProjectLanguage_BOC_Set
extends
JS_ProjAssist_ProjectLanguage_BO_Set
{
/* ---------------------
* KONSTANTE für die symbolischen Namen der
'Spalten' in der Matrix der formatierten
Daten.
* ---------------------
* Diese
symbolischen Namen werden in der Methode 'buildRawDataVector'
verwendet.
* Über XML-Parameter in der Datei
'DisplayStrings.xml' wird damit die Anordnung der
* Spalten
für die Auswahl-Tabelle gesteuert. */
public
static final
String
CONST_ColumnName_LanguageCode
=
"LanguageCode"
;
public
static final
String
CONST_ColumnName_ProjectCode
=
"ProjectCode"
;
public
static final
String
CONST_ColumnName_TargetDirectory
=
"TargetDirectory"
;
/* ---------------------
* VARIABLE dieser Klasse.
* ---------------------
* Einzige Variable ist eine Referenz auf das
Task-Frame, das das Objekt dieser Klasse
* 'konstruiert'
hat.
* Über diese Referenz werden jene Parameter
abgefragt, die bestimmen, ob der zugehörige
* Server-Side
Teil des BO direkt 'konstruiert' werden soll (bei einer StandAlone /
Einzelplatz-
* Version) oder ein EJB
(Enterprise-Java_Bean) aufgerufen werden muß (bei
einer
* Client/Server-Version). */
private
JSBS_TaskFrame
frmTask
=
null
;
/* ---------------------
* CONSTRUCTOR-METHODE *//* ---------------------
* Als Parameter des 'Constructors' ist das aufrufende
Task-Frame erforderlich. */
public
JS_ProjAssist_ProjectLanguage_BOC_Set(JSBS_TaskFrame
parmfrmTask)
{
/*
* Das im Parameter übergebenen JSBS_TaskFrame
wird in der Variablen dieser Klasse
* 'aufgehoben'.
*/
frmTask
=
parmfrmTask
;
}/* ---------------------
* METHODEN zum Aufrufen der Geschäfts-spezifischen
Datenbank-Operationen.
* Für dieses Tutorial wird
nur jener Code impementiert, der den Server-Side-Teil des
BO
* direkt in diesem Client-Side-Teil
verwendet.
*
* Die Client/Server-Version
mit der Verwendung von EJB (Enterprise Java Beans) auf einem
* JAS
(Java Application Server) folgt in einem späteren Schritt des
Tutorials. *//* ---------------------
* METHODE zum Selektieren aller BO die zum aktuellen
Zeitpunkt gültig sind. */
public
void
selectAllProjectLanguageCombinations()
{
/*
* Entscheiden, ob diese Application als
Einzelplatz-Version (StandAlone) oder
* Client/Server-Version
(FatClient) implementiert ist. */
switch
(
frmTask
.
frmCC
.
RunVersion
)
{
case
JSBS_StartFrame.
CONST_StandAlone
:
/*
* Einzelplatz-Version bzw. Datenbank-Zugriff über
TCP/IP-Netzwerk.
* Server-Side-BO-Set 'konstruieren'.
*/
JS_ProjAssist_ProjectLanguage_BOS_Set
bos_BO_Set =
new
JS_ProjAssist_ProjectLanguage_BOS_Set(
frmTask
.
structMinParm
,
frmTask
.
frmCC
.
structJSBS_DB_ConnectionManager
);
/*
* Methode zum Selektieren der Werte aufrufen.
*/
bos_BO_Set.selectAllProjectLanguageCombinations()
;
/*
* Neue Werte des BOS wieder in dieses BOC
übertragen.
* Damit sind geschäfts-spezifiesche
Attribute, Common-Attributes, Status-Code
* und
Status-Message in diesem BOC verfügbar.
*/
copyFromJS_ProjAssist_ProjectLanguage_BO_Set(bos_BO_Set);
break
;
/*
*/
case
JSBS_StartFrame.
CONST_FatClient
:
/*
* Client-Server-Version mit Aufruf des EJB wird in
einem späteren Schritt implementiert.
*/
break
;
}/*
* Methode aufrufen, die die Matrix mit den
formatierten Daten erstellt.
*/
buildRawDataVector();
}/* ---------------------
* METHODE zum Aufbau der Matrix mit den formatierten
Daten.
* ---------------------
* In
dieser Matrix sind in der ersten Zeile die symbolischen Spalten-Namen
enthalten.
* Über XML-Parameter in der Datei
'DisplayStrings.xml' wird damit die Anordnung der
* Spalten
für die Auswahl-Tabelle gesteuert.
* Die 'Matrix'
besteht aus einem 'Vector' der für jede Zeile wieder einen
'Vector'
* mit den Daten für die Spalten
enthält.
* In der ersten 'Reihe' der Matrix sind
die symbolischen Spaltennamen enthalten. */
public
void
buildRawDataVector()
{
/*
* Vector für die Zeilen leeren; dieser Vector ist
in der geerbten Basisklasse definiert.
*/
vecRawDisplayData
.removeAllElements();
/*
* Neuen 'Vector' für die erste Zeile
'konstruieren'; diese Zeile enthält die
* symbolischen
Namen für die Spalten. */
Vector
vecHeader =
new
Vector();
/* Die
Konstante für die Zeilen-Nummer ist in der geerbten Basisklasse
definiert.
*/
vecHeader.addElement(
CONST_ColumnName_RowNr
);
vecHeader.addElement(
CONST_ColumnName_ProjectCode
);
vecHeader.addElement(
CONST_ColumnName_LanguageCode
);
vecHeader.addElement(
CONST_ColumnName_TargetDirectory
);
/* Die
gerade erstellte 'Zeile' einfügen.
*/
vecRawDisplayData
.addElement(
vecHeader
);
/*
* In einer for-Schleife die Daten dieses BO-Set in die
Matrix einfügen. */
int
locintVectorIndex;
int
locintVectorSize
=
vecRecordSet
.size();
for
(locintVectorIndex
= 0; locintVectorIndex < locintVectorSize; locintVectorIndex++)
{
/*
* Neuen 'Vector' für die Zeile 'konstruieren'.
*/
Vector
vecData =
new
Vector();
/* Die
Zeilennummer formatieren und als Spalte einfügen.
*/
String
locstrRowNumber = JSBS_Formatter.toFormattedString(locintVectorIndex
+ 1, 3);
vecData.addElement(locstrRowNumber);/*
* Das indizierte BO aus der Liste mit den (von der
Datenbank gelesenen) BO 'herauslösen'.
* Die Werte
werden auf ein neu 'konstruiertes' BO kopiert weil innerhalb des
Vector
* nur mit Referenzen gearbeitet wird und
deswegen ein Objekt, auf das der Vector 'zeigen'
* kann,
notwendig ist. */
JS_ProjAssist_ProjectLanguage_BO
tmpJS_ProjAssist_ProjectLanguage_BO =
new
JS_ProjAssist_ProjectLanguage_BO();
tmpJS_ProjAssist_ProjectLanguage_BO.copyFromJS_ProjAssist_ProjectLanguage_BO(
(JS_ProjAssist_ProjectLanguage_BO)
vecRecordSet
.elementAt(locintVectorIndex));
/*
* Werte der Variablen aus dem 'herausgelösten' BO
in den 'Matrix'-Vector einfügen.
* Weil in diesem
Tutorial nur mit 'Strings' gearbeitet wird ist keine Formatierung
notwendig.
*/
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.ProjectCode
);
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.LanguageCode
);
vecData.addElement(tmpJS_ProjAssist_ProjectLanguage_BO.TargetDirectory
);
/*
* Die
gerade erstellte 'Zeile' einfügen.
*/
vecRawDisplayData
.addElement(
vecData
);
}
}/* ---------------------
* METHODE zum Anzeigen der Werte aus diesem BO in
einem GUI-Element vom Typ JTable. *//* ---------------------
* Diese Methode verwendet eine Methode der Basisklasse
'JSBS_XML_DisplayStrings'
* um ein GUI-Element vom Typ
'JTable' mit den Daten zu füllen.
* Im Parameter
'parmArrayColumnWidth' wird eine Information über die
Spaltenbreite
* übergeben. */
public
void
setToGUI(JTable
parmJTable,
String[]
parmArrayColumnWidth)
{
/*
* Namen der Klasse des Task-Frames ermitteln.
*/
String
strFrameClassName =
frmTask
.getClass().getName()
;
/*
* Methode, die in der Klasse für die
DisplayStrings implementiert ist aufrufen.
*/
frmTask
.
frmCC
.
structJSBS_XML_DisplayStrings
.processJTable(
parmJTable,
strFrameClassName,
vecRawDisplayData
,
parmArrayColumnWidth)
;
}}
Dokument |
Inhalt |
Im nächsten Schritt des Tutorials wird vorgestellt, wie die bereits erfaßten Datensätze in einer Liste angezeigt werden. Aus dieser Liste kann ein Datensatz ausgewählt und weiter bearbeitet werden. |