Projekt Weblog :: Integration Die Implementation des Formhandling Frameworks wird nun im Projekt Weblog integriert. Dafür stehen 2 Möglichkeiten zur Auswahl. Sie haben Ihre eigene Implementation der Actions, FormBeans, Datenbank und HTML Pages, welche die Minimalanforderungen erfüllen In diesem Fall integrieren Sie Ihr FormHandling Framework innerhalb Ihres eigenen Rahmens. Für die Bewertung ist die Implementation des Rahmens nicht relevant. Ist die eigene Integrationsumgebung nicht lauffähig und das Formhandling Framework kann nicht getetstet werden liegt das in Ihrer Verantwortung. Wenn Sie sich entscheiden diesen Weg zu wählen ist der Rest des Dokuments ist für Sie nicht wichtig Sie nehmen die Implementation der Actions, FormBeans, der Datenbank und der HTML Pages der Studienleitung und integrieren Ihr Framework in diesem Rahmen Dan erhalten Sie folgende Elemente HTML Pages: - Index Page (Ansicht der neuesten Weblogs) - Weblog Page (Ansicht der Weblogs in Listenform) - Autor erfassen Page - Weblog Einträge erfassen Implemntationen - MySQL Datenbank Load Script - DB Access Layer - Alle nötigen Actions für die minimalen Weblog Anforderungen Das Formhandling Framework der Studienleitung ist in gelieferten Package als Beispiel integriert. Ihre Aufgabe besteht darin, die eigenen FormHandling Implementation in diesem Package zu integrieren. Die nachfolgenden Kapitel beschreiben das gelieferte Package und weisen Konfigurationselemente hin. Bitte lesen Sie das Dokument sorgfältig durch. Seite 1/6
Datenbank Als erstes mach es Sinn die Datenbank aufzusetzen. Im Folder database ist ein SQL Script hsztweblog_tables.sql welches die Tabellen für die Datenbank hsztweblog MySQL dropt und anlegt. Mögliches Vorgehen: Erstellen Sie eine Datenbank hsztweblog Erstellen Sie einen User hsztweblog mit dem Passwort weblog und geben Sie diesem User Rechte auf der Datenbank hsztweblog Lassen Sie das Script File mit der MySQL console laufen (mysql -u root -p < hsztweblog_tables.sql) Im gleichen Folder ist das File weblogtabledefinition.xml für die Generierung des DBLayers, doch dazu gleich mehr. DBLayer Im ist eine Implementation eines generischen Datenbank Layers enthalten, welche in der aktuellen Version nur das Produkt MySQL unterstützt. Das DB Framework umfasst einen Code Generator, welcher aufgrund der XML Definition der Tabellen und der Zugriffsfunktionen Java Klassen für den Datenbank Zugriff generiert und den Run Time Teil, welcher das allgemeine Management zur Laufzeit übernimmt. Der Zugriff auf die Datenbank wird dadurch denkbar einfach gestaltet. Im Folgenden wird die Verwendung des DB Layers besprochen. Definition des DB Schemas und Zugriffsfunktionen Das DB Schema und die Zugriffsfunktionen werden abstrakt in einem XML File beschrieben. In unser ist die im File weblogtabledefinition.xml enthalten. Der Generator erstellt aus diesem File Klassen für den DB Zugriff welche den SQL Code für Funktionen, das Connection Handling und das DB Management (mehrere Datenbanken) beinhalten. Der Aufbau des Files ist einfach gehalten und enthält für die wichtigsten Elemente und Attribute Beschreibungen. Im gleichen Folder (Database) ist ein Beispiel File dblayerexample.xml enthalten welches Aufschluss über alle möglichen Datentypen und die Vielfalt der Funktionen gibt. Sehen Sie sich das Beispiel File an. Wichtig sind die Attribute und die find Funktionen. Wenn Sie für Ihre Integration andere als die bereits definierten Funktionen benötigen fügen Sie diese im File weblogtabledefinition.xm einfach hinzu. Passen Sie folgende Elemente an: Basepath=<Pfad auf Ihr Project Code root> Bei jeder Entity Definition im Element common folgende Attribute: author, company und package (Ihr Package) Seite 2/6
Generierung der DB Access Schicht (Java Klassen) Die Generierung der DB Zugriffs Klassen erfolgt über den Start der Generator Applikation Starten Sie die Applikation com.spectromedia.webappbase.webappbasegenerator als Arumente müssen die den Pfad auf das File weblogtabledefinition.xml und ein log4j.properties File angeben. com.spectromedia.webappbase.webappbasegenerator \<pfad>database\weblogtabledefinition.xm <pfad>\database\ log4jconfig.conf Der Generator erzeugt nun Code für jede definierte Entity in das definierte Package. Zugriff auf die Datenbank Zur Startup Time Ihrer Applikation benötigt das DB Framework die Konfigurationsdatei webblog_dblayer_config.xml, welche im WEB-INF Directory ist. Passen Sie folgende Elemente an: Die Properties Autor, basepath (auf Web Root), ev. Dburl Der Zugriff auf die Datenbank erfolgt über die jeweilige Helper Klasse der entsprechenden Tabelle oder View. Hier ein Beispiel welches alle Channel Entries aus der Tabelle Channel holt. ChannelBOHelper bohelper = new ChannelBOHelper(); bohelper.getallchannelentries(); // fill the channels into a list while(bohelper.hasmorebos()) { } channellist.add(bohelper.getnextbo()); Die Methode getallchannelentries wird per Default erzeugt. Weitere Beispiele (auch für Insert von Objekten sind in den implementierten Actions ersichtlich) Seite 3/6
Actions Kurze Beschreibung der implementierten Actions. Die Actions schreiben die Ergebnisse (Listen, BO s) in den ActionContext. CheckExistingBlogTitle.java Wir beim erstellen eines neuen Weblogs gebraucht. Prüft ob in der Tabelle Weblog bereits ein Weblog mit einem identischen Titel vorhanden ist. CheckRegisterPassword.java Prüft ob das Registrierungspasswort mit dem Passwort Check Feld übereinstimmt. CheckUsernamForRegister.java Prüft bei der Registrierung ob ein gegebener Username in der Tabel Weblog Autor berits existiert InsertArticle.java Fügt einen Artikel in die Tabelle Weblog Entry ein. Im User Interface kann nebst den bestehenden Channels ein Name für einen neuen Channel angegeben werden. Wird ein neuer Channel Name gefunden, so wird ein neuer Eintrag in der Tabelle Channels eingetragen und die Channel Liste mit der Action LoadChannels neu geladen. Wurde der Artikel erfolgreich geschrieben, so wir die Action LoadNewestArticle ausgeführt um den Artikel auf der index Seite anzuzeigen. InsertAutor.java Fügt einen neuen Autor in der Tabelle Weblog Autor ein. Das Passwort wird MD5 verschlüsselt. Nach erfolgreichem Insert wird das Login Flag auf true gesetzt. InsertBlog.java Fügt einen neuen Weblog Eintrag in die Tabelle Weblog ein und lädt die Weblog Liste mit der Action LoadWeblogs neu. LoadArticlesForChannel.java Lädt alle Artikel zughörig zu einem Channel. LoadArticlesForWeblog.java Lädt alle Artikel zughörig zu einem Weblog eines Autors. LoadArticlesWithKeyword.java Lädt alle Artikel welche im Titel oder im Artikel Text mit dem search keyword matchen. LoadCategories.java Lädt die Liste der aller Kategorien. LoadChannels.java Lädt die Liste der aller Channels. LoadNewestArticles.java Lädt alle Artikel sortiert nach insert Datum. LoadWeblogs.java Lädt die Liste der aller Weblogs. Seite 4/6
LoginAutor.java Prüft ob das angegeben Login gültig ist und vergleicht die Passwörter. Ist beides korrekt wird das Login Flag auf true gesetzt. FormBeans ArticleFormBean.java FormBean für die article Seite. LoginFormBean.java FormBean für das Login Fragment. RegisterFormBean.java FormBean für die register Seite. SearchFormBean.java FormBean für das search Fragment. WebLogEntryBean.java Read only FormBean für einen einzelnen Artikel. Enthält alle BO s welche zur Anzeige eines Artikel Eintrags nötig sind. Eine Liste dieser Beans wird auf der index und weblog Seite verwendet um die Artikel anzuzeigen. Seite 5/6
Smartfom Elemente Sie integrieren Ihr eigenen Formhandling Framework in das Weblog Projekt. Im gelieferten Packet ist als Beispiel das Formhandling Framework smartform integriert. Nachfolgeng ist ersichtlich welche Elemente zu smartform gehören. Die Elemente können gelöscht wenn Sie das Beispiel nicht mehr benötigen. Alles im \WEB-INF Directory ausser webblog_dblayer_config.xml und log4j.properties (Passen Sie das File auf Ihre Bedürfnisse an) lib\smartform.jar package com.spectromedia.edu.weblog.validator JSP Pages Die JSP Pages verwenden Tag Libs der Formhandling Frameworks smartform und sind für Sie nicht direkt brauchbar. Sie dienen nur als Beispiele. Wobei einige Dinge noch in Taglibs ausgelagert werden könnten. Gehen Sie für die Integration von den Original HTML Pages aus und passen Sie diese an. Im den Beispiel JSP Pages sehen Sie dass im Integrationsprozess einzelne HTML Pages um wenige Elemente erweitert wurden. Es kann auch in Ihrem Fall Anpassungen geben. Konfiguration Tomcat Tragen Sie im File server.xml eine context für das Projekt ein: <!-- Context entry for the HSZT weblog project --> <Context path="/weblog" docbase="hsztweblog" debug="0" reloadable="true" crosscontext="true"> <Logger classname="org.apache.catalina.logger.filelogger" prefix="hsztweblog." suffix=".log" timestamp="true"/> </Context> Deploy Der ausgelieferten Code enthält ein ant build File welches Sie für den einfachen deploy Ihrer Applikation verwenden können. Das File build.xml ist im Ordner Build. Passen Sie in diesem File die Pfäde an Definieren Sie dieses File als ant build File in der IDE Bei der Integration Ihres Frameworks müssen sie einzelne Imports in den Actions anpassen Seite 6/6