Download mCube - Eldorado

Transcript
90
KAPITEL 11. IMPLEMENTIERUNG
men aller Gruppen gespeichert. Nur mit den hier registrierten Gruppen kann operiert
werden.
Das zweite EntityBean GroupUsers repräsentiert die Tabelle GroupUsers. Als Attribute
beinhaltet sie den Gruppen- und Usernamen. Zusammen ergeben sie den Primary Key.
Ein Datensatz speichert also die Zugehörigkeit eines Users zu einer Gruppe.
Damit die Datenintegrität gesichert ist, handelt es sich bei dem Gruppennamen um
einen Fremdschlüssel von der Tabelle Groups. Somit können User nur zu Gruppen
zugeordnet werden, die wirklich existieren.
Hier folgt nun eine detaillierte Beschreibung der Funktionalität:
Um eine neue Gruppe anzulegen, ruft man die Methode createGroup(Gruppennamen)
auf. Falls der Gruppenname schon existiert, wird eine DuplicateGroupException geworfen. Andernfalls kann man nun dieser Gruppe User zuordnen.
Wenn eine Gruppe nicht mehr benötigt wird, sollte diese mithilfe der Methode deleteGroup gelöscht werden. Hierbei werden auch alle Zuordnungen der User zu dieser
Gruppe gelöscht. Dank der Fremdschlüsselvererbung in der Datenbank und Einschalten der Funktion Cascade Delete wird dies automatisch von der Datenbank übernommen. Neben der Integrität der Daten birgt dieses Vorgehen außerdem einen Performanz
Vorteil, da die entsprechenden Datensätze nicht auf der Entity Bean Ebene gelöscht
werden.
Einen User fügt man mit der Methode addUserToGroup(group, user) hinzu. Die Methode erzeugt dazu ein neues GroupUsers EntityBean mit der Gruppe und dem User.
Mit deleteUserFromGroup(group, user) kann ein User wieder aus der Gruppe entfernt
werden. Das entsprechende GroupUsers EntityBean wird gelöscht.
Mit getUsersFromGroup(group) erhält man eine Liste mit allen Usernamen, die der
Gruppe angehören. Um diese Funktion zu realisieren, wurde eine spezielle FindByMethode mithilfe der in der EJB Spezifikation 2.0 definierten Query Language geschrieben, die alle Datensätze in der Tabelle GroupUsers findet, in denen der Gruppenname vorkommt. Wenn man eine Liste mit allen Gruppen, denen ein User angehört,
haben möchte, so muss man die Methode getGroupsFromUser(user) aufrufen. Diese
Methode arbeitet ähnlich wie getUsersFromGroup, nur dass hier eine andere FindByMethode benutzt wird, die nach Datensätze mit dem Usernamen sucht.
Die Methode isMemberOfGroup(group, user) gibt an, ob ein User Mitglied einer Gruppe ist oder nicht.
Zum Exceptionhandling der Komponente ist noch Folgendes zu sagen: Falls einer Methode als Parameter null statt einem Namen übergeben wird, so wird eine ParameterIsNullException geworfen. Außerdem überprüft jede Methode, ob wirklich eine Gruppe
mit dem übergebenem Namen existiert. Falls nicht, wird eine GroupNotFoundException geworfen. Damit ist sichergestellt, dass man einen User nicht einer Gruppe zuordnen
kann, die überhaupt nicht existiert. Dieses Vorgehen ist notwendig, um die Datenintegrität zu gewährleisten.
Entsprechend der Vorgehensweise im Usermanagement wurde gleichermaßen das Logging integriert.
11.2.3
Probleme
Bei der Implementierung dieser Komponente traten keine nennenswerten Probleme
auf.
Da diese Komponente ganz unten auf der core-Schicht angesiedelt ist, ist sie von keiner
anderen Komponente abhängig.