Florian Bielsky (854855) | Michael Kabdebo (854129) | Marc Rohe(854150) Inhaltsverzeichnis 1. 2. 3. Einführung 5 1.1 Vorwort 5 1.2 infra$tat 5 1.3 Lizenz und Haftungsauschluss 6 1.4 Weiterentwicklung 6 Anforderungen, Installation und Verwendung 7 2.1 Softwareanforderungen 7 2.2 Installation für Entwickler 7 2.3 Systemvoraussetzungen für die Nutzung 7 2.4 Installation für die Nutzung 7 2.5 Programmiersprachen 8 2.6 Hardwareanforderungen 8 Datenbank 9 3.1 Datenbankstruktur 9 3.2 ER-Modell 9 3.3 Datenbank-Design 10 3.3.1 Tabelle Firma 10 3.3.2 Tabelle Banken 10 3.3.3 Tabelle Aufsichtrat 10 3.3.4 Tabelle Vorstand 10 3.3.5 Tabelle Beteiligungen 10 3.3.6 Tabelle Umsatz 11 3.3.7 Tabelle Konzernumsatz 11 3.3.8 Tabelle Beschaeftigte 11 2 4. 5. Packages 12 4.1 gui (Klassen für View-Komponente) 12 4.2 libs(benötigte Libraries) 12 4.3 crawler (Klassen für Crawler-Komponente) 12 4.4 db (Klassen für Model-Komponente) 13 4.5 db.data (Datenbank-Inhalte) 13 4.6 db.im ages(Verwendete Bilder / Icons) 14 4.7 action (Klassen für Control-Komponente) 14 4.8 helper (Hilfsklassen) 15 Klassenbeschreibungen 16 5.1 Package gui 16 5.1.1 Klasse MainGui.java 16 5.2 Package Crawler 16 5.2.1 Zugriff auf die Hoppenstedt-Datenbank 16 5.2.2 Programminterner Ablauf 17 5.2.3 Die Klasse Former.java 17 5.2.4 Die Klasse Crawler.java 17 5.2.5 Die Klasse Profile2File.java 18 5.2.6 Die Klasse CrawlFromFile.java 18 5.3 Package db 19 5.3.1 DTO-Klassen 19 5.3.2 Klasse db.DBObject 19 5.3.3 DB-Klassen 19 5.4 Package action 20 Enthaltene Klassen 20 5.4.1 action.DoLineWrapListener.java 20 5.4.2 action.ItemControlListener.java 20 5.4.3 SearchBodListener.java 20 5.4.4 SearchCompListener.java 20 5.4.5 SearchDirectorListener.java 20 5.4.6 SearchTownListener.java 20 3 5.4.7 SelectButtonListener.java 20 5.4.8 ShowStatsListener.java 21 5.4.9 SResultSele ctionListener.java 21 5.5 Package Helper 21 5.5.1 Umsatz 21 5.5.2 KUmsatz 21 5.5.3 Tools 21 6. Ablaufdiagramm 23 7. Styleguide 24 8. 7.1 Farbschema 24 7.2 Schriftarten 24 7.3 Icons 24 Kontakt 26 8.1 Teammitglieder 26 8.2 Supervisor 25 4 1. Einführung 1.1 Vorwort Dieses Dokument dient dazu, inter essierten Programmierern eine Grundlage zur Weiterentwic klung von infra$tat zu schaffen. Es enthält sowohl allgemeine Informationen über die Anwendung infra$tat , als auch detaillierte Informationen über die Softwarearchitektur, die einzelnen Packages und Klassen. 1.2 infra$tat In Deutschland gibt es derzeit über 159 000 Unternehmen. Bei dieser großen Zahl an Firmen gibt es zahlreiche Beziehungen unter einander. Zur Informationsbeschaffung gibt es eine Hand voll Datenbanken in welchen detaillierte Informationen zu den einzelnen Unternehmen zu finden sind. Allerdings sind anhand der Struktur dieser Daten Zusammenhänge zwischen den Firmen nur schwer zu erkennen. Des Weiteren gibt es derzeit keine Software, die diese Struktur en direkt visuell darstellt und veranschaulicht. Mit der Anwendung infra$tat wird diese Marktlücke aufgegriffen. Infra$tat beschäftigt sich mit der Visualisierung von Unternehmensstrukturen deutscher Unternehmen und den Beziehungen untereinander. Es ist möglich Firmen anhand von Suchparametern zu ermittelt. Einzelne oder mehr ere Suchergebnisse können daraufhin visuell dargestellt werden. Zusätzlich werden auch umfangreiche Informationen zu den ausgewählten Firmen in einem Informationsbereich angezeigt. Hierbei ist es auch möglich Statistiken zu Umsatz- und Beschäftigungszahlen zu erhalten. Bei einer Visualisierung wird die gewählte Firma, umgeben von Ihren Aufsichtsrats - und Vorstandsmitgliedern angezeigt. Infra$tat wurde in der modernen und objektorientierten Programmiersprache entwickelt. Als Grundlage für die Datenbeschaffung dient die Hochschul datenbank der Hoppenstedt- Gruppe. Im Rahmen der Veranstaltung Medienkonzeption und Produktion an der Fachhochschule Kaiserslautern wurde dem Entwicklerteam FreeFaces ein VPN-Zugang zur Technischen Universität Kaiserslautern zur Verfügung gestellt, um über deren Hochschulaccount bei Hoppenstedt die benötigten Daten beschaffen zu können. Die Anwendung besteht aus drei Hauptkomponenten: Sammeln der Informationen durch einen Crawler. Speichern der Daten in einer softwareinternen Datenbank. Auswertung und An zeigen der geforderten Informationen mittels eines entsprechenden Algorithmus. 5 1.3 Lizenz und Haftungsauschluss Die Anwendung infra$tat wurde unter der General Public License (GPL) entwickelt. Näher e Informationen dazu finden Sie unter http://www.opensource.org. Die Anwendung behält sich vor weder vollkommen korrekt noch auf dem aktuellsten Stand zu sein. Bei der Entwicklung der Daten wurden die Daten der Hoppenstedt Datenbank aus dem Ja hre 2007 verwendet. 1.4 Weiterentwicklung Die Anwendung infra$tat bietet jedem Inter essenten die Möglichkeit den Quellcode nach seinen eigenen Vorstellungen anzupassen und weiterzuentwickeln. Durch die sauber aufgebaute Struktur der Software im Gesamten und eine ausführliche Kommentierung des Quellcodes wird der Einstieg in die Weiterentwicklung erleichtert. 6 2. Anforderungen, Installation und Verwendung 2.1 Softwareanforderungen Zur Weiterentwicklung von infra$tat benötigen Sie folgende Anforderungen: Java Development Kit ab Version 5.0 der Java Standard Edition J2SE Visualisierungstoolkit Prefuse JFreeChart (W erkzeug zur Darstellungen der Statistiken) Jakarta http Client HSQLDB (Integriertes Datenbankmanagementsystem für Java) Java Entwicklungsumgebung (hier verwendet Eclipse 3.2, JDeveloper, NetBeans 5.5.1) Substance LookAndFeel Die genannten W erkzeuge sind größtenteils im CVS Root im Ordner src/libs vorhanden. Lediglich die Java Entwicklungsumgebung und das Java Development Kit müssen über ex terne Quellen bezogen werden. Bezugsquellen hierzu: Java Entwicklungsumgebung: Eclipse 3.2 http://www.eclipse.org Java JDK: http://www.sun.com 2.2 Installation für Entwickler Entwickleraccount bei sf.net für infra$tat Erstellen einer Verbindung zum CVS Repository auf http://www.sourceforge.net zum Beispiel mit Eclipse: Kompletter Checkout durchführen Libraries aus dem Ordner src/libs in Build-Path einbinden. 2.3 Systemvoraussetzungen für die Nutzung Für die Ausführung der Anwendung werden folgende Softwareanforderungen vorausgesetzt: Java Runtime Environment ab Version 5.0. Hier wird auf die unter http://infra$tat.sf.net/documentation.html zu erhaltende Benutzerdokumentation verwiesen. 2.4 Installation für die Nutzung Zur Installation der Anwendung bitte wie folgt vorgehen: Herunterladen der aktuellen Version unter http://infra$tat.sourceforge.net/download.html Installationsdatei ausführen und den Installationsanweisungen folgen. Ausführen der infra$tat.exe , um die Anwendung zu starten. Weitere Hinweise siehe Benutzerdokumentation. 7 2.5 Programmiersprachen Die gesamte Anwendung wurde ich Java 5.0 entwickelt. Für die Datenbankkomponente wurde SQL verwendet. 2.6 Hardwareanforderungen Für das Ausführen der Anwendung werden folgende Hardwareanforderungen vorausgesetzt: Mindestens Pentium 4 mit 1,2 GHz. Mindestens 256 MB RAM, empfohlen 512 MB oder höher. 15 MB freier Festplattenspeicher. Eine Bildschirmauflösung von mindestens 1024 x 768 Pixel. Für das Ausführen des Crawler, bzw. die Entwicklung werden deutlich höhere Systemressourcen empfohlen. Mindestens Pentium 4 mit 2 GHz. Mindestens 1024 MB RAM oder höher. Bis zu 700 MB freier Festplattenspeicher. 8 3. Datenbank Als DBMS wurde in der Anwendung infra$tat HSQLDB verwendet. Dies ist eine kostenlose vollwertige SQL-Datenbank, die fest in eine Java-Anwendung integriert werden kann. Des Weiteren sind bei HSQLDB Transakti onen möglich (commit, rollback) und es wird referentielle Integrität unterstützt. Somit können HSQL Datenbanken bei aktuellen vergleichbaren externen DBMS ohne weiter es mithalten. Eine zentrale Bedeutung hat dabei die Datei src/db/data/infrastat.script, in welcher sowohl die Einstellungen für die Datenbank wie Benutzername oder Passwort, als auch die die Tabellen und die Datensätze gespeichert werden. Der Datenbank-Prozess wird mit dem Start der Anwendung gestartet und mit deren Beendung auch wieder beendet. Die hat den großen Vorteil, dass Endbenutzer sich nicht mit der Installation etwa einer MySQL-Datenbank rumschlagen müssen. 3.1 Datenbankstruktur Die Datenbankstruktur ist folgendermaßen aufgebaut: Es gibt die Zentrale Tabelle „Firma“, in der die grundlegenden Daten zu den Firmen, wie Name, Ort, Kontakt, URL usw. gespeichert werden. Da spezifische Daten wie Aufsichtsräte, Vorstände etc. mehrfach zu jeder Firma vorliegen, wurden für diese Daten 7 weitere Tabellen angelegt, in welchen diese Daten abgelegt und über die jeweilige Firmen-ID referenziert werden: Aufsichtsrat Vorstand Beschaeftigte Umsatz Konzernumsatz Beteiligungen Banken 3.2 ER-Modell 9 3.3 Datenbank-Design 3.3.1 Tabelle Firma CREATE TABLE Firma( fid INT NOT NULL, name VARCHAR(80) NOT NULL, rechtsform VARCHAR(20), url VARCHAR(100), handelsreg VARCHAR(80), plz CHAR(5), ort VARCHAR(60), strasse VARCHAR(80), tel VARCHAR(25), fax VARCHAR(25), postfach INT, PRIMARY KEY (fid) ); 3.3.2 Tabelle Banken: CREATE TABLE Banken ( banname VARCHAR(60) NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (banname, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 3.3.3 Tabelle Aufsichtrat: CREATE TABLE Aufsichtsrat ( aufname VARCHAR(80) NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (aufname, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 3.3.4 Tabelle Vorstand: CREATE TABLE Vorstand ( vorname VARCHAR(80) NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (vorname, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 3.3.5 Tabelle Beteiligungen: CREATE TABLE Beteiligungen ( betname VARCHAR(80) NOT NULL, sitz VARCHAR(80) , anteil FLOAT , fk_fid INT NOT NULL, PRIMARY KEY (betname, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 10 3.3.6 Tabelle Umsatz: CREATE TABLE Umsatz ( jahr int NOT NULL, wert DOUBLE NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (jahr, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 3.3.7 Tabelle Konzernumsatz: CREATE TABLE Konzernumsatz ( jahr int NOT NULL, wert DOUBLE NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (jahr, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 3.3.8 Tabelle Beschaeftigte: CREATE TABLE Beschaeftigte ( jahr INT NOT NULL, anzahl INT NOT NULL, fk_fid INT NOT NULL, PRIMARY KEY (jahr, fk_fid), FOREIGN KEY (fk_fid) REFERENCES Firma (fid) ON UPDATE CASCADE ON DELETE CASCADE ); 11 4. Packages Die Softwarearchitektur von Infra$tat ist in sieben Packages aufgeteilt: 4.1 gui (Klassen für View-Komponente) 4.2 libs(benötigte Libraries) 4.3 crawler (Klassen für Crawler-Komponente) 12 4.4 db (Klassen für Model-Komponente) 4.5 db.data (Datenbank-Inhalte) 13 4.6 db.im ages(Verwendete Bilder / Icons) 4.7 action (Klassen für Control-Komponente) 14 4.8 helper (Hilfsklassen) 15 5. Klassenbeschreibungen 5.1 Package gui Hier befinden sich die Klassen für das User Interface. Die Klassen wurde mit Hilfe des NetBeans GUI Designer entwickelt. 5.1.1 Klasse MainGui.java Die Klasse enthält alle Komponenten des User Interface, sowie alle Komponenten zur Erzeugung der Graphen, die durch Prefuse erzeugt werden. 5.2 Package Crawler 5.2.1 Zugriff auf die Hoppenstedt-Datenbank Der Zugriff auf die Hoppenstedt-Datenbank erfolgt über eine HTTP-Verbindung. Einfach gesagt werden GET-Anfragen (Request) an den W ebserver gesendet und die Antworten (Response) ausgewertet. Die Antworten enthalten die Informationen in HTML. Grundlage für den Zugriff ist natürlich ein Zugang zu der Webseite. Diese kostet 2000,-€ / Jahr. Wir nutzten für unser Projekt den, für Lehre und Forschung kostenlosen, Zugang über die Universität Kaiserslautern. Da der Zugang über eine feste IP-Range, also keine Zugangsdaten, erfolgte, haben wir eine Implementierung für den Zugang über HTML-Form-Tags ausgelassen. Crawling und Parsing werden von den folgenden Klassen realisiert: Crawler.java Former.java CrawlFromFile.java Profile2File.java Kurze Erläuterung: Former.java beinhaltet alle Parser-Methoden. Crawler.java crawlt und parst gleichzeitig. Wenn man die Profilseiten der Hoppenstedt-Datenbank speichern möchte, so kann man dies mit der Profile2File.java machen. Die Seiten werden als HTML-Seiten im Ordner „data“ abgelegt. Anschließend kann man mit CrawlFromFile auf diese Dateien zugreifen und so ebenfalls crawlen und Parsen. Alle Methoden in diesen Klassen sind mit JavaDoc kommentiert. Enthalten sind eine kurze Beschreibung, sowie Informationen über Eingabe- und Ausgabeformate. 16 5.2.2 Programminterner Ablauf´ HTTP-Request an Webserver Profilseite öffnen, mit Former.allFromProfile parsen und DTO erzeugen Server liefert Startseite mit SessionID im Frameset Links zu Profilseiten mit Former.getProfilLi nks lesen Öffnen einiger CGI-Skripte um den Webserver davon zu überzeugen dass man ein HTML-Client ist (Firefox) SessionID mit Former.getSessio nID auslesen Ergebnisseite aufrufen Suchanfrage stellen Ja Nächste 20 Profile DTO an DBKlasse übergeben Gibt es noch Profilseiten ? Nein Ende 5.2.3 Die Klasse Former.java Siehe JavaDoc. 5.2.4 Die Klasse Crawler.java Die Klasse Crawler.java benutzt den Jakarta HTTP-Client um mit dem Hoppenstedt-DBWebserver zu kommunizieren. Er gibt sich als Firefox-Browser zu erkennen um nicht geblockt zu werden. Es werden zu Anfang die Session-ID ausgelesen und einige HTML-Seiten und CGI-Scripts aufgerufen, die der Server beobachtet um das Crawlen zu verhindern bzw. zu erschweren. Beispiel eines GET-Requests: method=new GetMethod(host+"/bottom.htm"); method.addRequestHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); method.addRequestHeader("Keep-Alive","300"); method.addRequestHeader("Connection","Keep-Alive"); method.addRequestHeader("Cache-Control","max-age=0"); method.addRequestHeader("Refrerer",host+"start.htm"); client.executeMethod(method); 17 5.2.5 Die Klasse Profile2File.java Profile2File.java macht im Grunde nach das gleiche wie Crawler.java, aber schreibt den Response in HTML-Dateien und legt diese im Ordner data ab. Der Ordner data sollte bereits vorher angelegt sein, da im Code darauf verzichtet wurde den Ordner, sofern er noch nicht existieren sollte, anzulegen. Die Dateinamen werden inkrement vergeben. Angefangen bei 0.html. Detailierte Informationen zu den einzelnen Methoden der Klassen stehen im JavaDoc. HTTP-Request an Webserver Server liefert Startseite mit SessionID im Frameset Links zu Profilseiten mit Former.getProfilLi nks lesen Profilseite als HTML speichern Öffnen einiger CGI-Skripte um den Webserver davon zu überzeugen dass man ein HTML-Client ist (Firefox) SessionID mit Former.getSessio nID auslesen Ergebnisseite aufrufen Suchanfrage stellen Ja Nächste 20 Profile Gibt es noch Profilseiten ? Nein Ende 5.2.6 Die Klasse CrawlFromFile.java Sofern der Ordner data bereits mit HTML-Dateien gefüllt ist, so greift diese Klasse darauf zu, parst den Inhalt und erzeugt DTO-Objekte, die dann der DB-Klasse übergeben werden. Die Dateinamen und -endungen sind dabei egal. Es werden alle im Ordner befindlichen Dateien der Reihe nach abgearbeitet. Öffnen des Ordners Öfnnen der HTMLDatei Ja Profilseite mit Former.getProfilLinks parsen DTO erzeugen Gibt es noch Profilseiten ? DTO an DBKlasse übergeben Nein Ende 18 5.3 Package db 5.3.1 DTO-Klassen Database-Transfer-Objects; diese Klassen “verkörpern” jeweils eine Tabelle der Datenbankstruktur, d.h. jede Klasse hat die Attribute, die auch die Tabelle hat, die sie „verkörpert“. Dazu enthält sie noch 3 Konstruktoren: Standard-Konstruktor (erzeugt leeres Objekt). Konstruktor mit ResultSet als Parameter um aus einer selektierten Tabellenzeile ein Objekt zu erzeugen). Konstruktor mit Einzelparameter zum „manuellen“ erzeugen und initialisieren eines Objektes . Ansonsten verfügen diese Klassen noch über die nach den Java-Bean-Konventionen üblichen getter- und setter-Methoden. Beispiel: FirmenProfilDTO 5.3.2 Klasse db.DBObject Klasse, die über eine von ihr erzeugten Instanz eine Datenbankverbindung aufbaut, und diese über die Objektmethode getConnection() zurückgibt. Sie enthält 2 zentrale Methoden: getConnection() -> liefert SQL-Connec tion (java.sql.Connection) zurück getDataSource()-> liefert Datasource auf die DB, mit welcher Prefuse direkt auf der DB arbeiten kann. 5.3.3 DB-Klassen Zu jeder DTO-Klasse gibt es auch eine DB-Klasse. Diese DB-Klasse stellt Methoden zur Verfügung, die die für die Anwendung wichtigen Datenbank-Aktionen auf die dazugehörende Tabelle erledigen (z.B. finde alle, finde nach ID, finde nach Name, füge ein…) Die Abfrage-Methoden liefern je nach Logik entweder ein DTO zurück oder eine Collection (java.util.LinkedList) mit mehreren DTOs zurück. Die Methode zum einfügen hat ein DTO als Parameter. Zusätzlich verfügen die DB-Klassen über Abfrage-Methoden, die ein Table-Objekt zurückliefert, welches direkt von Prefuse verarbeitet werden kann. Beispiel: FirmenProfilDB 19 5.4 Package action Hier befinden sich die Klassen, die für das action-Handling zuständig sind. Jede Action-Klasse verfügt über ein Objekt der Klasse MainGui (Haupt-User-Interface) und einen Konstruktor, dem man die zur Laufzeit aktuelle Instanz der Klasse MainGui übergeben kann. In diesem Konstruktor wird das Main Gui Objekt somit mit der aktuellen Instanz initialisiert. Enthaltene Klassen: 5.4.1 action.DoLineWrapListener.java Erzeugt in der Visualisierung in den Firmen- bzw. Personennamen einen Zeilenumbruch oder entfernt diesen wieder. 5.4.2 action.ItemControlListener.java Action-Handling bei Mausklick auf ein Item in der Visualisierung, es werden im Infofeld Informationen textuell zum angeklickten Item angezeigt: Beim Klick auf eine Person werden Firmen um diese angezeigt, in welchen deren Namen auch noch auftauchen. Beim Klick auf Firmen-Items 2. Grades wird diese den Mittelpunkt gerückt und der Visualisierungsvorgang beginnt sozusagen von neuem. 5.4.3 SearchBodListener.java Action-Handling für das Klicken des Suchen-Button unter dem Reiter „Aufsichtsrat“; es wird nach den eingegebenen Parametern in der DB gesucht und die Liste unter dem Suchen -Button wird mit den Ergebnissen gefüllt… Beim Klicken mit leeren Suchparametern werden alle Aufsichtsräte aus der Datenbank angezeigt. 5.4.4 SearchCompListener.java Action-Handling für das Klicken des Suchen-Button unter dem Reiter „Unternehmen“; es wird nach den eingegebenen Parametern in der DB gesucht und die Liste unter dem Suchen -Button wird mit den Ergebnissen gefüllt… Beim Klicken mit leeren Suchparametern werden alle Firmen aus der Datenbank angezeigt. 5.4.5 SearchDirectorListener.java Action-Handling für das Klicken des Suchen-Button unter dem Reiter „Vorstand“; es wird nach den eingegebenen Parametern in der Datenbank gesucht und die Liste unter dem Suchen Button wird mit den Ergebnissen gefüllt… Beim Klicken mit leeren Suchparametern werden alle Vorstände aus der Datenbank angezeigt. 5.4.6 SearchTownListener.java Action-Handling für das Klicken des Suchen-Button im Infofeld unter „Weitere Firmen im Ort“ ; es werden in der Datenbank alle Firmen gesucht, die auch im selben Ort ihren Sitz haben, wie die Firma, von welcher gerade die Infos angezeigt werden. Di e Ergebnisliste wird wie gewohnt mit den gefunden Firmen gefüllt. 5.4.7 SelectButtonListener.java Action-Handling für das Klicken des „Auswahl anzeigen“-Button unter der Ergebnisliste die ausgewählten Ergebnisse werden somit in dem Visualisierungs -Panel visuell dargestellt. 20 5.4.8 ShowStatsListener.java Action-Handling für Klick auf Button „anzeigen“ im Infofeld unter „Statistiken:“. Es wird eine Statistik in einem neuen Frame angezeigt, welche zu der aktuellen Firma den Umsatz- und den Beschäftigtenzahlen-Verlauf im Vergleich in Form einer Line-Chart darstellt. 5.4.9 SResultSele ctionListener.java Action-Handling für das anklicken eines Items der Ergebnisliste; es weden Infos im Infofeld angezeigt. 5.5 Package Helper In diesem Package befinden sich 3 Hilfsklassen: 5.5.1 Umsatz Mit dieser Klasse können „Umsatz-Konstrukte“ erzeugt werden (Jahr/Wert), die das verarbeiten der Umsätze im Crawler vereinfachen. 5.5.2 KUmsatz Mit dieser Klasse können „Konzernumsatz-Konstrukte“ erzeugt werden (Jahr/Wert), die das verarbeiten der Umsätze im Crawler vereinfachen. 5.5.3 Tools In dieser Klasse befinden sich hilfreiche statische Methoden, die beim Programieren der restlichen Klassen unterstützen: int generateID() generiert eine zufällige ID für einen Eintrag in die Tabelle „Firma“ boolean clearDB(boolean doBackUp) Leert die Datenbank (etwa vor einem neuen Crawling-Vorgang) und erstellt vorher je nach Wert von doBackUp ein Backup des alten Datenbank-Skripts. boolean createDBBackUp() erstellt ein Backup des alten Datenbank-Skripts. int getMaxValue(Collection[] values) gibt die längste Listenlänge für ein Array mit Listen zurück int getMinValue(Collection[] values) gibt die küzeste Listenlänge für ein Array mit Listen zurück int getMinValue(Collection values) gibt die küzeste Listenlänge für eine Liste mit Listen zurück 21 String removeChar(String string, char c) Entfernt aus dem übergebenen String ein beliebiges Zeichen c Collection mergeLists(Collection[]lists) Fügt beliebig viele Listen zusammen zu einer, so dass jeder Listeneintrag nur einmal in der Ergebnisliste vorkommt. String createLineWrap(String source, int length) Fügt in einem übergebenem String source nach length Zeichen ein Esc- Zeichen für einen Zeilenumbruch (“\n”) ein 22 6. Ablaufdiagramm Crawler.class DTO-Objekt FirmenProfilDTO.class www.Hoppenstedt-Datenbank.de Geparste Infos Firmen-Profilseite HTML-Code FirmenprofilDB.class Former.class HSQL-Datenbank Daten beschaffen Visualisierungsanwendung 23 7. Styleguide 7.1 Farbgebung Die Farbgebung der Anwendung wird über das PlugIn Substance lookAndFeel geregelt. Hierzu lassen sich weitere Themen verwenden. Folgendes Thema wurde bei infra$tat verwendet: org.jvnet.substance.skin.SubstanceOfficeSilver2007LookAndFeel folgende Hauptfarben kommen hierbei zur Verwendung: d1d9e0 d 1 e8ecef d [ 9 G ee990000 0 b eb87112 n S i 7.2 Schriftarten e Als Schriftarten kommt die Systemschriftart „Tahoma“ zur Verwendung. e i n 7.3 Icons Z i Programm-Start-Icon t a t Unternehmen a u s Aufsichtsratsmitgliedd e m D o k Vorstandsmitgliedu m e n Auswahllogo (Geldsack)t o d e r d i e Z u s 24 Screenshots Mehrfa chauswahl von Untern ehmen Geöffnete Sta tistik 25 8. Kontakt 8.1 Das Team “FreeFace s” besteht aus drei Entwicklern Marc Rohe Florian Bielsky Michael Kabdebo 8.2 Supervisor Prof. Hendrik Speck Kurs: Medienkonzeption und Produktion im Wintersemester 2006/2007 Web: http://www.egs.edu/faculty/speck.html Fachhochschule Kaiserslautern Standort Zweibrücken Amerikastr. 1 66482 Zweibrücken Web: http://www.fh-kl.de 26