|
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 Generelle Klasse für das
Business-Object (BO) 'ProjectLanguage' implementiert.
Dieses BO
umfaßt die Daten für eine Kombination aus Project und
Sprache.
Eine detaillierte Beschreibung der Attribute finden Sie
im Abschnitt Variablen
der 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.
Einen
Überblick über die Aufteilung der Daten und
Funktionalitäten eines BO in verschiedene Klassen finden Sie im
Dokument Business-Object
– Realisierung mit Java-Klassen.
Eine
detailliertere Beschreibung der Aufgabe einer Generellen BO-Klasse
finden Sie im Dokument Business-Object
– General Class (Generelle Klasse).
Voriger Schritt: DataBase-Access (DBA) Klasse für 'ProjLang'
Vorbemerkung
Vorbedingungen
Generelle
BO-Klasse eröffnen
Code
für die Generelle BO-Klasse
*
Von Basisklasse erben
*
Importieren der Bibliotheken
*
Variablen der Klasse
*
Methode zum Kopieren der Werte eines Objektes der gleichen Klasse
*
Methode zum Vergleichen der Werte eines Objektes der gleichen
Klasse
*
Methode zum Übertragen der Werte von einem Objekt der
zugehörigen DBA-Klasse
Gesamter
Code am Ende des Schrittes
*
Klasse
JS_ProjAssist_ProjectLangugae_BO
Weitere
Schritte und verwandte Dokumentation
Nächster Schritt: Server-Side BO (Business-Object) Klasse für 'ProjectLanguage'
Obwohl
Eclipse in 'deutscher Version' installiert werden kann, sind
die Abbildungen in diesem Dokument mit der 'english Version'
erstellt. |
Für
die 'Massenproduktion' von Generellen Klassen für BO wurde ein
Muster-Code entwickelt, aus dem durch Ersetzen von 'Platzhaltern'
einfach und vor allem schnell bedarfsgerechte BO-Klassen
implementiert werden können.
Der Muster-Code und die
Anleitungen zur Adaption sind im Dokument Muster-Code
für ein BO (Generelle Klasse für ein Business-Object)
beschrieben.
Der
in diesem Tutorial vorgestellte Code folgt der Struktur des
Muster-Codes – dadurch wird das Verstehen und Adaptieren
leichter.
Voriger Schritt: DataBase-Access (DBA) Klasse für 'ProjLang' dieses Tutorials abgeschlossen.
Überblick über die theoretschen Grundlagen aus den Dokumenten Business-Object – Überblick über die Funktion zum Abfragen und Speichern von Daten und Anleitung in Business-Object – Realisierung mit Java-Klassen. durchgelesen und verstanden.
Generelle
BO-Klasse eröffnen
Diese
Klasse wird in einem eigenen Java-Package erstellt. Das Java-Package
wird bei der Erstellung der Klasse definiert.
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.bo) festgelegt.
Der
Name der Klasse (JS_ProjAssist_ProjectLanguage_BO)
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 Generelle BO-Klasse
Der
Code für die Generelle BO-Klasse folgt dem Schema wie es unter
Business-Object
– General Class (Generelle Klasse)
vorgestellt
wurde.
Der
gesamte Code ist unter Klasse
JS_ProjAssist_ProjectLangugae_BO
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.bo;
/*
*
Package mit der Basisklasse für ein Business Objekt. */import
js_base.bo.JSBS_BO;
.
. . . . . . .
. . . . . . . .public
class
JS_ProjAssist_ProjectLanguage_BO
extends
JSBS_BO
{
/*
Variablen
für die Common Attributes und Methoden um die Werte der Common
Attributes zu Kopieren und zu Vergleichen sind in der Basisklasse
JSBS_BO
definiert.
Mit den obigen Anweisungen wird die Bibliothek, in der
diese Klasse enthalten ist, importiert und von dieser Klasse
'geerbt'.
Importieren
der Bibliotheken
package
js_projassist.bo;
/*
*
Package mit der Basisklasse für ein Business Objekt. */import
js_base.bo.JSBS_BO;
/*
Package mit der Klasse für das DBA- (DataBase-Access-) Objekt.
*/
import
js_projassist.dba.*;
/*
*/
public
class
JS_ProjAssist_ProjectLanguage_BO
extends
JSBS_BO
{
/*
Neben
der schon beschriebenen Bibliothek mit der Basisklasse werden nur
eine weitere Bibliothek aus dem aktuellen Project benötigt.
import
js_projassist.dba.*;
ist
die Bibliothek mit der Klasse für den Zugriff auf
Datenbank-Tabellen
In dieser Klasse
(JS_ProjAssist_ProjectLanguage_BO) wird die Klasse, die im vorigen
Schritt dieses Tutorials (DataBase-Access
(DBA) Klasse für DB-Tabelle 'ProjLang') implementiert wurde
verwendet.
Warum in der 'Generellen Klasse' für das BO
eine DBA-Klasse 'auftaucht' und warum der Bruch mit der Philosophie
in Kauf genommen wurde, wird unter Methode
zum Übertragen der Werte von einem Objekt der zugehörigen
DBA-Klass
e
erläutert.
Variablen
der Klasse
.
. . . . . . .
. . . . . . . ./*
*/
public
class
JS_ProjAssist_ProjectLanguage_BO
extends
JSBS_BO
{
/*
* VARIABLE dieses
Business-Object.
* ---------------------
*//* Projekt-Code;
das ist die eindeutige Identifikation für ein Projekt.
*/
public
String
ProjectCode
;
/* Sprach-Code;
das ist der gewählte ISO-Sprach-Code für die
sprachabhängigen Texte. */
public
String
LanguageCode
;
/* Name
des Ziel-Verzeichnisses in dessen Unterverzeichnisse
die
* generierten XML-Dateien gespeichert werden.
*/
public
String
TargetDirectory
;
/*
* METHODEN *//* ---------------------
.
. . . . . . .
. . . . . . . .
Die
Variablen in der BO-Klasse reflektieren die Geschäfts-spezifischen
Aufgaben des Business-Object.
Methode
zum Kopieren der Werte eines Objektes der gleichen Klasse
Diese
Methode wird insbesondere dann benötigt, wenn die Daten zwischen
'Client-Side' und 'Server-Side' übertragen werden müssen.
.
. . . . . . .
. . . . . . . ./*
* METHODEN *//* ---------------------
* METHODE zum Kopieren der Attribute eines anderen
Objekts dieser Klasse. */
public
void
copyFromJS_ProjAssist_ProjectLanguage_BO(
JS_ProjAssist_ProjectLanguage_BO
parmJS_ProjAssist_ProjectLanguage_BO)
{
/*
* Aufruf der Methode der Superklasse um die 'Common
Attributes', den Status-Code
* und die (eventuelle)
Fehler-Meldung zu kopieren.
*/
super
.
getJSBS_BO(parmJS_ProjAssist_ProjectLanguage_BO);
/*
* Spezifische
Werte für dieses BO übertragen. */
this
.
ProjectCode
=
parmJS_ProjAssist_ProjectLanguage_BO.
ProjectCode
;
this
.
LanguageCode
=
parmJS_ProjAssist_ProjectLanguage_BO.
LanguageCode
;
this
.
TargetDirectory
=
parmJS_ProjAssist_ProjectLanguage_BO.
TargetDirectory
;
}.
. . . . . . .
. . . . . . . .
Methode
zum Vergleichen der Werte eines Objektes der gleichen Klasse
Der
Vergleich beschränkt sich auf die Geschäfts-spezifischen
Variablen – nicht auf die Common Attributes.
Diese Methode
wird hauptsächlich verwendet um festzustellen, ob eine Änderung
durch die Eingabe des Anwenders erfolgt ist.
.
. . . . . . .
. . . . . . . ./* ---------------------
* METHODE zum Vergleichen der Werte der speziellen
Variablen
* zweier Business-Object dieser
Klasse.
* Die Methode liefert 'true' zurück wenn
mindestens die Werte einer Variablen
* verschieden
sind. */
public
boolean
isDifferent(
JS_ProjAssist_ProjectLanguage_BO
parmJS_ProjAssist_ProjectLanguage_BO)
{
/*
* Werte
der spezifischen Variablen dieser BO-Klasse vergleichen. *//* Zuerst
prüfen, ob eine der beiden Variablen 'null' ist. */
if
((
this
.
ProjectCode
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
ProjectCode
==
null
))
{
/* Prüfen,
ob beide Variablen 'null' sind. Dann wäre der Vergleich erfüllt.
*/
if
((
this
.
ProjectCode
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
ProjectCode
==
null
))
{
/* Beide
Variablen 'null'; Vergleich erfüllt. */
}
else
{
/* Es
kann logischerweise nur eine Variable 'null' sein; der Vergleich ist
nicht erfüllt. */
return
true
;
}
}
else
{
/*
Keiner der beiden Variablen ist 'null'; Werte der Variablen
vergleichen. */
if
(
this
.
ProjectCode
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
ProjectCode
)
!= 0)
return
true
;
}/*
*** */
if
((
this
.
LanguageCode
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
LanguageCode
==
null
))
{
if
((
this
.
LanguageCode
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
LanguageCode
==
null
))
{ }
else
return
true
;
}
else
{
if
(
this
.
LanguageCode
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
LanguageCode
)
!= 0)
return
true
;
}/*
*** */
if
((
this
.
TargetDirectory
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
TargetDirectory
==
null
))
{
if
((
this
.
TargetDirectory
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
TargetDirectory
==
null
))
{ }
else
return
true
;
}
else
{
if
(
this
.
TargetDirectory
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
TargetDirectory
)
!= 0)
return
true
;
}/* Alle
Variablen haben gleiche Werte – BO sind nicht verschieden.
*/
return
false
;
}.
. . . . . . .
. . . . . . . .
Der
Vergleich wirkt auf den ersten Blick kompliziert und schießt
scheinbar über das Ziel hinaus.
Es wird im Code aber gleich
berücksichtigt, daß die Variablen auch null
sein
können (also noch keinen Wert zugewiesen haben).
Bei
'wirklichen' Aufgaben wird das in der überwiegenden Anzahl der
Anforderungen auftreten. Deswegen wird in diesem Tutorial gleich der
Code so erweitert, daß auch Variablen mit null
-Werten
verglichen werden können.
Methode
zum Übertragen der Werte von einem Objekt der zugehörigen
DBA-Klasse
Vorbemerkung:
In
der Generellen Klasse eine Klasse für den Zugriff auf
DB-Tabellen zu verwenden ist ein Bruch der Philosophie (Zugriff auf
die Datenbank in der 'Server-Side' Klasse des BO) aber aus
pragmatischen Gründen notwendig.
Die genaue Erklärung
erfolgt im Schritt (noch zu dokumentieren) für das Selektieren
eines Sets von BO.
Eine kurze Erklärung ist, daß die BO
in einem Set vom Typ 'Generelle Klasse' sind.
Für das
Anzeigen einer Liste der erfaßten Projekt-/Sprach-Kombinationen
erfolgt (in einem späteren Schritt) das Lesen des Sets von
Datensätzen von der DB-Tabelle in der Klasse
'JS_ProjAssist_ProjectLanguage_Set_BOS
'
mit der Klasse 'JS_ProjAssist_ProjLang_Set_
DBA
'.
Gerade bei Datenbank-Zugriffen ist wichtig, keinen überflüssigen
Code auszuführen und aus diesem Grund werden die Werte aus der
DBA-Klasse direkt in die (Generelle) BO-Klasse übernommen ohne
einen 'Umweg' über die (Server-Side) BOS-Klasse zu gehen.
Wenn
Sie diese Erklärung jetzt noch nicht verstanden haben können
Sie das Tutorial trotzdem ohne Bedenken fortsetzen ;-).
.
. . . . . . .
. . . . . . . .
/* ---------------------
* METHODE zum Übertragen der Werte der Variablen
des zugehörigen DBA-Objekts. */
public
void
getDBAAttributes(JS_ProjAssist_ProjLang_DBA
parmJS_ProjAssist_ProjLang_DBA)
{
/*
* Aufruf der Methode der Superklasse um die 'Common
Attributes'
* und die (eventuelle) Fehler-Meldung zu
kopieren.
*/
super
.
getCommonDBAAttributes(parmJS_ProjAssist_ProjLang_DBA);
/*
* Spezifische
Werte für dieses BO übertragen. */
this
.
ProjectCode
=
parmJS_ProjAssist_ProjLang_DBA.
ProjectCode
;
this
.
LanguageCode
=
parmJS_ProjAssist_ProjLang_DBA.
LanguageCode
;
this
.
TargetDirectory
=
parmJS_ProjAssist_ProjLang_DBA.
TargetDirectory
;
}
.
. . . . . . .
. . . . . . . .
Gesamter
Code am Ende des Schrittes
package
js_projassist.bo;
/*
*
Package mit der Basisklasse für ein Business Objekt. */import
js_base.bo.JSBS_BO;
/*
Package mit der Klasse für das DBA- (DataBase-Access-) Objekt.
*/
import
js_projassist.dba.*;
/*
*/
public
class
JS_ProjAssist_ProjectLanguage_BO
extends
JSBS_BO
{
/*
* VARIABLE dieses
Business-Object.
* ---------------------
*//* Projekt-Code;
das ist die eindeutige Identifikation für ein Projekt.
*/
public
String
ProjectCode
;
/* Sprach-Code;
das ist der gewählte ISO-Sprach-Code für die
sprachabhängigen Texte. */
public
String
LanguageCode
;
/* Name
des Ziel-Verzeichnisses in dessen Unterverzeichnisse
die
* generierten XML-Dateien gespeichert werden.
*/
public
String
TargetDirectory
;
/*
* METHODEN *//* ---------------------
* METHODE zum Kopieren der Attribute eines anderen
Objekts dieser Klasse. */
public
void
copyFromJS_ProjAssist_ProjectLanguage_BO(
JS_ProjAssist_ProjectLanguage_BO
parmJS_ProjAssist_ProjectLanguage_BO)
{
/*
* Aufruf der Methode der Superklasse um die 'Common
Attributes', den Status-Code
* und die (eventuelle)
Fehler-Meldung zu kopieren.
*/
super
.
getJSBS_BO(parmJS_ProjAssist_ProjectLanguage_BO);
/*
* Spezifische
Werte für dieses BO übertragen. */
this
.
ProjectCode
=
parmJS_ProjAssist_ProjectLanguage_BO.
ProjectCode
;
this
.
LanguageCode
=
parmJS_ProjAssist_ProjectLanguage_BO.
LanguageCode
;
this
.
TargetDirectory
=
parmJS_ProjAssist_ProjectLanguage_BO.
TargetDirectory
;
}/* ---------------------
* METHODE zum Vergleichen der Werte der speziellen
Variablen
* zweier Business-Object dieser
Klasse.
* Die Methode liefert 'true' zurück wenn
mindestens die Werte einer Variablen
* verschieden
sind. */
public
boolean
isDifferent(
JS_ProjAssist_ProjectLanguage_BO
parmJS_ProjAssist_ProjectLanguage_BO)
{
/*
* Werte
der spezifischen Variablen dieser BO-Klasse vergleichen. *//* Zuerst
prüfen, ob eine der beiden Variablen 'null' ist. */
if
((
this
.
ProjectCode
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
ProjectCode
==
null
))
{
/* Prüfen,
ob beide Variablen 'null' sind. Dann wäre der Vergleich erfüllt.
*/
if
((
this
.
ProjectCode
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
ProjectCode
==
null
))
{
/* Beide
Variablen 'null'; Vergleich erfüllt. */
}
else
{
/* Es
kann logischerweise nur eine Variable 'null' sein; der Vergleich ist
nicht erfüllt. */
return
true
;
}
}
else
{
/*
Keiner der beiden Variablen ist 'null'; Werte der Variablen
vergleichen. */
if
(
this
.
ProjectCode
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
ProjectCode
)
!= 0)
return
true
;
}/*
*** */
if
((
this
.
LanguageCode
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
LanguageCode
==
null
))
{
if
((
this
.
LanguageCode
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
LanguageCode
==
null
))
{ }
else
return
true
;
}
else
{
if
(
this
.
LanguageCode
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
LanguageCode
)
!= 0)
return
true
;
}/*
*** */
if
((
this
.
TargetDirectory
==
null
)
|| (parmJS_ProjAssist_ProjectLanguage_BO
.
TargetDirectory
==
null
))
{
if
((
this
.
TargetDirectory
==
null
)
&& (parmJS_ProjAssist_ProjectLanguage_BO
.
TargetDirectory
==
null
))
{ }
else
return
true
;
}
else
{
if
(
this
.
TargetDirectory
.compareTo(
parmJS_ProjAssist_ProjectLanguage_BO.
TargetDirectory
)
!= 0)
return
true
;
}/* Alle
Variablen haben gleiche Werte – BO sind nicht verschieden.
*/
return
false
;
}/* ---------------------
* METHODE zum Übertragen der Werte der Variablen
des zugehörigen DBA-Objekts. */
public
void
getDBAAttributes(JS_ProjAssist_ProjLang_DBA
parmJS_ProjAssist_ProjLang_DBA)
{
/*
* Aufruf der Methode der Superklasse um die 'Common
Attributes'
* und die (eventuelle) Fehler-Meldung zu
kopieren.
*/
super
.
getCommonDBAAttributes(parmJS_ProjAssist_ProjLang_DBA);
/*
* Spezifische
Werte für dieses BO übertragen. */
this
.
ProjectCode
=
parmJS_ProjAssist_ProjLang_DBA.
ProjectCode
;
this
.
LanguageCode
=
parmJS_ProjAssist_ProjLang_DBA.
LanguageCode
;
this
.
TargetDirectory
=
parmJS_ProjAssist_ProjLang_DBA.
TargetDirectory
;
}
}
Dokument |
Inhalt |
Im
nächsten Schritt des Tutorials wird die Server-Side Klasse
des BO (Business-Object) für Projekt und Sprache
implementiert. |
|
Muster-Code für ein BO (Generelle Klasse für ein Business-Object) |
In diesem Dokument wird ein Muster-Code für ein BO vorgestellt und die durchzuführenden Adaptierungen beschrieben. |