Home
Document
Contents
1. choiceChangedText newChoices CHOICEDATA void Teilt dem ARBEITSABLAUF mit dass der Text der Auswahl ge ndert wurde der neue Inhalt der Auswahlliste steht in der bergebenen Klasse CHOICEDATA choiceCancel void Teilt dem ARBEITSABLAUF mit dass der Text der Auswahl nicht ge ndert werden soll 9 6 Klasse DATAMANAGER extends java lang Object implements Cloneable Der DATAMANAGER Verzeichnis metamask dok ist die zentrale datenspei chernde Klasse von MetaMask Er ersetzt dadurch den Zugriff auf die Daten bank Hier sind s mtliche Informationen ber das Projekt und die bearbeitete Maske enthalten und k nnen vom ARBEITSABLAUF ausgelesen oder in ein Re sourceBundle geschrieben werden 9 6 Klasse DATAMANAGER 141 Attribute ProjectFullPath String Der voll qualifizierte Pfad des Projektes ProjectJavaPath String Der Pfad des Projektes ausgehend vom Java Wurzelverzeichnis ProjectName String Der Name des Projektes SkeletonFullPath String Der voll qualifizierte Pfad der Template Files tableOwner String Der Datenbankbesitzer der Tabelle die dem Projekt zugrundeliegt tableName String Der Name der Datenbanktabelle die dem Projekt zugrundeliegt primaryKeys Vector Der Vektor mit den Prim rschl sseln der Tabelle die dem Projekt zu grundeliegt layout Vector Der Vektor der die Zeilenvektoren der erzeugten Maske enth lt rbNumber int Die Nummer
2. Konstruktoren SQLAssistant con Connection Erzeugt einen neuen SQL SSISTANT zu der gegebenen Connection con Methoden checkForWritePermissions String Liest den n chsten Wert aus der entsprechenden Sequence in der Daten bank Gibt den Wert als String zur ck falls das Lesen erfolgreich war andernfalls wird ein String zur ckgegeben der als erstes Zeichen ein enth lt und zwar permission denied wenn das Lesen eine Exception geworfen hat der Account also keine Schreibrechte hat oder access error falls ein anderer Zugriffsfehler aufgetreten ist commit void F hrt ein Datenbank Commit durch wirft eine SQLException wenn dabei ein Datenbank Fehler auftritt commitDokument dok DOKUMENTDATENSATZ void Commitet den DOKUMENTDATENSATZ dok Ist das Dokument als gel scht markiert wird es vollst ndig aus der Datenbank gel scht Ist es modifiziert werden die neuen Werte in die Datenbank eingetragen Wirft eine SQLException falls ein Datenbank Fehler auftritt createDokumentDatensatz rs ResultSet DOKUMENTDATENSATZ Erzeugt einen DOKUMENTDATENSATZ indem die Daten aus dem Re sultSet rs gelesen werden Der Cursor im ResultSet muss in der gew nschten auszulesenden Zeile stehen Das ResultSet muss aus ei ner Anfrage stammen bei der die Spalten genau in der Reihenfolge stehen die durch getDokumentColumnNames vorgegeben ist Wirft eine SQLException falls ei
3. 7 46 Klasse RBMANAGER extends java lang Object Der RBMANAGER Verzeichnis shared net l dt und verwaltet die von einer Maske ben tigten ResourceBundles Dar ber hinaus werden h ufig ben tigte Funktionen auf ResourceBundles zur Verf gung gestellt Attribute rbCache Hashtable Cached die geladenen ResourceBundles unter ihrem Namen inAnApplet boolean Gibt an ob das Programm als Applet l uft hostname String Gibt den Hostnamen der Datenbank falls das Programm als Applet l uft alterLoc Vector Ein Vektor mit alternativen URLs unter denen nach ResourceBundles gesucht werden kann Konstruktoren RBManager Default Konstruktor leer da die Klasse nur statisch benutzt wird Methoden appendToLocalRB rbname String p String value String boolean F gt an einen Vektor in einem lokal vorhandenen ResourceBundle mit dem Namen rbname der durch das Pr fix p identifiziert wird den neuen Wert value an 108 Dokumentation der einzelnen Klassen appendToVectorFromRB rb ResourceBundle p String s String v Vector void Liest einen Vektor aus dem ResourceBundle rb der durch das Pr fix p identifiziert und das Suffix s ausgew hlt wird d h es werden die Werte pt 1 s pt 2 s usw gelesen und an den Vektor v angeh ngt appendToVectorFromRB rb ResourceBundle p String v Vector void Liest einen Vektor aus dem ResourceBundle rb
4. Konstruktoren SaveFrame parent Frame defaultFileName String textToSave String error Text String Erzeugt einen neuen SAVEFRAME der sich ber dem Frame parent be findet und den defaultFileName anzeigt Wenn der Benutzer den File namen akzeptiert wird der Text textToSave gespeichert tritt dabei ein Fehler auf wird der Text errorText ausgegeben Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces 7 48 Klasse SQLASSISTANT extends java lang Object Der SQLASSISTANT Verzeichnis dok wird von einem ARBEITSABLAUF be nutzt und erledigt die SQL bezogene schwierige Arbeit Attribute s_readDokument String Die Namen der Spalten in der Datenbankrelation f r das Auslesen der Datens tze Die Reihenfolge ist hiermit festgelegt 110 Dokumentation der einzelnen Klassen s_readColums String Ein String mit allen Spaltennamen der Tabelle durch Kommata ge trennt und mit dem Pr fix d versehen sa_insertNewDokument String Die Namen der Spalten der Datenbankrelation in der korrekten Reihen folge f r das Einf gen eines neuen Datensatzes Beginnt der String mit so wird nach vom Programm generierten Werten geschaut beginnt er mit so wird der Wert Null eingetragen sa_updateDokument String Die Namen der Spalten der Datenbankrelation f r das Aktualisieren eines modifizierten Datensatzes
5. Wie werden die Masken erweitert Die Maskenelemente sind im Hauptfenster Klasse FLITFRAME gespeichert f r die Methoden dieser Klasse und die der Maskenelemente sei auf die Dokumen tation in Kapitel 7 verwiesen 6 2 5 Fehlermeldungen Einige Fehlermeldungen k nnen durch ungenaue nderungen des ARBEITSAB LAUFES entstehen Dieser Abschnitt soll helfen bei bestimmten Fehlermeldun gen m gliche Ursachen zu finden e Internes ActionCommand AC nicht erwartet Dieser Fehlermel dung wird der aktuelle Programmzustand vorangestellt Ein ActionCom mand wurde an die Methode executeCommand bergeben ohne dass der aktuelle Zustand dessen Behandlung vorsah Dies kann gesche hen wenn die entsprechende Abfrage noch nicht oder nicht an der richtigen Stelle eingef gt wurde oder wenn der Knopf nicht deaktiviert wurde Die se Fehlermeldung tritt auch auf wenn ein Hotkey gedr ckt wurde der im A RBEITSABLAUF nicht behandelt wird e Internes ActionCommand AC im CheckMenulistener nicht er wartet Ein Checkbox Men eintrag wurde ausgew hlt dessen Action Command keiner Abfrage entsprach e Wenn eine NullPointerException in einer Programmzeile auftritt in der ein TEXTCOLITEM benutzt werden soll so wurde versucht dieses aus dem Hauptfenster zu holen und dabei wurde ein Name benutzt zu dem kein Maskenelement existiert Es kann sich bei dem gew nschten Ele ment auch um einen Knopf handeln denn diese werden getrennt von den an
6. e Datentyp Diese Auswahlliste setzt fest auf welchen Datentyp eine Ein gabe getestet werden soll e DB Datentyp Der Datentyp den die Spalte beinhaltet ist hier angege ben e L nge Diese L nge ist diejenige die in der Datenbank f r diese Spalte angegeben ist e NULL ausgeschlossen darf NULL sein Je nach dem ob die Daten bank den Wert NULL in dieser Spalte zul sst wird diese Anzeige gesetzt 3 5 Beschreibungen der einzelnen Felder des Hauptpanels Beschreibung des Layouts e sichtbar verborgen F r Datenbankspalten ist hier die M glichkeit ge geben sie aus der Maske auszublenden Wird dieser Wert auf verborgen gesetzt so werden s mtliche Layout Informationen ignoriert Es ist nur m glich solche Maskenelemente auszublenden bei denen der Wert nicht durch die Auswahl Eingabe bernehmen erzeugt wird vergleiche den Abschnitt ber dieses Feld weiter unten Au erdem k nnen vom Benut zer erg nzte Maskenelemente nicht ausgeblendet werden f r diese ist lediglich das Entfernen durch L schen m glich e Maskenzeile Position in der Zeile Diese beiden Felder geben die Posi tion des Maskenelements in der erzeugten Maske an Es ist nicht m glich in diese Felder Werte einzutragen daf r steht der folgende Knopf zur Verf gung e Umpositionieren Dieser Knopf ffnet ein Fenster in dem die neue Posi tion in der Maske angegeben werden kann f r eine genauere Beschreibung sei auf Abschnitt 3 6 ve
7. Die Masken der Flit Familie haben eine spezielle Technik f r Schreibrechte IN SERT UPDATE DELETE auf den zugrundeliegenden Datenbankrelationen die von Flit bernommen wurde Dazu wird in der Datenbank eine Sequenz mit dem Namen foo_readwrite f r die Maske foo angelegt auf die nur diejenigen Benutzer lesend zugreifen k nnen die auf der zur Maske geh renden Relation Schreibrechte haben sollen Loggt sich ein solcher Benutzer ein so z hlt die Sequenz um Eins weiter Der SQL Befehl um eine solche Sequenz f r eine Maske namens foo anzulegen ist der folgende create sequence foo_readwrite minvalue 1 maxvalue 999999999999 increment by 1 start with 1 cache 20 order nocycle 5 5 2 Die Rollen blicherweise sollten f r die verschiedenen Zugriffsarten auf die Datenbankre lationen die mit den Masken der Flit Familie m glich sind Rollen angelegt werden damit die entsprechenden Rechte einfach an Benutzer weitergegeben werden k nnen Es empfiehlt sich zwischen drei Rollen zu unterscheiden e nur lesender Zugriff Gast e lesender und schreibender Zugriff auf die Relation berechtigter Benutzer und e Zugriff auf die Relation und Rechtevergabe an der Sequenz Administra tor Die SQL Befehle mit denen diese Rollen f r eine Maske namens foo auf ei ner Datenbankrelation namens MAINTABLE eingerichtet werden sind die folgenden 58 Die Programmstruktur create role foo_guest grant select
8. berpr ft einen String dessen L nge eine gewisse Maximall nge nicht berschreiten soll und der weder Null noch noch der leere String sein darf in diesem Sinne steht im Namen NEQ f r not empty nor questionmark Konstruktoren FieldCheckerStringNEQ max int Erzeugt einen neuen FIELDCHECKERSTRINGNEQ der Strings mit ei ner Maximall nge von max akzeptiert Methoden check s String String berpr ft den String s dessen L nge eine gewisse Maximall nge nicht berschreiten darf und der weder der leere String noch Null noch sein darf R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Fehler auftrat 7 21 Klasse FIELDCHECKERSTRINGNQ extends FieldCheckerString Der FIELDCHECKERSTRINGNQ Verzeichnis shared dok berpr ft einen String dessen L nge eine gewisse Maximall nge nicht berschreiten soll und der nicht sein darf in diesem Sinne steht im Namen NQ f r not que stionmark Konstruktoren FieldCheckerStringNQ max int Erzeugt einen neuen FIELDCHECKERSTRINGNQ der Strings mit einer Maximall nge von max akzeptiert 84 Dokumentation der einzelnen Klassen Methoden check s String String berpr ft den String s dessen L nge eine gewisse Maximall nge nicht berschreiten darf und der nicht sein darf R ckgabewert ist die Klartextfehlermeldung oder Null f
9. bildung 5 1 hingewiesen das Tunneln durch MetaMask soll das Instantiieren 44 Die Programmstruktur Flit MetaMask Layout Templates neue m Masken Shared H O O O Abbildung 5 1 bersicht der einzelnen Programmgruppen der Templates zu den Klassen der neuen Maske veranschaulichen Die Zusammenh nge der zentralen Klassen werden in Abbildung 5 2 f r Flit und Abbildung 5 3 f r MetaMask dargestellt Bei Flit sind dabei die Klassen die relationsabh ngige Daten enthalten mit einem X markiert und solche die zus tzlich f r jede Maske erzeugt werden m ssen mit einem Wie schon aus diesen beiden Abbildungen zu erkennen ist sind die Zusam menh nge zwischen den einzelnen Klassen gering sie werden vielmehr zentral im ARBEITSABLAUF zusammengef hrt Das ist insbesondere der Fall f r die einzelnen separaten Fenster und ihre zugeh rigen Listener Interfaces die in den Abbildungen nicht alle einzeln aufgef hrt werden Die einzige Klassengruppe bei der etwas feinere Struktur vorhanden ist ist die der Maskenelemente diese Hierarchie ist gesondert in Abbildung 5 4 dargestellt Es sei hier noch erw hnt dass diese Klassen der graphischen Benutzeroberfl che s mtlich zu den Shared Klassen geh ren so dass diese Struktur f r alle erzeugten Masken und Meta Mask gilt Damit die oben erw hnten Template und Shared Klassen von den Pro grammen gefunden werden k
10. gabe gespeichert bzw der ursrp ngliche Zustand wiederhergestellt wird 36 MetaMask Benutzerhandbuch Kapitel 4 Litera Benutzerhandbuch Litera ist eine Instantiierung der Template Klassen f r die Literaturdatenbank Der Gro teil der Funktionalit t entspricht den Grundfunktionen die schon im Kapitel 1 beschrieben wurden Dar ber hinaus bietet Litera die M glichkeit B cher f r eine Bestellung vorzu merken oder als Einzelbestellung in einen Warenkorb aufzunehmen Diese Funk tionen sind ber das Men Bestellung erreichbar und werden in den Abschnit ten 4 2 und 4 3 genauer beschrieben Zun chst sollen die einzelnen Maskenelemente vorgestellt werden 4 1 Beschreibung der Maskenelemente DokNr die Dokumentnummer des angezeigten Dokuments sie ist zu sammen mit der Abteilung der Prim rschl ssel in der zugrundeliegenden Datenbankrelation Abteilung Angabe in welcher Abteilung IfI A B oder C das Dokument zu finden ist Erfassungsdatum hier wird eingetragen wann dieses Dokument in die Datenbank aufgenommen wurde Autoren Liste der Autoren des Dokuments Titel Angabe des Titels Jahr in welchem Jahr das Dokument ver ffentlicht wurde DokTyp von welchem Typ das Dokument ist book report master thesis etc Herausgegeben falls die Autoren nur Herausgeber sind wird das hier vermerkt Sprache Sprache in der das Dokument verfasst wurde 38 Litera Benutzerhandbuch e Reihe in welcher Zeitsch
11. void Wird aufgerufen wenn sich der Wert im TEXTCOLITEM source mit dem Namen name ge ndert hat der neue Inhalt ist nun text 7 42 Klasse LISTENDARSTELLUNGFRAME extends java awt Frame implements WindowListener ActionListener Der LISTENDARSTELLUNGFRAME Verzeichnis shared ui ist ein Fenster der Masken das eine mit dem Listenassistenten erstellten Ergebnisliste anzeigt Konstruktoren ListendarstellungFrame s String font Font editable boolean wrap boolean inAnApplet boolean Erzeugt einen neuen LISTENDARSTELLUNGFRAME der den Font font benutzt und den Text s anzeigt Die TextArea ist editierbar wenn edi table auf True gesetzt ist und f hrt automatische Zeilenumbr che aus wenn wrap auf True gesetzt ist Der letzte Parameter inAnApplet gibt an ob das Programm als Applet l uft Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces 104 Dokumentation der einzelnen Klassen setDefaultFileName defaultFileName String void Setzt den Namen unter dem die Liste gespeichert wird solange vom Benutzer kein anderer Wert eingegeben wird auf default FileName windowActivated e WindowEvent void Implementation des WindowListener Interfaces leer windowClosed e WindowEvent void Implementation des WindowListener Interfaces schlie t den Frame windowClosing e WindowEvent void Implementation des WindowListener Interfaces schl
12. 7 56 Klasse TEXTCOLITEM 22 2 2 2 IE a 7 57 Interface TEXTCOLLISTENER 22 a En e Besonderheiten in der Implementation von Flit 8 1 Klasse DOKUMENTINDOK 2 2 aaa 8 2 Klasse DOKUMENTSCHLAGWOERTER 2 2 2 2 nn nennen 8 3 Klasse EXPRSCHLAGWORTPARSER 2 2 2 2 nme 8 4 Klasse SCHLAGWORT 2 2 m m nn 8 5 Klasse SCHLAGWORTOANVAS aoaaa 8 6 Klasse SCHLAGWORTFRAME 2 2 m nn nenn 8 7 Interface SCHLAGWORTLISTENER gt aso coo nun 8 8 Klasse ARBEITSABLAUF Erweitert 2 222222 8 9 Klasse DOKUMENTDATENSATZ Erweitert 2 2 222 8 10 Klasse SQLASSISTANT Erweitert 2 22222 8 11 Klasse SUCHERGEBNIS Modifiziert 222222202 8 12 ResourceBundle Sprache properties Erweitert Besonderheiten in der Implementation von MetaMask 9 1 eine andere Aufgabe 2 mn 9 2 Klasse ARBEITSABLAUF 2 2 m Emm 9 3 Klasse CHOICEDATA 2 2 Comm 9 4 Klasse CHOICEEDITFRAME 2 C nn nn nn 9 5 Interface CHOICEEDITLISTENER 2 9 6 Klasse DATAMANAGER 22mm nn 9 7 Klasse FIELDENTRY 2 2 2 CC on nn n nn 9 8 Klasse REPOSITIONFRAME Cm nn nn 9 9 Interface REPOSITIONFRAMELISTENER 2 222 22 9 10 Klasse SQLASSISTANT 2 2 m Emm nn 9 11 Klasse ABLAUFVERWALTER Erweitert 22 222 222 9 12 Klasse FLITLOGINFRAME Erweitert 22222220 INHALTSVERZEICHNIS 10 Besonderheiten in der Implementation von Litera 153 10 1 die speziellen Anforderungen 2 2 m mn nn 153 1
13. Achtung Das SUCHERGEBNIS ist thread safe ob die Datenbanktreiber thread safe sind ist eine andere Frage Attribute rs ResultSet Das zugeh rtige ResultSet rsmd ResulSetMetaData Die Meta Daten des ResultSets closed boolean Gibt an ob dieses SUCHERGEBNIS geschlossen ist erg Vector Vektor zum Speichern der DOKUMENTDATENS TZE endReached boolean Gibt an ob bereits das Ende im ResultSet erreicht wurde 114 Dokumentation der einzelnen Klassen Konstruktoren SuchErgebnis rs ResultSet stmt Statement sqla SQLASSISTANT Erzeugt ein neues SUCHERGEBNIS zum ResultSet rs Das bergebe ne Statement stmt wird geschlossen nachdem das ResultSet geschlos sen wird ansonsten wird es nicht benutzt und darf auch Null sein Das SUCHERGEBNIS versucht sofort den ersten DOKUMENTDATENSATZ vom ResultSet einzulesen Falls das gegebene ResultSet leer ist schlie t sich das SUCHERGEBNIS sofort selbst Methoden close void Schlie t das SUCHERGEBNIS und seine Datenbank Resourcen wie das ResultSet und das Statement Beim Schlie en eventuell auftretende SQLExceptions werden abgefangen und ignoriert commit void Commited das SUCHERGEBNIS indem jedes Dokument einzeln aus der Datenbank gel scht wird bzw Modifikationen bertragen werden Da nach wird ein Datenbank Commit ausgef hrt Konnte dies erfolgreich ausgef hrt werden sind damit alle Modifikationen endg l
14. DOKUMENTDATENSATZ void L scht das Dokument dok aus der Datenbank Wirft eine SQLExcepti on falls ein Datenbank Fehler auftritt updateDokument dok DOKUMENTDATENSATZ void Aktualisiert den modifizierten DOKUMENTDATENSATZ dok in der Da tenbank Wirft eine SQLException falls ein Datenbank Fehler auftritt 7 49 Klasse SQLQUERY extends java lang Object Die Klasse SQLQUERY Verzeichnis dok wird von einem ARBEITSABLAUF benutzt Sie kann aus gegebenen KRITERIEN erzeugt durch weitere KRITERIEN verfeinert oder erweitert werden und gibt die entstehende Anfrage SQL konform zur ck Konstruktoren SQLQuery KRITERIEN k Erzeugt einen neue SQLQUERY aus den KRITERIEN k Falls das KRITERIEN Objekt Werte enth lt die nicht korrekt geparst werden konnten werden diese Werte ignoriert Methoden add KRITERIEN k void Erweitert die SQLQUERY durch weitere KRITERIEN Falls das KRITERIEN Objekt Werte enth lt die nicht korrekt geparst werden konnten werden diese Werte ignoriert getSQLCmd orderby String String Liefert einen String mit dem SQL Befehl Der Parameter orderby enth lt einen oder mehrere durch Kommata getrennte Spaltennamen nach denen sortiert werden soll refine KRITERIEN k void Verfeinert die SQLQUERY durch weitere KRITERIEN Falls das KRITERIEN Objekt Werte enth lt die nicht korrekt geparst werden konnten werden diese Werte ignoriert 7 50 Klasse SUCHERGEBNI
15. HECKERFLOAT testet einen bergebenen String auf eine enthalte ne Kommazahl mit Vor und Nachkommastellen e FIELDCHECKERFLOATNE testet einen bergebenen String auf eine ent haltene Kommazahl mit Vor und Nachkommastellen und auf nicht leer e FIELD HECKERYEAR testet einen bergebenen String auf eine vierstellige Jahreszahl Feldtester f r Ausdr cke e EXPRPARSER parst einen Ausdruck der Klammern sowie die Zeichen amp f r und und f r oder enthalten darf und bersetzt ihn in SQL e EXPRSTRINGPARSER parst einen Ausdruck und erzeugt eine entsprechen de SQL Ausgabe LIKE wobei auch NULL beachtet wird e ExPRINTPARSER parst einen Ausdruck mit Vergleichsoperatoren und Be reichsangaben der Form a b wobei auch NULL beachtet wird 50 Die Programmstruktur e EXPRERFDATUMPARSER parst einen Ausdruck mit Vergleichsoperatoren und Zeit Einheiten 5 3 Grundklassen templates In den Verzeichnissen der Templates liegen nat rlich einerseits diejenigen Klas sen die Metadaten der speziellen Datenbankrelation enthalten sollen Anderer seits liegen dort auch solche Klassen die auf Klassen der ersten Art zugreifen da sie auf eine spezielle Instantiierung des Klassentemplates zugreifen m ssen k nnen sie nicht in das Verzeichnis shared abgelegt werden Es ist wahrschein lich m glich abstrakte Grundklassen f r die Daten enthaltenden Klassen zu schaffen
16. Klasse speichern 7 40 Klasse LisT Ass sTANTFRAME extends java awt Frame implements WindowListener ActionListener ItemListener TextColListener ListFrameListener Der LISTASSISTANTFRAME Verzeichnis shared ui ist ein selbst ndiges Fen ster der Masken das einen Assistenten zur Erstellung einer Liste aus einem Suchergebnis bereitstellt Konstruktoren ListAssistantFrame lal LISTASSISTANTLISTENER font Font all boolean edi table boolean wrap boolean separate boolean isApplet boolean Erzeugt einen neuen LIST SSISTANTFRAME der den Font font benutzt und die entsprechenden Events an den LISTASSISTANTLISTENER lal weitergibt Die anderen Parameter geben an ob zu Beginn gesamtes Suchergebnis all editierbar editable automatischer Zeilenum bruch wrap oder Leerzeile einf gen separate selektiert sein sollen Der letzte Parameter gibt an ob das Programm als Applet l uft Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces displayAndToFront void Macht diesen LiSTASSISTANTFRAME sichtbar und bringt ihn nach vor ne enableOK ok boolean void Aktiviert oder deaktiviert den OK Knopf je nach Wert von ok enableSave saveable boolean void Aktiviert oder deaktiviert den Save Knopf je nach Wert von saveable executeListCommand ac String flf FLiTLiSTFRAME name String value String v
17. Neueingabe Die Funktionen dieser Zust nde k nnen direkt aus Kapitel 1 bertragen werden 3 3 Das MetaMask Hauptfenster ne Fe I om som A pe o O O e Parere neroa OOOO e Eingabe bernehmen __auto Wilkicards _ often f r Updates _ ES Abbildung 3 2 Das MetaMask Hauptfenster 30 MetaMask Benutzerhandbuch Das Hauptpanel siehe Abbildung 3 2 besteht aus den selben Maskenelemen ten wie das der erzeugten Masken f r deren Beschreibung kann daher auf Abschnitt 1 3 1 verwiesen werden Die Statuszeilen entsprechen ebenfalls denen der erzeugten Masken bis auf den Unterschied dass die Informationen ber das Einlesen der Daten entfallen denn diese werden komplett im Speicher gehalten und brauchen nicht aus der Daten bank nachgeladen zu werden Die Men zeile ist eine verkleinerte Fassung der Men zeile wie sie in Abschnitt 1 3 4 beschrieben wurde Die Funktionen die entfielen sind haupts chlich die jenigen die sich auf das Suchen in der Datenbank beziehen Dar berhinaus ist die Funktionalit t des Men s Dokument auf das Men Maskenelement zu bertragen Allerdings ist es nicht m glich Elemente zu l schen die zu Spalten in der Datenbankrelation geh ren diese k nnen aber als in der Maske unsicht bar deklariert werden sollte dies gew nscht sein Besondere Erw hnung finden sollen hier die drei M glichkeiten auf ein anderes Maskenelement zu wec
18. dann eine Exception geworfen falls es nicht gefunden werden konnte wenn mustFind auf True gesetzt ist getVectorFromRB rb ResourceBundle p String Vector Liest einen Vektor aus dem ResourceBundle rb der durch das Pr fix p identifiziert wird d h es werden die Werte p 1 pt 2 usw gelesen und in einem Vektor gespeichert getVectorFromRB rb ResourceBundle p String s String Vector Liest einen Vektor aus dem ResourceBundle rb der durch das Pr fix p identifiziert und das Suffix s ausgew hlt wird d h es werden die Werte pt 1 s pt 2 s usw gelesen und in einem Vektor gespeichert 7 47 Klasse SAVEFRAME 109 setAlterLoc loc Vector void Setzt einen Vektor von alternativen URLs um nach ResourceBundles zu suchen Der RBMANAGER verwendet dann u U weitere Methoden um ResourceBundles zu laden setInAnApplet hostname String void Teilt dem RBMANAGER mit dass das Programm als Applet l uft und setzt den Hostnamen auf hostname Der RBMANAGER verwendet dann u U andere Methoden um ResourceBundles zu laden createRB name String ResourceBundle Holt ein ResourceBundle wobei das zuerst lokal und dann an den ein zelnen URLs des Vektors alterLoc versucht wird 7 47 Klasse SAVEFRAME extends java awt Frame implements ActionListener Der SAVEFRAME Verzeichnis shared ui ist ein Fenster der Masken das auf gerufen wird wenn ein Text gespeichert werden soll
19. ffnet e TEXTCOLCHOIGE ist abgeleitet von TEXTCOLFIELD und stellt eine Aus wahlliste dar e FLITSPEEDBAR die Anzeige mit Kn pfen f r das Einlesen der Datens tze im Hintergrund oe FLITTEXTFIELD erweitert TextField in dem Sinne dass es den Fokus nur akzeptiert wenn es editierbar ist Die Programmstruktur Panels e FLITTEXTPANEL das Hauptpanel das die Maskenelemente enth lt Dialoge amp Fenster e FLITERRORDIALOG stellt ein Fenster mit nicht editierbarem Text und Buttons zum schlie en zur Verf gung e FLITINFOFRAME stellt ein Fenster mit nicht focussierbarem Text und ei nem Button zum schlie en zur Verf gung e FLITLISTFRAME ein Fenster das eine Liste aus einem Vector enth lt e SAVEFRAME ein Fenster das die Eingabe eines Filenames erwartet und einen Text speichert e LISTENDARSTELLUNGFRAME ein Fester das die Ausgabe des Listen Assi stenten enth lt e EXPERTSQLEDITOR ein Fenster das die M glichkeit zum Editieren einer SQL Anfrage bietet mit entsprechenden Buttons e FLITFRAME das Hauptfenster das ein FLITTEXTPANEL eine FLITBUT TONBAR ein Menu Statuszeilen und eine FLITSPEEDBAR enth lt e LiSTASSISTANTFRAME das Fenster des Listen Assistenten verarbeitet die an es gegebenen Kommandos selbst Listener e LISTFRAMELISTENER wird aufgerufen wenn ein Befehl in einem FLIT LISTFRAME ausgef hrt werden soll e FLITKEYLISTENER erweitert die Java Klasse KeyListener um die M glich keit Tas
20. gew hlt werden k nnen wird im MetaMask Hauptfenster durch den Eintrag K rzel f r Listen festgelegt Au erdem zeigt der ListenAssistent eines dieser Listenformate schon beim ff nen des Fensters an in Sprache properties wird auch eingestellt welches dies ist und zwar mittels eines Eintrags der Form list format default X wobei X die Nummer des gew nschten Listenformates angibt 6 1 2 das OrderBy Men Die Auswahl in welcher Ordnung das Suchergebnis einer Anfage ausgegeben werden soll findet sich als Untermen des Men s Anfrage Die m glichen Spalten die als Sortierkriterien anw hlbar sein sollen k nnen im Resource Bundle Sprache properties beim Label EDIT ORDER_BY eingegeben werden Die Form dieser Angaben ist dok menu anfr 1 Y ZZ TEXT wobei Y die laufende Nummer dieses Untermen s ist F r ZZ sind f r jeden Eintrag drei Werte mit den entsprechenden Texten anzugeben Dies sind e ty Der Typ muss jeweils auf c gesetzt werden damit dieser Men eintrag als Checkbox erkannt wird e ui Dies ist der Text der im Men angezeigt wird hier sollten deshalb die Spaltennamen mit benutzerfreundlichen Namen angegeben werden e ac Das ActionCommand muss mit dem String ORDERBY_ beginnen damit es der Arbeitsablauf als zu diesem Men geh rig erkennt Daran anschlies send m ssen die Namen der Spalten angegeben werden getrennt durch Kommata aber ohne Leerzeichen Diese Angabe ist diejenige die in der SQ
21. gt x TextColField S MA TextColltem I FitStrich FitTextField Abbildung 5 4 Modell der graphischen Elemente 5 2 Grundklassen shared 47 e dok f r das Hauptprogramm die SQL Anfragen die Daten enthaltenden Klassen und Eingabepr fer In den n chsten zwei Abschnitten sollen die einzelnen Klassen erw hnt und ihre Funktion umrissen werden genauere Dokumentation findet sich in Anhang 7 5 2 Grundklassen shared 5 2 1 Verzeichnis dbis mask shared ui Interfaces e FLITFOCUSLISTENER wird aufgerufen wenn der Fokus erhalten oder ver loren wurde e TEXTCOLLISTENER wird aufgerufen wenn sich der Wert eines Textes ge ndert hat e CHECKMENULISTENER wird aufgerufen wenn ein CheckBoxMenultem ge ndert wurde e COMMANDLISTENER wird aufgerufen wenn ein Befehl eingegeben wurde Die Maskenelemente e FLITBUTTON erweitert Button um eine H henangabe e FLITBUTTONBAR sammelt FLITBUTTONS in ein Panel e FLITSTRICH der FLITSTRICH geh rt zu einem Maskenelement und zeigt dessen Status modifiziert fehlerhaft deaktiviert an e TEXTCOLITEM diese abstrakte Klasse bildet die Grundklasse f r alle Mas kenelemente sie enth lt bereits einen FLITSTRICH und kann den Fokus annehmen e TEXTCOLFIELD ist abgeleitet von TEXTCOLITEM und stellt ein einfaches Textfeld dar e TEXTCOLFIELDWITHLIST Ist abgeleitet von TEXTCOLFIELD und erwei tert dessen Funktionalit t um den Knopf der das Listenfenster
22. infotext String button text String Erzeugt einen FLITERRORDIALOG mit dem Titel title der einen auch l ngeren mehrzeiligen Text infotext und einen Button zum Schlie en des Dialogs anzeigt der die Bezeichnung buttontext tr gt Der Frame parent ist blockiert so lange der Dialog ge ffnet ist Das Dialogfenster wird so auf dem Bildschirm positioniert dass es zentriert ber dem pa rent Frame erscheint ohne sich jedoch ber den Bildschirmrand hinaus zu erstrecken FlitErrorDialog parent Frame font Font title String infotext String buttontexte String defbutton int Dieser Konstruktor unterscheidet sich von dem vorangegangenen nur dadurch dass der erzeugte FLITERRORDIALOG mehrere Buttons enth lt die zum Schlie en benutzt werden k nnen Die Beschriftungen der Buttons werden von links nach rechts in buttontexte bergeben der Default Button kann mittels defbutton angegeben werden wobei der erste Button die Nummer 0 tr gt Methoden actionPerformed a ActionEvent void Implementation des ActionListener Interfaces getResult int Liefert die Nummer des Buttons mit dem der Dialog geschlossen wurde wobei der erste Button die Nummer 0 tr gt 7 28 Interface FLITFOCUSLISTENER Der FLITFOCUSLISTENER Verzeichnis shared ui ist ein abstraktes Interface das aufgerufen wird wenn der Focus erhalten oder verloren wurde Methoden focusChanged ac String have boolean
23. lenzahl nicht berschreiten soll Erlaubte Werte sind auch noch Null sowie der leere String Konstruktoren FieldCheckerlnt Erzeugt einen neuen FIELDCHECKERINT der maximal 8 Stellen akzep tiert FieldCheckerInt max int Erzeugt einen neuen FIELDCHECKERINT der maximal max Stellen ak zeptiert Methoden check s String String berpr ft den String s der eine Integerzahl enthalten soll R ckgabe wert ist die Klartextfehlermeldung oder Null falls kein Fehler auftrat 7 17 Klasse FIELD HECKERINTNE extends FieldCheckerInt Der FIELDCHECKERINTNE Verzeichnis shared dok berpr ft einen String der eine Integerzahl enthalten soll deren Stellenzahl eine gewisse maximale Stel lenzahl nicht berschreiten soll Nicht erlaubt sind hier Null und der leere String in diesem Sinne steht der Name NE f r not empty Konstruktoren FieldCheckerIntNE max int Erzeugt einen neuen FIELDCHECKERINTNE der maximal max Stellen akzeptiert 82 Dokumentation der einzelnen Klassen Methoden check s String String berpr ft den String s der eine Integerzahl enthalten soll R ckgabe wert ist die Klartextfehlermeldung oder Null falls kein Fehler auftrat 7 18 Klasse FIELD HECKERSTRING extends FieldChecker Der FIELDCHECKERSTRING Verzeichnis shared dok berpr ft einen String dessen L nge eine gewisse Maximall nge nicht bers
24. selbstverst ndlich bekannt sein um welchen Datentyp es sich in diesem Feld handelt Durch die hnlichkeit dieser Informationen zu denen im DOKUMENTDATEN SATZ kommt es zu etwas Redundanz in den Klassen die allerdings so schon in Flit auftritt und deshalb noch nicht entfernt wurde DEF_LIST Hier werden die Namen der Spalten in der Form public static final String NAME NAME abgelegt Es sei hier bemerkt dass die Spalte ROWID nicht vokommt ALL_ARRAY Eine Aufz hlung aller Spaltennamen Konstanten SET_PARSERS An dieser Stelle in der Konstruktormethode werden den Feldern mit Hil fe der nachfolgenden privaten Methoden addXXX die entsprechenden ExPRPARSER Klassen siehe Abschnitt 5 2 3 zugeordnet 5 4 3 Klasse SQLASSISTANT Die Modifikationen im SQLASSISTANT werden fast alle von MetaMask vorge nommen Ver nderungen von Hand sind nur notwendig wenn das Programm einige Werte selbst ndig ermitteln soll Details hierzu finden sich in Kapitel 6 Der SQL Assistent bernimmt die Konstruktion von SQL Anfragen Daf r muss die Datenbankrelation spezifiziert werden und au erdem m ssen die Spalten in der Relation in der richtigen Reihenfolge angegeben werden sowie diejenigen die aktualisiert werden k nnen und welche als NULL oder als programmge nerierter Wert eingef gt werden sollen Dar ber hinaus wird das Schreibrecht des Benutzers auf der Datenbankrelation berpr ft 54 Die Programmstruktu
25. 47 7 48 7 49 7 50 7 51 7 52 7 53 7 54 lasse FIELDCHECKERYEAR oaaae 84 nn en EaR 84 lasse FLIT PPLET 2 2 2 Coon nn 85 lasse FEITBUTTON 2222 aA san warnend 85 lasse FLITBUTTONBAR 2 86 lasse FLITERRORDIALOG 2 2 non 86 terface FLITFOCUSLISTENER 2 2 22mm 87 lasse FLITERAME au an a a nen aaa ee 88 lasse FLITINFOFRAME 2 2 CC onen 91 lasse FLITKEYLISTENER 2 2 on nn 92 lasse FLITLISTFRAME 2 2 Coon nn 93 lasse FLITLOGINFRAME 2 2 on nn 95 lasse FLITSPEEDBAR 2 2 CE nn 96 lasse FLITSTRICH opono Coon 96 lasse FLITTEXT REA 2 2 Coon 98 lasse FLITTEXTFIELD 2 22 Coon 98 lasse FLITTEXTPANEL 2 22 Coon 98 lasse KRITERIEN 2 2 on non nn 99 lasse LIST ASSISTANTFRAME 2 m nn nenn 101 terface LIST SSISTANTLISTENER oaoa 103 Klasse LISTENDARSTELLUNGFRAME 2 2 2 nn 103 terface LISTFRAMELISTENER 2 2 2 22mm 104 lasse LISTMANAGER 2 2 22 on nn 104 lasse LOGINMANAGER 2 2 2 Enno L 106 lasse RBMANAGER 22 nm mn n nen 107 lasse SAVEFRAME 2 nm mn nn 109 lasse SQLASSISTANT 2 2 LEE m En 109 lasse SQLQUERY refarat au Inn 112 lasse SUCHERGEBNIS 2 Cm En nn 113 lasse SUCHERGEBNISCURSOR 2 2m nn 116 lasse TEXTCOL REA 2 2 2 Coon nn 116 lasse TEXTCOLCHOICE 2 2 nn 117 lasse TEXTCOLFIELD 22 2 m oo nn 119 INHALTSVERZEICHNIS 8 9 7 55 Klasse TEXTCOLFIELDWITHLIST 222 2 I E22 nn
26. FLITSTRICH Liefert den FLITSTRICH dieses TEXTCOLITEMS Diese Funktion wird ausschlie lich dazu ben tigt den FLITSTRICH beim Konstruieren der Benutzeroberfl che in einen Container einf gen zu k nnen HgetText String Liefert den aktuellen Wert des Textes HgetUlName String Liefert den UINamen dieses TEXTCOLITEMS Es ist ein String ohne f hrende oder abschlie ende Leerzeichen anhand dessen der Benutzer dieses Feld identifizieren kann HisEditable boolean Gibt an ob das TEXTCOLITEM editierbar ist requestFocus void Setzt den Eingabe Fokus in dieses TEXTCOLITEM Diese Methode be kommt erst in den Unterklassen eine Funktion setCaretPosition pos int void Setzt die Cursorposition in diesem TEXTCOLITEM Diese Methode be kommt in der Unterklasse TEXTCOLFIELD eine Funktion setColorMode i int void Setzt die Farbe des FLITSTRICHES auf i setEditable editable boolean void Setzt das TEXTCOLITEM auf editierbar oder nicht editierbar je nach Wert von editable setFlitFocusListener flf FLITFOCUSLISTENER void Setzt einen FLITFOCUSLISTENER f r dieses TEXTCOLITEM Es ist nur ein einziger FLITFOCUSLISTENER pro TEXT OLITEM vorgesehen d h nur der zuletzt gesetzte FLITFOCUSLISTENER wird benachrichtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein FLITFOCUS LISTENER mehr registriert 122 Dokumentation der einzelnen Klassen HsetText text String void
27. Klasse gelten dieselben Bemerkungen wie f r die vorangegangene Klas se FLIT bertragen auf den Fall dass die Maske als Applet gestartet wird FLITAPPLET liegt ebenfalls im Verzeichnis net Konstruktoren FlitApplet Leerer Konstruktor die eigentlich wichtigen Methoden sind init und run Methoden init void Initialisiert den RBMANAGER derart dass er wei von welchem Host er die ResourceBundles zu laden hat und ffnet eine Java Konsole run void Ruft die Methode main auf bzw gibt einen Stack Trace aus falls dies zu einer Exception f hrt start void Beginnt einen neuen Thread stop void Beendet den laufenden Thread main ffnet einen neuen FLITLOGINFRAME der bergeben bekommt dass das Programm als Applet l uft Die weitere Kontrolle obliegt dann le diglich diesem neuen Frame 7 25 Klasse FLITBUTTON extends java awt Button Ein FLITBUTTON Verzeichnis shared ui ist ein Button dem gleich beim Erzeugen ein ActionCommand bergeben werden muss das dieser dann dem ARBEITSABLAUF bergibt wenn er angeklickt wird Au erdem kann man den Button auf Wunsch in der H he vergr ern um eine gr ere Schaltfl che zu erhalten 86 Dokumentation der einzelnen Klassen Konstruktoren FlitButton label String actionCommand String height int Erzegt einen neuen FLITBUTTON mit der Aufschrift label und der H he height der den Befe
28. Listentext besteht aus vielen Zeilen von denen jede aus mehreren Teilen Parts besteht Ein solcher Teil kann ein Feld Field eines Datensatzes oder ein Trennzeichen Delimiter sein Vor dem eigentlichen Erzeugen des Listentextes wird der Formatstring der dem Konstruktor bergeben wird geparst und in eine Folge von Parts bersetzt Die se Folge enth lt dann blicherweise abwechselnd Fields und Delimiter F r die se bersetzung werden die bersetzungstabellen tt und tp benutzt Dabei enth lt tt x alle M glichkeiten f r eine vom Benutzer eingegebene Zeichen folge die ein Feld darstellt und mit dem Buchstaben x a beginnt es findet also ein Hashing ber den ersten Buchstaben statt Hat der Parser in tt x y einen String gefunden der in der Eingabe vorkommt so findet er in tp x y den zugeordneten Part Alle Characters dazwischen werden in Delimitern zu sammengefasst Attribute pos_ende int Position des letzten Datensatzes der in die Liste aufgenommen werden soll der Wert 1 bedeutet dass alle Datens tze bis zum Ende aufge nommen werden sollen pos_start int Position des ersten Datensatzes hierbei bezeichnet 0 den ersten Daten satz des SUCHERGEBNISSES prefix String Der Text der der eigentlichen Liste vorangestellt werden soll se SUCHERGEBNIS Das SUCHERGEBNIS aus dem die Liste zusammengestellt werden soll sp Part Dieser Arra
29. Methode funktioniert auch dann wenn diese Eigenschaft Boolean oder Integerwerte erwartet getOrigBoolean name String boolean Holt den Originalwert der Eigenschaft name die Boolean Werte akzep tiert isDeleted boolean Gibt zur ck ob dieser FIELDENTRY als gel scht markiert ist isModified boolean Gibt zur ck ob eine Eigenschaft dieses FIELDENTRIES modifiziert wur de isModified name String boolean Gibt zur ck ob die Eigenschaft name in diesem FIELDENTRY modifi ziert wurde restore void L scht s mtliche Modifikationen alle Eigenschaften sind damit wieder auf ihre Originalwerte gesetzt 9 8 Klasse REPOSITIONFRAME 149 restore name String void L scht eventuelle Modifikationen der Eigenschaft name sie ist damit wieder auf ihren Originalwert gesetzt set name String modiValue boolean boolean Setzt den Wert modiValue als neuen Wert f r die Eigenschaft name die Booleanwerte akzeptiert set name String modiValue int boolean Setzt den Wert modiValue als neuen Wert f r die Eigenschaft name die Integer Werte akzeptiert set name String modiValue String boolean Setzt den Wert modiValue als neuen Wert f r die Eigenschaft name die String Werte akzeptiert setDeleted deleted boolean void Markiert diesen FIELDENTRY als gel scht oder nicht gel scht je nach Wert von deleted setOrig name String origValue boolean boolean Setzt den Wert
30. Programm beenden Beendet s mtliche offenen Maskenfenster dieses Programms Wie beim Schlie en eines Fensters wird vorher eine Abfrage auf Anderungen durchgef hrt 1 3 Das Maskenfenster Men Optionen e Expertenmodus Wird der Expertenmodus eingeschaltet so wird der Men punkt SQL Anfrage editierbar aktiviert Dar ber hinaus ist es m glich einige Felder der Maske zus tzlich zu aktivieren Dies wurde z B bei Flit vorgenommen siehe hierzu Kapitel 2 e SQL Anfrage editierbar Diese Option bewirkt dass die Anfragen an die Datenbank vorher auf dem Bildschirm angezeigt werden und modi fiziert werden k nnen Dies erm glicht es auch speziellere Anfragen zu stellen die von der Maske nicht angeboten werden Man muss allerdings darauf achten dass die Anfrage g ltig bleibt und das R ckgabeformat nicht ge ndert wird da die Maske das Ergebnis sonst nicht erkennen kann es wird keine weitere Konsistenzabfrage durchgef hrt Men Anfrage e Sortierung nach Es ist m glich die Sortierung in der das Suchergeb nis von der Datenbank bergeben wird zu bestimmen Daf r muss aus der hier gegebenen Liste nur die gew nschte Kriterienabfolge ausgew hlt werden Da sich diese auf die Spalten der Relation beziehen m ssen sie allerdings bei neu erzeugten Masken separat eingegeben werden siehe Ka pitel 6 e Auto Wildcards Wird diese Option angeschaltet so werden die in Text feldern eingegebenen Werte am Anfang und Ende m
31. SQLASSISTANT unterscheidet sich von der Klasse der automatischen Instantiierung dadurch dass er zus tzliche Methoden f r das Auslesen der Schlagw rter anbietet Die Daten selbst werden aus der Datenbankrelation schlagwort ausgelesen Methoden createDokumentIndok doknr String DOKUMENTINDOK Holt zu einem Dokument das DOKUMENTINDOK mit der INDOK doknr aus der Datenbank insertNewSchlagwort doknr String s SCHLAGWORT void F gt das neue SCHLAGWORT s in die Datenbank ein so dass es zu dem Dokument mit der Dokumentnummer doknr geh rt updateSchlagwort s SCHLAGWORT void Aktualisiert das modifizierte SCHLAGWORT s in der Datenbank deleteSchlagwort s SCHLAGWORT void L scht das SCHLAGWORT s aus der Datenbank 8 11 Klasse SUCHERGEBNIS Modifiziert 135 lockSchlagwoerter ds DOKUMENTSCHLAGWOERTER int 8 11 Sperrt die DokumentSchlagw rter ds in der Datenbank f r exklu siven Zugriff select for update nowait und pr ft ob die aktuel len Daten in der Datenbank noch mit den Originaldaten der DOKU MENTSCHLAGWOERTER bereinstimmen Der zugeh rige DOKUMENT DATENSATZ muss bereits im exklusiven Zustand sein In Abh ngigkeit vom Ausgang des Sperrversuchs und des Datenver gleichs werden die DOKUMENTSCHLAGWOERTER in einen bestimmten Zustand gesetzt und ein Integer Wert zur ckgegeben Faktenlage DOKUMENTSCHLAGWOERTER Wert Sperren erfolgreich Daten unver ndert exclusive 1 S
32. Setzt den Text auf den Wert text setTextColListener tl TEXTCOLLISTENER void Setzt einen TEXTCOLLISTENER f r dieses TEXTCOLITEM Es ist nur ein einziger TEXTCOLLISTENER pro TEXTCOLITEM vorgesehen d h nur der zuletzt gesetzte TEXTCOLLISTENER wird benachrichtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein TEXTCOL LISTENER mehr registriert 7 57 Interface TEXTCOLLISTENER Der TEXTCOLLISTENER Verzeichnis shared ui ist ein abstraktes Interface hnlich dem TextListener Der Unterschied ist dass bei der nderung des Textes nicht wie beim TextListener ein TextEvent sondern einfach die Quelle ihr Name und der neue Text bergeben werden Methoden textColValueChanged source TEXTCOLITEM name String text String void Wird aufgerufen wenn sich der Wert eines Textes ge ndert hat Dabei ist source das TEXTCOLITEM mit dem Namen name in dem das Event ausgel st wurde und text ist der neue Wert des Textes Kapitel 8 Besonderheiten in der Implementation von Flit Die Maske Flit ist das eigentliche Original der Maskenfamilie In diesem Sin ne sind die hier dokumentierten Klassen keine Erweiterungen der shared bzw template Klassen sondern andersherum jene eine Reduktion dieser Allerdings ist das eher ein Detail auf das hier nicht weiter eingegangen werden soll Die Anforderungen an die Maske Flit unterschieden sich von den Grundanfor derungen in der Art dass die Dokumente in der D
33. berpr ft den Inhalt des Feldes mit dem Namen feld genaugenommen ruft diese Methode die private Methode doCheck auf commit void bernimmt alle Modifikationen als neue Originalwerte Der Datensatz ist damit wieder unmodifiziert get feld String String Liefert den Wert des Feldes feld oder den leeren String falls kein Wert gesetzt ist getDat feld String String Liefert die ersten 16 Zeichen des Wertes des Feldes mit dem Namen feld oder den leeren String falls kein Wert gesetzt ist dies wird benutzt zum Vergleich mit einem Datumsformat getErrorString feld String String Holt das Ergebnis des letzten Check Aufrufes f r das Feld mit dem Namen feld Ist kein Fehler aufgetreten so wird Null zur ckgegeben getOriginal feld String String Holt den Originalwert des Feldes mit dem Namen feld isDeleted boolean Testet ob der Datensatz als gel scht markiert ist 74 Dokumentation der einzelnen Klassen isExclusive boolean Testet ob der Datensatz in der Datenbank zum exklusiven Zugriff ge sperrt wurde isModifiable boolean Testet ob der Datensatz modifizierbar ist isModified boolean Testet ob der Datensatz modifiziert wurde isModified feld String boolean Testet ob das Feld mit dem Namen feld modifiziert wurde restore void L scht alle Modifikationen und stellt den Originalzustand wieder her restore feld String void Stellt den Originalzustand de
34. bersetzten String mit getSQL Diese Methoden finden sich in der Klasse ExXPRPARSER Konstruktoren ExprErfdatumParser Leerer Default Konstruktor Methoden parseltem boolean Parst ein Item das bei dieser Implementation von EXPRPARSER eine Dezimalzahl mit Einheitsangabe ist die mit gewissen Verzierungen versehen sein darf Es wird True zur ckgegeben falls das Parsen feh lerfrei durchgef hrt werden konnte 7 10 Klasse EXPRINTPARSER extends ExprParser Der EXPRINTPARSER Verzeichnis shared dok parst einen String Items sind Dezimalzahlen Die folgenden weiteren Modifikatoren d rfen enthalten sein ass nse e Zahll Zahl2 oder auch nur zwei Punkte Au erdem kann ein Item auch die Zeichenfolge NULL oder das Prozentzeichen sein die Semantik in SQL ist dann IS NULL bzw IS NOT NULL 7 11 Klasse ExPRPARSER 77 Aufrufer parsen einen String mit der Methode parse und holen sich falls kein Fehler beim Parsen aufgetreten ist danach den in SQL bersetzten String mit getSQL Diese Methoden finden sich in der Klasse EXPRPARSER Konstruktoren ExprIntParser Leerer Default Konstruktor Methoden parseltem Parst ein Item das bei dieser Implementation von EXPRPARSER eine Dezimalzahl ist die mit gewissen Verzierungen versehen sein darf Es wird True zur ckgegeben falls das Parsen fehlerfrei durchgef hrt werden konnte 7 11 Kl
35. der leere String zur ckgegeben set feld String wert String void Setzt den Wert des Feldes feld auf wert Darf mit wert null aufge rufen werden in diesem Fall wird der leere String gesetzt 8 2 Klasse DOKUMENTSCHLAGWOERTER extends java lang Objekt Eine Instanz der Klasse DOKUMENTSCHLAGWOERTER Verzeichnis flit dok ist eine Sammlung aller Schlagw rter eines Dokuments Diese Instanz kann als modifizierbar und als in der Datenbank exclusive markiert werden Um auf alle Schlagw rter in dieser Sammlung zugreifen zu k nnen sind sie durchnum meriert Jedes SCHLAGWORT selbst kann aus der Datenbank gelesen dann hat es eine ROWID und ist entweder unmodifiziert modifiziert oder gel scht oder neu eingegeben sein dann hat es keine ROWID Attribute schlag Vector Der Vektor der die einzelnen Schlagw rter speichert dok DOKUMENTDATENSATZ Der DOKUMENTDATENSATZ zu dem diese Schlagwortsammlung geh rt Konstruktoren DokumentSchlagwoerter modifiable boolean Erzeugt neue leere DOKUMENTSCHLAGWOERTER die je nach Wert von modifiable modifizierbar sind oder nicht 8 2 Klasse DOKUMENTSCHLAGWOERTER 125 Methoden add schlagwort String kuerzel String gewicht int rowid String void F gt ein SCHLAGWORT mit den angegebenen Parametern und ROWID zur Sammlung hinzu add schlagwort String kuerzel String gewicht int void F gt ein SC
36. die Adresse der Datenbankinstanz und der JDBC Driver REMOTE Die Informationen f r den Datenbankzugriff wenn die Maske als Applet aus gef hrt wird werden in diesem Abschnitt angegeben Entsprechend den oben genannten sind dies remoteURL und remoteDriver 5 4 6 ResourceBundle Sprache properties Dieses ResourceBundle wird fast vollst ndig von MetaMask erzeugt es kann dennoch mehrere Gr nde geben dieses File von Hand weiter zu ver ndern denn die Daten die dieses ResourceBundle enth lt sind vielf ltig sie umfassen Aussehen der Maske Men zeile Hilfstexte Werte f r Auswahllisten etc Die genauen Beschreibungen der automatisch generierten Werte werden in den fol genden Abschnitten aufgef hrt allerdings sollte f r Ver nderungen dieser Daten immer MetaMask benutzt werden da sie sonst berschrieben werden k nnten F r Formate und Erl uterungen derjenigen Daten die von Hand bearbeitet werden m ssen sei auf Kapitel 6 verwiesen 56 Die Programmstruktur VERSION Hier f gt MetaMask einen Versionsstring ein der das Datum des Speicherns enth lt LAYOUT An dieser Stelle wird das Aussehen der Maske festgelegt Ver nderungen sollten hier nur mit Hilfe von MetaMask vorgenommen werden da dieser Bereich bei jedem Speichern neu geschrieben wird Sollen unbedingt Modifikationen vorgenommen werden die von MetaMask viel leicht nicht unterst tzt werden so sei auf die Kommentarzeilen im File verwie sen die die
37. die meisten Men eintr ge geben ihre Signale in Form von ActionCommands mittels des Interfaces COMMANDLISTENER an den ARBEITS ABLAUF weiter Die Reaktion auf diese Kommandos ist in vier Abschnitten der Methode executeCommand festgelegt von diesen Abschnitten besch fti gen sich drei mit Kommandos die nur in einem bestimmten Programmzustand auftreten k nnen und der vierte mit den allgemeinen Die Reaktionen auf die Kn pfe in der Knopfleiste sowie der vorgegebenen Men eintr ge ist hier schon einprogrammiert und sollte nicht ver ndert werden Die Kn pfe des Hauptpanels die zu Textfeldern mit Listen geh ren werden im Programmabschnitt LIST_COMMANDS behandelt der automatisch von MetaMask erg nzt wird Dar ber hinaus gehende Erweiterungen werden in den folgenden Abschnitten behandelt 6 2 2 Hinzuf gen von Kn pfen im Hauptpanel MetaMask bietet die komfortable M glichkeit im Hauptpanel der erzeugten Maske neue Kn pfe einzuf gen Da deren Funktion aber nicht von MetaMask festgelegt werden kann muss die Reaktion des Programms auf einen solchen Knopf nachtr glich in die Klasse ARBEITSABLAUF eingetragen werden 62 Wie werden die Masken erweitert Das ActionCommand das ein Knopf an den ARBEITSABLAUF weitergibt ent spricht dem Namen des Knopfes dieser steht im allerersten Feld des MetaMask Hauptpanels Soll das Programm in jedem Programmzustand mit der selben Funktion auf den Knopf reagieren so kann die Abfrage die
38. editierbar ist Konstruktoren FlitTextArea rows int columns int Erzeugt eine TextArea mit rows Zeilen und columns Spalten Methoden isFocusTraversable boolean Gibt zur ck ob die TextArea editierbar ist denn genau dann soll sie den Fokus akzeptieren 7 37 Klasse FLITTEXTFIELD extends java awt TextField Das FLITTEXTFIELD Verzeichnis shared ui ist ein TextField das den Input Focus nur dann akzeptiert wenn es editierbar ist Konstruktoren FlitTextField visible int Erzeugt ein TextField mit visible Zeichen Methoden isFocusTraversable boolean Gibt zur ck ob das TextField editierbar ist denn genau dann soll sie den Fokus akzeptieren 7 38 Klasse FLITTEXTPANEL extends java awt Panel Das FLITTEXTPANEL Verzeichnis shared ui ist das Panel das s mtliche Ein und Ausgabefelder f r Texte enth lt Die Anordnung Typen und Beschrif tungen der Felder wird aus einem ResourceBundle geladen blicherweise dem ResourceBundle Sprache properties 7 39 Klasse KRITERIEN 99 Konstruktoren FlitTextPanel buttons Hashtable textcolitems Hashtable rb ResourceBundle kl KeyListener Erzeugt ein neues FLITTEXTPANEL Dabei sind buttons und textcol items Hashtables die die erzeugten Buttons bzw TEXTCOLITEMS mit ihren ActionCommands als Schl ssel speichert Die Anordnung Typen und Beschriftungen der Eingabefelder wer
39. hier der leere String vereinbart Nicht aufgef hrt werden hier die public static final Konstanten die die Namen der Spalten in der Datenbankrelation bezeichnen und erst durch das Instanti ieren in diese Klasse eingetragen werden exemplarisch ist lediglich die immer vorhandene Konstante ROWID angegeben Attribute ROWID String Eine Konstante um den Namen der Spalte ROWID der Datenbankre lation sowohl als Variable als auch als String zur Verf gung zu haben fieldnames String Eine Aufz hlung der Namen aller Spalten der Datenbankrelation orig Hashtable Der Hashtable mit den Originalwerten der Datensatz Felder 7 7 Klasse DOKUMENTDATENSATZ 73 modi Hashtable Der Hashtable mit Ver nderungen an den Datensatz Feldern Sind f r ein Feld keine nderungen vorgenommen so existiert der entsprechende Eintrag in diesem Hashtable nicht modifiable boolean Gibt an ob der DOKUMENTDATENSATZ modifizierbar ist exclusive boolean Gibt an ob der DOKUMENTDATENSATZ als exklusiv in der Datenbank gesperrt ist deleted boolean Gibt an ob der DOKUMENTDATENSATZ vom Benutzer als gel scht mar kiert worden ist Konstruktoren DokumentDatensatz modifiable boolean Erzeugt einen neuen leeren DOKUMENTDATENSATZ mit entsprechen den FIELDCHECKERN der als modifizierbar markiert ist wenn modi fiable gleich True ist Methoden check feld String String
40. int Konstante die setMode bergeben werden kann um den FLITSTRICH einen Fehler signalisieren zu lassen LOOK _3D int Konstante die setMode bergeben werden kann um den FLITSTRICH abzusenken dies wird f r Trennstriche benutzt und wenn ein Feld als deaktiviert gekennzeichnet werden soll MODIFIED int Konstante die setMode bergeben werden kann um den FLITSTRICH ein modifiziertes Feld markieren zu lassen OK int Konstante die setMode bergeben werden kann um den FLITSTRICH unsichtbar zu machen col Color Die momentane Farbe des FLITSTRICHES Konstruktoren FlitStrich Erzeugt einen anfangs unsichtbaren FLITSTRICH FlitStrich i int Erzeugt einen FLITSTRICH in der gew schten Farbe Methoden getMaximumSize Dimension Liefert die maximale Dimension dieses FLITSTRICHES getMinimumSize Dimension Liefert die minimale Dimension dieses FLITSTRICHES getPreferredSize Dimension Liefert die gew nschte Dimension dieses FLITSTRICHES paint g Graphics void Zeichnet den FLITSTRICH setMode i int void Setzt die Farbe des FLITSTRICHES die m glichen Modi k nnen mittels der ffentlichen Konstanten dieser Klasse erreicht werden 98 Dokumentation der einzelnen Klassen 7 36 Klasse FLITTEXTAREA extends java awt TextArea Die FLITTEXTAREA Verzeichnis shared ui ist eine TextArea die den Focus nur dann akzeptiert wenn sie
41. ist werden zwei Zeilen jeweils durch eine Leerzeile getrennt 10 7 Klasse WARENKORB extends java lang Object Der WARENKORB erm glicht die Sammlung von DOKUMENTDATENS TZE zur Einzelbestellung Konstruktoren Warenkorb Default Konstruktor leer 158 Besonderheiten in der Implementation von Litera Methoden clear void L scht alle Eintr ge aus dem WARENKORB delete dd DOKUMENTDATENSATZ boolean L scht den DOKUMENTDATENSATZ dd aus dem WARENKORB Gibt False zur ck falls der Datensatz gar nicht im WARENKORB vorhanden war sonst True Auf jeden Fall ist der Datensatz danach nicht mehr im WARENKORB exists dd DOKUMENTDATENSATZ int Pr ft ob der DOKUMENTDATENSATZ dd sich bereits im WARENKORB befindet oder schon als bestellt markiert ist und daher nicht in den WARENKORB gelegt werden k nnen soll Der R ckgabewert ist 1 falls er sich schon im WARENKORB befindet 2 falls er als bestellt markiert ist und 0 sonst insert dd DOKUMENTDATENSATZ boolean F gt den DOKUMENTDATENSATZ dd in den WARENKORB ein Gibt False zur ck falls der Datensatz schon vorhanden war sonst True Auf jeden Fall ist der Datensatz danach im WARENKORB isEmpty boolean Gibt an ob der WARENKORB leer ist locate dd DOKUMENTDATENSATZ int Pr ft ob sich der DOKUMENTDATENSATZ dd bereits im WARENKORB befindet und gibt gegebenenfalls dessen Position zur ck Ist er nicht v
42. nnen befinden sie sich in einem Verzeich nis namens dbis mask bzw Unterverzeichnissen davon Die gemeinsamen Klassen finden sich in dbis mask shared und die unvollst ndigen Klas sen die f r jede Maske individuell modifiziert werden m ssen liegen in dbis mask templates die erzeugten Klassen f r eine Maske namens foo liegen dann in dbis mask foo Als Wurzelverzeichnis muss im Loginfenster das Verzeichnis angegeben werden in dem das im letzten Absatz erw hnte Verzeichnis dbis zu finden ist liegen die Klassen f r MetaMask z B im Verzeichnis src java dbis mask metanask so w re als Wurzelverzeichnis src java anzugeben Dies entspricht auch dem Verzeichnis das im CLASSPATH auftreten muss Unterhalb dieser Struktur sind die Klassen auf jeweils drei weitere Verzeichnisse aufgeteilt ui net und dok Die Klassen werden dadurch wie folgt gruppiert e ui f r s mtliche graphischen Elemente das umfasst neben den Masken elemente auch die einzelnen Fenster und entsprechende Listener Interfaces e net f r das Loginfenster und die Datenbankinformationen Server und Port sowie den Zugriff auf das ResourceBundle 5 1 berblick ber die Struktur 45 Fit FlitApplet Q La amp ni s mtliche Interfaces separate Frames gt FlitFrame ame static ResourceBundleManage
43. nur der zuletzt registrierte COMMANDLISTENER wird benach richtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein COMMANDLISTENER mehr registriert setMapping h Hashtable void Setzt eine bersetzungstabelle f r die Hotkeys diese FLITKEYLISTE NERS Darf mit Null aufgerufen werden in diesem Fall wird dann keine bersetzungstabelle benutzt Die Tabelle h kann die Strings F1 bis F12 sowie PAGE_UP und PAGE_DOWN als Schl ssel enthalten und diesen Tasten andere Ac tionCommands zuordnen Beim Dr cken eines Hotkeys wird der re gistrierte COMMANDLISTENER mit den bersetzten ActionCommands aufgerufen Falls zu einer Taste kein Schl ssel in der bersetzungsta belle existiert wird der COMMANDLISTENER mit dem originalen Ac tionCommand aufgerufen add keycode int ac String void Diese Methode weist dem numerischen KeyEvent keycode das origina le ActionCommand ac zu close void Schlie t die Aufnahme von KeyEvents ab 7 32 Klasse FLITLISTFRAME extends java awt Frame implements KeyListener WindowListener ActionListener Der FLITLISTFRAME Verzeichnis shared ui ist ein Fenster der Masken das eine Auswahlliste enth lt Der Inhalt der Liste wird durch einen Vektor von Strings vorgegeben Konstruktoren FlitListFrame v Vector Ifl LISTFRAMELISTENER name String font Font Erzeugt einen neuen FLITLISTFRAME aus einer im Vektor v gegebenen List
44. origValue als neuen Originalwert f r die Eigentschaft name die Boolean Werte akzeptiert setOrig name String origValue int boolean Setzt den Wert origValue als neuen Originalwert f r die Eigentschaft name die Integer Werte akzeptiert setOrig name String origValue String boolean Setzt den Wert origValue als neuen Originalwert f r die Eigentschaft name die String Werte akzeptiert insertCharacteristic name String origValue boolean void F gt eine neue Eigenschaft mit dem Namen name ein die Boolean Werte akzeptiert und auf origValue gesetzt ist insertCharacteristic name String origValue int void F gt eine neue Eigenschaft mit dem Namen name ein die Integer Werte akzeptiert und auf origValue gesetzt ist insertCharacteristic name String origValue String void F gt eine neue Eigenschaft mit dem Namen name ein die String Werte akzeptiert und auf origValue gesetzt ist 9 8 Klasse REPOSITIONFRAME extends java awt Frame implements ActionListener TextColListener Der REPOSITIONFRAME Verzeichnis metamask ui ist das Fenster in dem der Benutzer die neue Position eines Maskenelements eingeben kann 150 Besonderheiten in der Implementation von MetaMask Konstruktoren RepositionFrame rfl REPOSITIONFRAMELISTENER parent Frame name String initial_row int initial_col int Erzeugt einen neuen REPOSITIONFRAME der ber dem Frame parent erscheint und dem REPO
45. pfen notwendigerweise der Fall ist Die Elemente des MetaMask Hauptpanels sind in drei Gruppen sortiert e die Informationen ber die Spalte in der Relation Datentyp L nge etc e das Layout in der erzeugten Maske und e Texte f r den Benutzer der erzeugten Maske Die Funktionen der einzelnen Elemente werden in den folgenden Abschnitten beschrieben datenbezogene Informationen Bis auf die ersten beiden haben die Felder dieses Abschnittes bei Maskenele menten die sich nicht auf Spalten der Relation beziehen keine Bedeutung e Name Der Name eines Maskenelementes ist vergleichbar mit einem Pri m rschl ssel hier ber erfolgt der eindeutige Zugriff auf dieses Element Diese Feld enth lt f r Spalten in der Relation deren Spaltennamen bei anderen Maskenelementen z B Kn pfen den Befehl der bei Bet tigen an das Hauptprogramm weitergegeben wird Durch Eintragen eines Na mens in dieses Feld k nnen andere Maskenelemente angezeigt werden es ist jedoch nicht m glich dadurch neue Felder hinzuzuf gen dazu dient der Knopf Neues Maskenelement e Datenbankspalte Layoutelement Dieses Feld das nie editierbar ist zeigt an ob es sich bei dem aktuellen Maskenelement um eines handelt das eine Entsprechung in der Datenbankrelation besitzt oder ob es ein vom Benutzer hinzugef gtes Element ist e DB Position Hier ist angegeben welche Nummer die gerade angezeigte Spalte besitzt Bei neuen Maskenelementen ist dieses Feld leer
46. programmierte Maske f r die Datenbankrelation der Forschungsliteratur Der Gro teil der Funktionalit t ist identisch mit den Grundelementen die schon im Kapitel 1 vorgestellt wurden In der Forschungsliteraturdatenbank werden allerdings auch Schlagw rter zu den einzelnen Dokumenten gespeichert und Flit besitzt daher zus tzliche Funk tionen und Textfelder um dem gerecht zu werden Au erdem ist die M glichkeit gegeben dass sich einzelne Dokumente in anderen Dokumenten befinden wie z B Artikel die in B chern enthalten sind Auch hierf r waren zus tzliche Textfelder notwendig Die einzelnen Maskenelemente werden im folgenden Abschnitt beschrieben w hrend auf die Behandlung der Schlagw rter in Abschnitt 2 3 eingegangen wird 2 2 Beschreibung der Maskenelemente Das Hauptfenster der Maske Flit wurde schon in Abbildung 1 2 dargestellt f r besseres Verst ndnis der folgenden Beschreibung sei nochmals auf diese verwie sen Im folgen Abschnitt sollen der Vollst ndigkeit halber alle Maskenelemente kurz erw hnt werden e DokNr die laufende Nummer des angezeigten Dokumentes e K rzel das K rzel unter dem das Dokument eingeordnet ist es enth lt blicherweise eine Abk rzung des Autoren und das Erscheinungsjahr 24 Flit Benutzerhandbuch Erfassungsdatum wird automatisch von der Datenbank eingesetzt und enth lt die Angabe wann dieses Dokument zum ersten Mal eingef gt wur de Autoren Angabe des oder der Autore
47. temp boolean void Wird aufgerufen wenn der Focus erhalten oder verloren wurde Da bei ist ac das ActionCommand der aufrufenden Komponente have ist True wenn der Focus erhalten wurde und temp ist True falls die Kom ponente den Focus nur tempor r verloren hat andernfalls False 88 Dokumentation der einzelnen Klassen 7 29 Klasse FLITFRAME extends java awt Frame implements ItemListener ActionListener Der FLITFRAME Verzeichnis shared ui ist das Hauptfenster der Masken Es enth lt ein FLITTEXTPANEL in dem die Datens tze dargestellt werden eine FLITBUTTONBAR am rechten Fensterrand ein Men Statuslabel am un teren Fensterrand und eine FLITSPEEDBAR in der rechten unteren Ecke Die Anordnung und Beschriftung des Men s wird bei den erzeugten Masken aus dem ResourceBundle Sprache properties geladen es ist jedoch auch m glich andere Namen anzugeben Die FLITSPEEDBAR l sst sich auch ausblenden Attribute acWinClose String Das ActionCommand das an den COMMANDLISTENER weitergegeben wird falls das Fenster geschlossen wird withSpeedBar boolean Gibt an ob das Fenster berhaupt eine SpeedBar enthalten soll Das ist nicht gew nscht wenn diese Klasse f r MetaMask benutzt wird panelMain Panel Das Hauptpanel im FLITFRAME Konstruktoren FlitFrame font Font RBName String withSpeedBar boolean Erzeugt einen FLITFRAME der vom Aufrufer mit setVisible True ange
48. uneingeschr nkten Zugriff auf die Hauptrelation zu gew hren
49. werden s mtliche Informationen wie Po sition innerhalb der Maske Gr e etc sowie deren Modifikationen gespeichert Attribute IntegerVals Vector Listet diejenigen Eigenschaften auf die Integerwerte enthalten keys String Ein Array mit den Namen aller Eigenschaften orig Hashtable Die Originalwerte der einzelnen Eigenschaften modi Hashtable Die Modifikationen an den einzelnen Eigenschaften deleted boolean Gibt an ob dieser FIELDENTRY gel scht werden soll 148 Besonderheiten in der Implementation von MetaMask Konstruktoren FieldEntry Erzeugt einen neuen FIELDENTRY der s mtliche Eigenschaften auf Defaultwerte gesetzt bekommt Methoden acceptAsOriginal void bertr gt s mtliche Modifikationen in die Originalwerte der FIELDEN TRY ist damit wieder unmodifiziert clone void Gibt eine Kopie dieses FIELDENTRIES zur ck get name String String Gibt den aktuellen Wert der Eigenschaft name als String zur ck diese Methode funktioniert auch dann wenn diese Eigenschaft Boolean oder Integerwerte erwartet getBoolean name String boolean Holt den aktuellen Wert der Eigenschaft name die Boolean Werte ak zeptiert getInt name String int Holt den aktuellen Wert der Eigenschaft name die Integer Werte ak zeptiert getOrig name String String Gibt den Originalwert der Eigenschaft name als String zur ck diese
50. zuletzt gelesene Zeichen des zu parsenden Strings d h die interne Cursor Position wird um eins erh ht 7 12 Klasse EXPRSTRINGPARSER 7 12 Klasse EXPRSTRINGPARSER extends ExprParser Der EXPRSTRINGPARSER Verzeichnis shared dok parst einen String Items sind Strings Der String wird durch eines der Zeichen amp oder beendet wobei ffnende Klammern innerhalb des Strings selbstverst ndlich dazu f hren dass auch die zugeh rige schlie ende Klammer mit in den String aufgenommen wird Die Semantik in SQL ist LIKE string wobei Apostrophe angemessen behandelt werden F hrende und nachfolgende Leerzeichen werden abgeschnitten Das Item kann auch die Zeichenfolge NULL sein die Semantik in SQL ist dann IS NULL Aufrufer parsen einen String mit der Methode parse und holen sich falls kein Fehler beim Parsen aufgetreten ist danach den in SQL bersetzten String mit getSQL Diese Methoden finden sich in der Klasse EXPRPARSER Konstruktoren ExprStringParser Leerer Default Konstruktor Methoden parseltem boolean Parst ein Item das bei dieser Implementation von EXPRPARSER ein String ist Der R ckgabewert ist True wenn das Parsen fehlerfrei durch gef hrt werden konnte quote s String String Ersetzt jeden in s vorkommenden Apostroph durch zwei Apostrophe 7 13 Klasse FIELD HECKER extends java lang Object Der FIELDCHECKER Ver
51. 0 04 61 6 2 2 Hinzuf gen von Kn pfen im Hauptpanel 61 6 2 3 Hinzuf gen von neuen Men eintr gen 2 2 62 6 2 4 Hinzuf gen von Textfeldern 2 2 2 22 63 6 2 5 Fehlermeldungen 2 22 22 o nn 64 7 Dokumentation der einzelnen Klassen 65 7 1 Klasse ABLAUFVERWALTER 2 CC a 65 7 2 Klasse ARBEITSABLAUF 2 2 2 m nun 67 7 3 Klasse BACKGROUNDREADER soaa 70 7 4 Interface CHECKMENULISTENER 2 2 2 nn nenn goil 7 5 Interface COMMANDLISTENER 2 2 2 En nn nenn ra 7 6 Klasse CONNECTIONMANAGER 2 22 2 nn 71 7 7 Klasse DOKUMENTDATENSATZ 2 2 2 CE on T2 7 8 Klasse EXPERTSQLEDITOR oaaae 75 7 9 Klasse EXPRERFDATUMPARSER 2 aaa aae 75 7 10 Klasse EXPRINTPARSER 2 2 22 2 2 on nn nn 76 7 11 Klasse EXPRPARSER 2 on on nn nn TT 7 12 Klasse EXPRSTRINGPARSER oaaae 79 7 13 Klasse FIELD HECKER 22 2 nn nn 79 7 14 Klasse FIELDCHECKERFLOAT 2 22 2m nn 80 7 15 Klasse FIELDCHECKERFLOATNE 2 22 80 7 16 Klasse FIELDCHECKERINT 2 2 2 non nn sl 7 17 Klasse FIELDCHECKERINTNE 2 nn 81 7 18 Klasse FIELDCHECKERSTRING 2 2 En e 82 7 19 Klasse FIELDCHECKERSTRINGNE 2 82 7 20 Klasse FIELDCHECKERSTRINGNEQ 2 2 20 83 7 21 Klasse FIELDCHECKERSTRINGNQ 2 2 222 83 INHALTSVERZEICHNIS 1 22 7 23 7 24 7 25 7 26 7 27 7 28 7 29 7 30 7 31 7 32 7 33 7 34 7 35 7 36 7 37 7 38 7 39 7 40 7 41 7 42 7 43 7 44 7 45 7 46 7
52. 0 2 Klasse BESTELLFRAME 2 2 non nn 154 10 3 Interface BESTELLFRAMELISTENER 2 155 10 4 Klasse BESTELLLISTENDARSTFRAME 2 22222 156 10 5 Interface BESTELLLISTDARSTLISTENER 2 2000 156 10 6 Klasse KONTROLLLISTMANAGER 2 2 2 nn 157 10 7 Klasse WARENKORB 2 2 Emm nn 157 10 8 Klasse ARBEITSABLAUF Erweitert 2 2222 n nennen 158 10 9 Klasse SQLASSISTANT Erweitert 2 2 2 222 159 10 10ResourceBundle Sprache properties Erweitert 160 10 11Das erweiterte Rollensystem 2 22 2 on onen 160 Teil I Benutzerhandb cher Einleitung zum Programmpaket Zu Beginn meiner Arbeit lag nur die von Simon Stelling programmierte Maske Flit f r die Forschungsliteratur vor Da diese sich als zuverl ssig erwiesen hatte bestand meine Aufgabe darin mich in die Programmstruktur einzuarbeiten die Maske auf die Literaturdatenbank zu portieren und schlie lich eine Oberfl che zu programmieren mit der Flit hnliche Masken f r andere Datenbankrelatio nen erzeugt werden k nnen Dieser Maskengenerator liegt mit dem Programm MetaMask vor Die Masken werden jeweils f r eine spezielle Datenbankrelation erzeugt und bieten von vornherein Grundfunktionalit ten f r das Suchen und Arbeiten mit dieser Relation Dar ber hinaus k nnen zus tzliche Funkitonalit ten in die er zeugten Klassen einprogrammiert werden Der vorliegende Text soll zun chst einen berblick ber die Benutzung der Programme Flit di
53. Bestellung zusammengestellt werden Hier bei wird zun chst ein Fenster ge ffnet in dem die Verlage angegeben werden bei denen B cher zu bestellen sind Zu jedem Verlag wird die H he der Bestel lung in der eingestellten Rechnungsw hrung die auch im Men Bestellung ausgew hlt werden kann angegeben In diesem Fenster kann der Benutzer nun den gew nschten Verlag ausw hlen und mit dem Knopf Bestellung vorbereiten ein weiteres Fenster ffnen in dem die Details der in dieser Bestellung befindlichen Dokumente angezeigt werden Die Daten aus diesem Fenster m ssen vom Benutzer nun in den Bestellbrief bernommen werden bevor er die Bestellung best tigt 4 3 Einzelbestellungen und der Warenkorb 39 Wird die Bestellung an dieser Stelle best tigt so werden die Dokumente als bestellt markiert und mit dem Bestelldatum in eine Kontrolltabelle eingef gt Durch Auswahl des Men eintrages Kontrolltabelle kann die aktuelle Kontroll tabelle aus der Datenbank ausgelesen werden 4 3 Einzelbestellungen und der Warenkorb Litera bietet neben der M glichkeit Dokumente als zu bestellen zu markieren auch einen Warenkorb mit dem Dokumente sofort bestellt werden k nnen Diese Bestellungen werden Einzelbestellungen genannt Ein Dokument das gerade angezeigt wird kann durch den Men eintrag Ein zelbestellung vormerken im Men Bestellung dem Warenkorb hinzugef gt werden bzw durch den Me
54. DATENSATZ Erweitert Der DOKUMENTDATENSATZ wurde um die Felder des enthaltenden Dokumen tes erweitert Au erdem wurden sowohl daf r als auch f r die Zugriffe auf Schlagw rter die zu diesem Dokument geh ren die folgenden neuen Metho den notwendig Methoden setSchlagwoerter s DOKUMENTSCHLAGWOERTER void Verkn pft die DOKUMENTSCHLAGWORERTER s mit diesem DOKUMENT DATENSATZ Dabei wird auch bei den DOKUMENTSCHLAGWOERTERN die Methode setDokument aufgerufen Darf mit dem Wert Null aufge rufen werden in diesem Fall wurden die aktuellen Schlagw rter noch nicht aus der Datenbank geholt 134 Besonderheiten in der Implementation von Flit getSchlagwoerter DOKUMENTSCHLAGWOERTER Liefert die DOKUMENTSCHLAGWOERTER zu diesem DOKUMENTDA TENSATZ Falls die Schlagw rter noch ermittelt werden m ssen wird Null zur ckgegeben setIndok i DOKUMENTINDOK void Verkn pft das DOKUMENTINDOK i mit diesem DOKUMENTDATENSATZ Darf mit dem Wert Null aufgerufen werden in diesem Fall wurden die aktuellen Indok Daten noch nicht aus der Datenbank geholt getIndok DOKUMENTINDOK Liefert das DOKUMENTINDOK zu diesem DOKUMENTDATENSATZ Falls die Indok Daten noch ermittelt werden m ssen wird Null zur ckgege ben restore void L scht alle Modifikationen und stellt den Originalzustand wieder her Die DOKUMENTSCHLAGWOERTER bleiben hiervon unber hrt 8 10 Klasse SQLAss sTANT Erweitert Der
55. FIELDENTRIES abgespeichert wurde getFieldEntry dbName String FIELDENTRY Holt den FIELDENTRY mit dem Namen db Name oder gibt Null zur ck wenn kein solcher FieldEnty existiert getFirstName String Gibt den Namen des im Layout ersten FIELDENTRIES zur ck getNr dbName String int Gibt die Nummer des FIELDENTRIES mit dem Namen db Name getNrOfRows int Gibt die Anzahl der Zeilen in der erzeugten Maske zur ck getProjectName String Gibt den Namen des Projektes zur ck getRB ResourceBundle Holt das ResourceBundle des Projekts getTestRBFullName String Holt den voll qualifizierten Namen des ResourceBundles f r das aktuelle Testfenster getTestRBJavaName String Holt den Namen des ResourceBundles f r das aktuelle Testfenster im Java Format getUnnamedFieldEntry FIELDENTRY Holt einen neuen FIELDENTRY der noch keinen Namen besitzt und daher noch nicht in die normale Speicherung bernommen ist Dies geschieht mittels der Methode insertFieldEntry 9 6 Klasse DATAMANAGER 143 insertFieldEntry boolean Setzt einen FIELDENTRY der vorher mittels getUnnamedFieldEntry erzeugt wurde in die normale Speicherung ein Der FIELDENTRY muss mittlerweile einen Namen erhalten haben sonst ist der Aufruf wirkungs los isFirst fe FIELDENTRY boolean Gibt zur ck ob fe der erste FIELDENTRY im Layout ist HisLast fe FIELDENTRY boolean Gibt zur ck ob fe der letzte FIELDENTRY i
56. HLAGWORT mit den angegebenen Parametern allerdings oh ne ROWID zur Sammlung hinzu Falls die DOKUMENTSCHLAGWOER TER nicht modifizierbar sind wird dieser Aufruf ignoriert commit boolean bernimmt alle Modifikationen als neuen Originalzustand Falls es Schlagw rter ohne ROWID in der Sammlung gibt schl gt dieser Aufruf fehl und gibt False zur ck Man muss dann diese Instanz DOKUMENT SCHLAGWOERTER verwerfen und eine neue erzeugen contains schlagwort String kuerzel String gewicht int rowid String boolean Testet ob sich ein SCHLAGWORT mit den bergebenen Parametern in der Sammlung befindet delete nr int void L scht das SCHLAGWORT an der Position nr die Z hlung beginnt bei 0 Hat das SCHLAGWORT eine ROWID so wird es nur als gel scht mar kiert bleibt aber in der Sammlung enthalten Hat es keine ROWID wird es aus der Sammlung entfernt Wirf ggf eine ArrayIndexOutOf BoundsException delete s SCHLAGWORT void L scht das SCHLAGWORT s aus der Sammlung Hat das SCHLAGWORT eine ROWID so wird es nur als gel scht markiert bleibt aber in der Sammlung enthalten Hat es keine ROWID wird es aus der Samm lung entfernt Es ist dabei irrelevant ob es berhaupt in der Sammlung enthalten war get nr int SCHLAGWORT Liefert das SCHLAGWORT an der Position nr die Z hlung beginnt bei 0 Wirft ggf eine ArrayIndexOutOfBoundsException getDokument DOKUMENTDATENSATZ Liefert den DOKUMENTDATENSATZ zu dem d
57. Implementation und Generation von Datenbankmasken in Java Studienarbeit Eric Schellhammer 16 Dezember 1999 Inhaltsverzeichnis I Benutzerhandb cher 9 Die gemeinsamen Grundelemente der Benutzerschnittstellen 13 1 1 Das Loginfenster 222 Connor 13 1 2 Die Programmzust nde 2 2 Connor 14 1 3 Das Maskenfenster aoao 15 1 3 1 Das Hauptpanel 2 n nn 16 1 3 2 Die Statuszeilen 2 2 222mm 16 1 3 3 Die Knopfleiste 22 2 Coon nn 17 1 3 4 Die Men zeile 2 2 2 Con nn 18 1 4 Der Listenassistent 2 Con E une 20 Flit Benutzerhandbuch 23 2 1 bereinstimmung mit den Grundfunktionen 2 23 2 2 Beschreibung der Maskenelemente 2 2 2222 23 2 3 Schlagw rter c e ea e e 2 roe we a aa na ee a 25 2 4 umfassende Dokumente 2 2 2 Emm a 26 MetaMask Benutzerhandbuch 27 3 1 Das Loginfenster ansaa 27 3 1 1 Laden aus der Datenbank 2 2 2 2 28 3 1 2 Lesen von vorhandenen Masken 2 2 2 0 29 3 2 Die Programmzust nde oaa 29 3 3 Das MetaMask Hauptfenster 2 2 22 Cm n nennen 29 3 3 1 Die Knopfleiste 2 2222 Co on nn nn 30 3 4 Die Testmaske 2 22 2 oo one al INHALTSVERZEICHNIS 3 5 Beschreibungen der einzelnen Felder des Hauptpanels 3 6 Das Umpositionieren von Maskenelementen 2 3 7 Das Editieren von Auswahllisten 2 222 22 2 nn Litera Benutzerhandbuch 4 1 Beschreibung der Maskenelemente 2 22 2 2 4 2 Bestellun
58. Kombination mit CTRL zu einem Tastenk rzel Diese Angabe kann einfach entfallen wenn kein Tastenk rzel gew nscht ist In den meisten F llen werden die ActionCommands der Men eintr ge mittels des COMMANDLISTENER Interfaces an die Klasse ARBEITSABLAUF weiterge geben die Behandlung dieser Kommandos entspricht genau der im Falle von Kn pfen und wurde im Abschnitt 6 2 2 beschrieben F r Checkbox Men eintr ge ist dies etwas anders Die Behandlung dieser Men eintr ge erfolgt ber das Interface CHECKMENULISTENER und die Me thode checkMenuChanged im ARBEITSABLAUF Dieser Methode wird das ActionCommand und ein Boolean Wert bergeben der anzeigt ob der Men ein trag an oder ausgeschaltet ist Bei Untermen s bei denen einer von mehreren Checkbor Eintr gen ausgew hlt werden soll muss der ARBEITSABLAUF das Ausschalten des vorher ausgew hlten Eintrags bernehmen Als Beispiel f r dieses Verfahren sei auf den Programm abschnitt des OrderBy Men s verwiesen der durch EXAMPLE CHECKMENU gekennzeichnet ist 6 2 4 Hinzuf gen von Textfeldern Wie bei Kn pfen ist es auch bei Textfeldern m glich diese mit Hilfe von Meta Mask in das Layout einzuf gen Andererseits ist die Behandlung solcher Text felder nicht ohne die Einarbeitung in die gesamte Programmstruktur m glich da je nach Funktion dieser Textfelder neue Methoden neue Klassen f r Fenster neue Listener oder hnliches programmiert werden m ssen 64
59. L Anfrage benutzt werden wird Zus tlich kann in der Angabe dok orderby default NR eingestellt werden welche dieser Reihenfolgen beim Programmstart aktiviert ist 6 2 Erg nzungen des Hauptprogramms 6 1 3 Werte der Datenbank Anbindung Die URL und der Driver der von der erzeugten Maske benutzt werden soll werden ebenfalls nicht automatisch von MetaMask eingetragen Diese Werte sind im File DB properties abgelegt Es wird zwischen dem Aufruf als selbst ndiges Programm und dem als Applet unterschieden f r ersteres werden die Werte directURL TEXT und directDriver TEXT verwendet f r letzteres die entsprechenden Werte remoteURL TEXT und remoteDriver TEXT 6 2 Erg nzungen des Hauptprogramms 6 2 1 Der Arbeitsablauf Durch die erste Instantiierung werden aus den im Verzeichnis template liegen den Files Klassenfiles hergestellt die f r jede Maske in einem gesonderten Ver zeichnis abgelegt werden Diese Files k nnen im nachhinein modifiziert werden wird MetaMask nochmals gestartet so gehen die Erg nzungen nicht verloren Dadurch werden das Erweitern der Klassen und das Umstellen des Layouts zwei voneinander unabh ngige Vorg nge deren Reihenfolge nicht festgelegt ist Wenn die Maske erweitert werden soll so geschieht dies in der Klasse AR BEITSABLAUF Deshalb sei hier kurz erw hnt wie diese Klasse auf Eingaben des Benutzers reagiert f r eine genauere Beschreibung siehe Abschnitt 7 2 S mtliche Kn pfe und
60. Listener Interfaces keyReleased e KeyEvent void Implementation des KeyListener Interfaces keyTyped e KeyEvent void Implementation des KeyListener Interfaces pleasePositionNextTo parent Frame void Positioniert den SCHLAGWORTFRAME so auf dem Bildschirm dass er m glichst neben dem parent Frame erscheint ohne sich jedoch ber den Bildschirmrand hinaus zu erstrecken selection_callback n int void Diese Methode wird vom SCHLAGWORTCANVAS aufgerufen wenn sich die Selektion durch Benutzeraktionen im Canvas d h Mausklicks Scrollbar ge ndert hat selectLastLint void Selektiert die letzte Zeile der DOKUMENTSCHLAGWOERTER und setzt den Fokus in das Eingabefeld setFieldsEditable editable boolean void Setzt die Eingabefelder des SCHLAGWORTFRAMES auf editierbar oder nicht editierbar je nach Wert von editable setFieldValues schlagwort String col int gewicht String colg int void Setzt die Werte der Eingabefelder des SCHLAGWORTFRAMES Dabei ist schlagwort der String f r das Feld Schlagwort das den Farbmodus wert col bekommt und gewicht der String f r das Feld Gewicht das den Farbmoduswert colg bekommt 132 Besonderheiten in der Implementation von Flit setKeyListener kl KeyListener void Setzt den KeyListener f r diesen SCHLAGWORTFRAME Der Wert Null ist erlaubt dann ist kein KeyListener mehr registriert setLabel s String void Setzt die Fe
61. ME NAME abgelegt und damit den Klassen sowohl in Form eines Strings der Prozedu ren bergeben werden kann als auch in Form von Konstanten die im Pro grammtext auftreten k nnen zur Verf gung gestellt Es sei hier bemerkt dass automatisch eine Konstante ROWID hinzugef gt wird ALL_ARRAY Eine Aufz hlung aller Spaltennamen Konstanten SET_CHECKERS An dieser Stelle in der Konstruktormethode werden den Feldern mit Hil fe der nachfolgenden privaten Methoden addXXX die entsprechenden FIELDCHECKER Klassen siehe Abschnitt 5 2 3 zugeordnet PRIMARY KEY In diesen Zeilen wird der Teil einer SQL Anfrage in den StringBuffer buf geschrieben der die Anfrage auf den Datensatz in der Datenbank einschr nkt dessen Prim rschl ssel mit dem des aktuellen DOKUMENTDATENSATZES ber einstimmt anders gesagt wird hiermit sichergestellt dass wirklich nur dieser Datensatz in der Relation aktualisiert oder gel scht etc wird 5 4 die automatische erste Instantiierung 5 4 2 Klasse KRITERIEN Die Modifikationen in den KRITERIEN werden von MetaMask vorgenommen Ver nderungen von Hand sind nicht zu empfehlen In dieser Klasse werden die Suchkriterien f r eine Datenbankanfrage gespeichert daf r werden Informationen ber die Spalten der Relation ben tigt Au erdem wird jedes Feld mit einem EXxPRPARSER versehen der die Angaben auf ihre G ltigkeit pr ft und eine entsprechende SQL Anfrage erstellen kann Daf r muss
62. N mit zu welchem DOKU MENTDATENSATZ sie geh ren setExclusive exclusive boolean void Markiert die DOKUMENTSCHLAGWOERTER als exklusiv oder nicht ex klusiv je nach Wert von exclusive setModifiable modifiable boolean void Markiert die DOKUMENTSCHLAGWOERTER als modifizierbar oder nicht modifizierbar je nach Wert von modifiable Falls die DOKUMENT SCHLAGWORRTER als nicht modifizierbar markiert werden wird der Originalzustand aller Schlagw rter wiederhergestellt indem die Modi fikationen verworfen werden und alle neu eingegebenenn Schlagw rter die ohne ROWID werden entfernt size int Liefert die Anzahl der Schlagw rter in der Sammlung 8 3 Klasse ExXPRSCHLAGWORTPARSER extends ExprParser Der EXPRSCHLAGWORTPARSER Verzeichnis flit dok ist eine Erweiterung des EXPRPARSERS wie die anderen Erweiterungen im Verzeichnis shared dok auch geparst werden hier Strings auf Items die Schlagw rter mit eventueller Gewichtsbedingung sind 8 4 Klasse SCHLAGWORT 127 Aufrufer parsen einen String mit der Methode parse und holen sich falls kein Fehler beim Parsen aufgetreten ist danach den in SQL bersetzten String mit getSQL Diese Methoden finden sich in der Klasse EXPRPARSER Vor dem ersten Parsen muss der SQL Spaltenname auf SCHLAGWORT und der SQL Spaltenname der Schlagwortgewichte mit setGewichtSpalte auf GE WICHT gesetzt werden Es darf kein Tabellenbezeichner wie etwa s vor a
63. S 113 setWhere kbed String void Bietet die M glichkeit eine spezielle WHERE Bedingung von Hand ein zugeben Vorher eingegebene Kriterien werden berschrieben 7 50 Klasse SUCHERGEBNIS extends java lang Object Das SUCHERGEBNIS Verzeichnis dok stellt eine komfortable Schnittstelle zur Ergebnismenge einer Datenbankanfrage dar Es bietet einen SUCHERGEBNIS CURSOR zum Navigieren im SUCHERGEBNIS gespeichert und zur ckgegeben werden DOKUMENTDATENS TZE Das SuchErgebins kann mittels commit in die Datenbank eingetragen werden dabei werden alle Modifikationen und L schun gen in die Datenbank bernommen Solange das SUCHERGEBNIS dadurch nicht leer wird d h alle Datens tze gel scht wurden bleibt es weiterhin ge ffnet und kann benutzt werden Das SUCHERGEBNIS liest nur die Datens tze aus dem zugrundeliegenden Re sultSet die tats chlich vom Aufrufer angefordert werden Falls das ResultSet noch nicht bis zum Ende gelesen wurde und gerade gar keine Datens tze im SUCHERGEBNIS gecachted sind wird automatisch ein Datensatz gelesen und gecacht Das SUCHERGEBNIS ist thread safe Man kann also in einem Hintergrund Thread mit Hilfe eines SUCHERGEBNISCURSORS nebenbei Datens tze anfor dern die dann dadurch bereits im SUCHERGEBNIS gecacht zur Verf gung ste hen wenn der Benutzer im Ergebnis bl ttert Man sollte das Im Voraus Lesen allerdings nicht bertreiben weil das Bandbreite der Datenbankanbindung ver braucht
64. S in den Zustand EndReached Das be deutet dass keine weiteren Dokumentdaten von der Datenbank mehr gelesen werden Das SUCHERGEBNIS verh lt sich so als ob bereits alle Daten aus der Datenbank gelesen worden w ren getCommitErrors Vector Liefert einen Vektor mit allen Fehlern die beim letzten commit die ses SUCHERGEBNISSES aufgetreten sind Liefert Null falls keine Fehler aufgetreten sind Die Elemente des zur ckgegebenen Vektors sind wie der Vektoren Jeder dieser Vektoren enth lt 2 oder 3 Elemente Zuerst einen String entweder Dokument oder commit dann die eigent liche SQLException und bei den Dokumenten dann noch einen String mit dem Prim rschl ssel des Dokuments Es gibt h chstens einen com mit Eintrag und wenn er existiert befindet er sich immer am Ende des Vektors getDokument sec SUCHERGEBNISCURSOR DOKUMENTDATENSATZ Liefert den DOKUMENTDATENSATZ an der aktuellen Position des SUCH ERGEBNISCURSORS sec Falls der Datensatz noch nicht aus dem Result Set gelesen war wird das jetzt gemacht Falls der Cursor hinter dem Ende des SUCHERGEBNISSES steht wird er stillschweigend zur ck an das Ende bewegt und das letzte Element des SuchErgebisses zur ck gegeben Falls das SUCHERGEBNIS bereits geschlossen ist wird Null zur ckgegeben getStatistics int size Liefert die Anzahl der DOKUMENTDATENS TZE dieses SUCHERGEBNIS SES die modifiziert aber nicht als gel scht marki
65. SATZ an der Cursorposition holen Konstruktoren SuchErgebnisCursor Erzeugt einen neuen SUCHERGEBNISCURSOR Methoden getPos int Liefert die Position dieses Cursors HmovePos rel int void Bewegt die Position des Cursors um rel Stellen wobei auch negative Werte erlaubt sind Der Cursor wird auf einen Wert gr er oder gleich 0 gezwungen setPos pos int void Setzt die Position dieses Cursors Der Cursor wird auf einen Wert gr er oder gleich 0 gezwungen setToFirstPos void Setzt den Cursor auf den Anfang 7 52 Klasse TEXTCOLAREA extends TextColltem implements TextListener Die TEXTCOLAREA Verzeichnis shared ui erlaubt es einen mehrzeiligen Text im Maskenfenster anzuzeigen und zu modifizieren Eine TEXTCOLAREA enth lt eine FLITTEXTAREA und einen FLITSTRICH Konstruktoren TextColArea name String uiname String rows int cols int Erzeugt eine TEXTCOLAREA mit dem internen Namen name dem UINamen uiname und der gew nschten Anzahl an Zeilen rows und Spalten cols 7 53 Klasse TExXTCOLCHOICE 117 Methoden getArea FLITTEXTAREA Liefert die FLITTEXTAREA dieser TEXTCOLAREA Diese Funktion wird nur dazu ben tigt die FLITTEXTAREA beim Konstruieren der Benutzeroberfl che in einen Container einf gen zu k nnen HgetText String Liefert den aktuellen Wert des Textes HrequestFocus void Setzt den Eingabe Fokus in d
66. SITIONFRAMELISTENER rfl das Beenden mit teilt Das Maskenelement das umposititioniert werden soll tr gt den Namen name und befindet sich urspr nglich in der Zeile initial_row und der Position initial_col Methoden actionPerformed ActionEvent e void Implementation des ActionListener Interfaces HpleaseCenterOver parent Frame void Zentriert den Frame ber dem Frame parent textColValueChanged tci TEXTCOLITEM name String text String void Implementation des TEXTCOLLISTENER Interfaces 9 9 Interface REPOSITIONFRAMELISTENER Der REPOSITIONFRAMELISTENER Verzeichnis metamask ui ist ein Interface zur Kommunikation zwischen einen REPOSITIONFRAME und einem ARBEITS ABLAUF Methoden executeRepositionCommand ac String row int col int ok boolean void Wird aufgerufen wenn im REPOSITIONFRAME der Befehl ac ausgef hrt werden soll Die Angaben row und col geben Zeile und Position inner halb der Zeile an die der Benutzer eingetragen hat Der Parameter ok gibt an ob die neue Position angenommen werden soll 9 10 Klasse SQLA SSISTANT extends java lang Object Der SQLASSISTANT Verzeichnis metamask dok hat mit dem SQL Assistenten der automatisch erzeugen Masken au er der logischen Position nicht viel gemeinsam Das liegt daran dass MetaMask nicht st ndig auf die Datenbank zugreifen muss und bei dem einen notwendigen Zugriff nicht die Daten aus der Tabelle ausle
67. abstrakte Klasse TEXTCOLITEM Verzeichnis shared ui ist die Oberklas se aller Klassen die es erlauben einen Text im Maskenfenster anzuzeigen und zu modifizieren Sie enth lt neben der eigentlichen Komponente zum Editieren des Textes einen FLITSTRICH zur Anzeige von Statusinformationen Die Farbe des Striches kann gesetzt werden Der Text selbst kann gesetzt und ausgelesen werden Um ber Ver nderungen des Textes informiert zu werden kann man einen TEXTCOLLISTENER bei diesem TEXTCOLITEM registrieren lassen Attribute name String Der interne Name dieses TEXTCOLITEMS uiname String Der Name dieses TEXTCOLITEMS mit dem der Benutzer dieses TEXT CoLITEM identifizieren kann strich FLITSTRICH Der FLITSTRICH der den Status dieses TEXTCOLITEMS anzeigt editable boolean Gibt an ob dieses TEXTCOLITEM editierbar ist listener TEXTCOLLISTENER Der registrierte TEXTCOLLISTENER f r dieses TEXTCOLITEM 7 56 Klasse TEXTCOLITEM 121 Methoden allowText uitext String value String void Erlaubt einen Textwert Diese Methode bekommt in der Unterklasse TEXTCOLCHOICE eine Funktion focusGained e FocusEvent void Implementation des FocusListener Interfaces focusLost e FocusEvent void Implementation des FocusListener Interfaces forbidText uitext String void Verbietet einen Textwert Diese Methode bekommt in der Unterklasse TEXTCOLCHOICE eine Funktion getStrich
68. alls kein Fehler auftrat 7 22 Klasse FIELD HECKERYEAR extends FieldChecker Der FIELDCHECKERYEAR Verzeichnis shared dok berpr ft einen String der eine Jahreszahl enthalten soll deren Stellenzahl genau vier sein soll Erlaubte Werte sind auch noch Null sowie der leere String Konstruktoren FieldCheckerYear Leerer Konstruktor Methoden check s String String berpr ft den String s der eine vierstellige Jahreszahl enthalten soll R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Feh ler auftrat 7 23 Klasse FLIT extends java lang Object Die Klasse FLIT enth lt lediglich die Methode main zum Starten der Maske sie wird im Verzeichnis net instantiiert Prinzipiell kann man dieser Klasse f r jede Maske einen entsprechenden neuen Namen geben zur einfacheren Aus zeichnung hei t sie jedoch f r jede automatisch instantiierte Maske gleich Eine Verwechslungsgefahr besteht nicht da die Klassen in den zur Maske geh rigen Unterverzeichnissen liegen Konstruktoren Flit Leerer Default Konstruktor Methoden main args String void Erzeugt einen neuen FLITLOGINFRAME der bergeben bekommt dass das Programm nicht als Applet l uft Die weitere Kontrolle obliegt le diglich diesem neuen Frame 7 24 Klasse FLITAPPLET 85 7 24 Klasse FLITA PPLET extends java applet Applet implements java lang Runnable F r diese
69. alt ist text 8 8 Klasse ARBEITSABLAUF Erweitert 133 8 8 Klasse ARBEITSABLAUF Erweitert Diese Klasse muss selbstverst ndlich die erweiterten Funktionen f r die ent haltenden Dokumente und die Schlagw rter zur Verf gung stellen Dazu sind nat rlich alle bereits in der Template Klasse enthaltenen Funktionen entspre chend erweitert worden das soll hier allerdings nicht genauer ausgef hrt werden Stattdessen werden hier nur die Methoden genannt die neu hinzugekommen sind Au erdem wurde in einer neuen privaten Variable abgelegt bei welchen Doku menttypen welche Felder zus tzlich deaktiviert sein sollen Attribute dok_doktyp2gesperrteFelder Hashtable Enth lt in der Form DOKTYP Vector diejenigen Eingabefelder die bei einem bestimmten DokTyp deaktiviert sein sollen Die Namen der zu sperrenden TEXTCOLITEMS sind im jeweiligen Vektor zu finden Methoden schlagwort_executeCommand ac String void Implementation des SCHLAGWORTLISTENER Interfaces schlagwort_selectionChanged n int void Implementation des SCHLAGWORTLISTENER Interfaces schlagwort_textColValueChanged tci TEXTCOLITEM name String text String void Implementation des SCHLAGWORTLISTENER Interfaces tryToLockSchlagwoerter ds DOKUMENTSCHLAGWOERTER String Versucht die DOKUMENTSCHLAGWOERTER ds in der Datenbank zu sperren Liefert Null im Erfolgsfall andernfalls einen Fehlerstring 8 9 Klasse DOKUMENT
70. and dargestellt se SUCHERGEBNIS Das SUCHERGEBNIS in das die Datens tze eingelesen werden Konstruktoren BackgroundReader a ARBEITSABLAUF Erzeugt einen neuen BACKGROUNDREADER zu dem bergebenen AR BEITSABLAUF a Methoden isRunning boolean Ermittelt ob der BACKGROUNDREADER gerade als Thread l uft und gibt in diesem Fall True zur ck pleaseStart se SUCHERGEBNIS void Startet das Einlesen aller Dokumente in das Suchergebnis se Falls der Thread bereits l uft wird er zun chst gestoppt und dann neu gestartet pleaseStop void Stoppt das Einlesen Diese Methode kehrt erst zur ck wenn der Einlese Thread tats chlich beendet ist Falls er sich nach Aufforderung nach einer gewissen Zeitspanne nicht beendet hat bricht ihn diese Methode gewaltsam ab Falls der Thread nicht mehr l uft ist der Aufruf wir kungslos run void Implementation des Runnable Interfaces setSlowSpeed slow boolean void Setzt die Lesegeschwindigkeit des BACKGROUNDREADERS Diese Me thode startet den Thread nicht Der Default Wert ist True d h der BACKGROUNDREADER liest nur langsam ein False setzt ihn auf ma ximale Lesegeschwindigkeit 7 4 Interface CHECKMENULISTENER 71 7 4 Interface CHECKMENULISTENER Der CHECKMENULISTENER Verzeichnis shared ui ist ein Interface das auf gerufen wird wenn ein CheckBoxMenultem in den Men s ge ndert wurde Methoden chec
71. ang wiederholt werden Da beim Laden aus der Datenbank noch kein Layout definiert wurde generiert MetaMask ein neues Layout derart dass immer drei Maskenelemente in einer Zeile angeordnet sind Dass dabei eventuell Maskenelemente ausserhalb des Fen sters platziert werden k nnen stellt kein Problem dar da dieses Default Layout ohnehin noch mit MetaMask berarbeitet werden muss 3 2 Die Programmzust nde 29 3 1 2 Lesen von vorhandenen Masken Findet MetaMask bereits eine Maske mit dem angegebenen Namen im Pfad vor so werden die vier Eingabefelder die f r den Login zur Datenbank gebraucht werden deaktiviert und MetaMask geht davon aus dass die bestehende Mas ke berarbeitet werden soll In diesem Fall brauchen keine weiteren Angaben gemacht zu werden Soll eine bestehende Maske berschrieben werden so kann dies geschehen in dem man das Auswahlfeld auf aus der Datenbank erzeugen umstellt Hierbei werden allerdings s mltliche Ver nderungen oder Erweiterungen der alten Mas ke verworfen 3 2 Die Programmzust nde Da MetaMask nicht mehr auf die Datenbank zuzugreifen braucht w hrend eine Maske bearbeitet wird k nnen s mtliche ben tigten Daten im Speicher gehal ten werden Der Programmzustand der Kriterieneingabe ist damit nicht mehr notwendig und entf llt MetaMask kommt also mit lediglich zwei Programm zust nden aus Anzeigen aller Maskenelemente enspricht Anzeigen des Such ergebnisses und
72. as aktuelle Masken element an die neue Position eingef gt wird und zwar vor einem Masken element das sich eventuell schon an dieser Position befindet e als neue Zeile einf gen Wird dieser Knopf gedr ckt so wird das ak tuelle Maskenelement als erstes Element einer neuen Zeile eingef gt Alle dahinter befindlichen Zeilen werden um eine Zeile nach unten verschoben Eine eventuell ge ffnete Testmaske wird die neue Position allerdings nicht auto matisch annehmen daf r muss der Knopf Testmaske aktualisieren im Haupt fenster angeklickt werden 3 7 Das Editieren von Auswahllisten Ist das aktuelle Maskenelement eine Auswahlliste so ist im Hauptpanel der Knopf Edit Auswahlliste aktiviert Wird dieser angeklickt so wird ein sepa rates Fenster ge ffnet das den momentanen Inhalt der Auswahlliste enth lt Dieser kann dann beliebig erweitert und ver ndert werden In diesem Fenster werden abwechselnd eine Zeile erwartet die den Wert oder Text beinhaltet der in der erzeugten Maske angezeigt werden soll und eine Zeile mit dem Wert der in der Datenbankrelation benutzt wird F hrende und angeh ngte Leerzeichen werden dabei beachtet Es wird empfohlen nach einem solchen Paar Zeilen eine Zeile Abstand zu halten Leerzeilen in der Eingabe werden ohnehin komplett ignoriert Das Fester kann mit den beiden Kn pfen nderungen bernehmen und Anderungen verwerfen geschlossen werden mit denen entweder die neue Ein
73. ask eingetragen wenn allerdings Kn pfe oder weitere Funktionen zur Maske hinzugef gt werden sollen so muss diese Klasse von Hand ver ndert werden F r kleinere Erg nzungen siehe Ka pitel 6 sind jedoch gr ere nderungen n tig so muss diese Klasse eventuell in erheblichem Umfang berarbeitet werden 5 4 die automatische erste Instantiierung 55 CONST Die Konstanten die hier eingetragen werden geben an auf welche Resource Bundles zugegriffen werden soll namentlich sind dies Sprache properties im Verzeichnis ui und DB properties im Verzeichnis net der Maske Die beiden ResourceBundles werden in den folgenden Abschnitten genauer beschrieben LIST_COMMANDS In diesen Abschnitt werden automatisch die Reaktionen auf die Kn pfe die sich neben Textfeldern mit Listen befinden eingetragen Es sei nochmals darauf hingewiesen dass die Reaktion des Programms auf weitere Kn pfe keinesfalls zwischen diesen beiden Marken eingetragen werden sollte da sie sonst bei er neutem Speichern mit MetaMask berschrieben wird 5 4 5 ResourceBundle DB properties Dieses sehr kurze ResourceBundle enth lt die Informationen die f r die Daten bankverbindung n tig sind MetaMask nimmt hier fast keine Anderungen vor neue Werte sollten von Hand eingetragen werden DIRECT In diesem Abschnitt liegen die Daten die die Maske benutzt wenn sie als selbst ndiges Programm ausgef hrt wird Dies sind namentlich directURL und directDriver
74. asse EXPRPARSER extends java lang Object Der EXPRPARSER Verzeichnis shared dok parst einen String Diese abstrak te Klasse dient als Grundger st f r verschiedene spezialisierte Parser Die hier abstrakte Methode parseItem muss bei abgeleiteten Klassen geeignet imple mentiert werden um etwa eine Dezimalzahl oder ein Suchwort parsen zu k nnen Die abstrakte Klasse EXPRPARSER stellt die gesamte Funktionalit t f r UND ODER NICHT und Klammerungen bereit Aufrufer parsen dann einen String mit der Methode parse und holen sich falls kein Fehler beim Parsen aufgetreten ist danach den in SQL bersetzten String mit getSQL Vor dem ersten Aufruf muss der SQL Spaltenname mit setSpalte gesetzt wer den Konstruktoren ExprParser Leerer Default Konstruktor Methoden forbidAutoWildCards void Verbietet das automatische Einkleiden des Suchwortes in WildCards f r immer Folgende Aufrufe von setAutoWildCards bleiben wirkungs los Diese Methode dient dazu gewisse Kriterienfelder dauerhaft ohne AutoWildCards benutzen zu k nnen 78 Dokumentation der einzelnen Klassen getErrorPos int Holt die vermeintliche Position des letzten Parse Fehlers im zu parsen String Die Position ist 0 lt pos lt s length im String s Man beachte dass s length keine g ltige Position darstellt in diesem Fall war der Ausdruck vermutlich vorzeitig zu Ende War kein Fehler aufgetreten ist die R c
75. atenbankrelation in anderen Dokumenten enthalten sein k nnen Dies erforderte die zus tzliche Klasse Do KUMENTINDOK und entsprechende Erweiterungen an der Klasse DOKUMENT DATENSATZ Dar ber hinaus werden zu den einzelnen Dokumenten noch Schlagw rter in einer separaten Datenbanktabelle verwaltet Die Erweiterungen am SQL Assistenten und die f r die Schlagw rter eingef hrten neuen dok und ui Klassen tragen dem Rechnung 8 1 Klasse DOKUMENTINDOK extends java lang Objekt Die Klasse DOKUMENTINDOK Verzeichnis flit dok enth lt einige Felder des INDOK Dokuments Jedes Feld wird durch einen String identifiziert String Konstanten f r alle Feldnamen stehen statisch in dieser Klasse bereit Der Wert eines Feldes ist ebenfalls ein String der nicht NULL sein darf Zur Speicherung eines Datenbank NULL Wertes wird hier der leere String vereinbart Attribute DOKTYP String Ein String mit dem Namen des Feldes DOKTYP 124 Besonderheiten in der Implementation von Flit AUTOREN String Ein String mit dem Namen des Feldes AUTOREN TITEL String Ein String mit dem Namen des Feldes TITEL S fieldnames String Ein Array mit den Namen aller INDOK Felder Konstruktoren Dokumentindok Erzeugt ein neues leeres DOKUMENTINDOK Methoden get feld String String Liefert den Wert des Feldes feld Falls der Wert nicht gesetzt wurde wird
76. auf dm 9 12 Klasse FLITLOGINFRAME Erweitert Der FLITLOGINFRAME muss mehr Eingabe akzeptieren als diejenigen der au tomatisch instantiierten Masken dementsprechend enth lt er mehr graphische Elemente und erweiterte Methoden Da diese sich jedoch in ihrer generellen Be schreibung nicht von denen des blichen FLITLOGINFRAME unterscheiden sei hier auf dessen Beschreibung in Abschnitt 7 33 verwiesen 152 Besonderheiten in der Implementation von MetaMask Kapitel 10 Besonderheiten in der Implementation von Litera 10 1 die speziellen Anforderungen Die Maske Litera ist f r die Literaturdatenbank entworfen F r diese Rela tion soll es m glich sein Dokumente zu bestellen Diese Bestellungen werden dar ber hinaus in einer separaten Kontrollliste protokolliert aus der sie wieder gel scht werden wenn die B cher angekommen sind und in die Hauptrelation aufgenommen werden Dokumente k nnen auf zwei unterschiedliche Arten bestellt werden Man kann ein Dokument das sich in einem Suchergebnis befindet und momentan auf dem Bildschirm angezeigt wird den Eintrag im Feld Status auf zu bestellen ndern Dadurch wird das Dokument in der Datenbank entsprechend markiert und bei der n chsten Abfrage nach Dokumenten die bestellt werden sollen mit ausgegeben Andererseits kann ein Benutzer auch Dokumente in einen Warenkorb sam meln Dies wird nicht direkt in der Datenbank mitprotokolliert die Dokumente sind also n
77. bName String void L scht das Hauptpanel und erschafft ein neues das aus dem Resource Bundle rbName gelesen wird Dies wird f r die Testframes bei Meta Mask benutzt requestFocusInTextColltem name String void Setzt den Input Focus in das TEXTCOLITEM mit dem Namen name Falls keines mit diesem Namen existiert oder der Wert Null bergeben wird ist der Aufruf wirkungslos setButtonEnabled ac String enabled boolean void Aktiviert oder deaktiviert den Button mit dem ActionCommand ac je nach dem Wert von enabled Es ist egal ob sich dieser Button in der FLITBUTTONBAR am rechten Fensterrand oder im FLITTEXTPANEL befindet setCheckMenuEnabled ac String enabled boolean void Aktiviert oder deaktiviert das CheckboxMenultem mit dem Action Command ac je nach dem Wert von enabled setCheckMenuListener cml CHECKMENULISTENER void Setzt einen CHECKMENULISTENER f r diesen FLITFRAME Es ist nur ein einziger CHECKMENULISTENER pro FLITFRAME vorgesehen d h nur der zuletzt gesetzte CHECKMENULISTENER wird benachrichtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein CHECK MENULISTENER mehr registriert Dokumentation der einzelnen Klassen setCheckMenuState ac String checked boolean void Setzt den Zustand des CheckMenultems mit dem ActionCommand ac Das CheckMenultem wird angeklickt dargestellt wenn checked auf True gesetzt ist setCommandlistener cl COMMANDLISTENER void Setz
78. bschnitt 5 1 angegeben werden MetaMask Benutzerhandbuch Programm Schriftgr e Hilfe MetaMask Startfenster Name des Projekts tlif Wurzelverzeichnis nome schellisrcjavd Projekt neu aus der Datenbanktabelle erzeugen Bestehendes Projekt berarbeiten Password Name der Tabelle Besitzer der Tabelle Login Abbildung 3 1 Das MetaMask Startfenster 3 1 1 Laden aus der Datenbank Dieses Verfahren ist nur notwendig wenn f r die in Frage stehende Tabelle noch keine Maske erzeugt wurde Wird diese Option ausgew hlt falls schon eine Maske des selben Namens existiert so werden beim Speichern die Einstellungen und gegebenenfalls Erweiterungen der alten Maske berschrieben Soll die Tabellenbeschreibung aus der Datenbank ausgelesen werden so muss selbstverst ndlich eine Verbindung zu dieser aufgebaut werden daf r werden ein Loginname und das dazugeh rige Passwort f r die Datenbank ben tigt Au er dem muss der Name der zu betrachtenden Tabelle angegeben werden Es ist dar ber hinaus m glich einen Namen f r den Besitzer der Tabelle anzugeben falls dieser nicht mit dem Loginnamen bereinstimmen sollte wird dieses Feld leer gelassen so wird automatisch der angegebene Loginname als Tabellenbe sitzer bernommen Treten beim Einloggen in die Datenbank Fehler auf etwa weil das Passwort nicht akzeptiert wird so k nnen Korrekturen an den Eingaben vorgenommen und der Login Vorg
79. chreiten soll Konstruktoren FieldCheckerString Erzeugt einen neuen FIELDCHECKERSTRING der Strings mit einer Ma ximall nge von 8 akzeptiert FieldCheckerString max int Erzeugt einen neuen FIELDCHECKERSTRING der Strings mit einer Ma ximall nge von max akzeptiert Methoden check s String String berpr ft den String s dessen L nge eine gewisse Maximall nge nicht berschreiten darf R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Fehler auftrat 7 19 Klasse FIELD HECKERSTRINGNE extends FieldCheckerString Der FIELDCHECKERSTRINGNE Verzeichnis shared dok berpr ft einen String dessen L nge eine gewisse Maximall nge nicht berschreiten soll und der weder Null noch der leere String sein darf in diesem Sinne steht im Namen NE f r not empty Konstruktoren FieldCheckerStringNE max int Erzeugt einen neuen FIELDCHECKERSTRINGNE der Strings mit einer Maximall nge von max akzeptiert 7 20 Klasse FIELDCHECKERSTRINGNEQ 83 Methoden check s String String berpr ft den String s dessen L nge eine gewisse Maximall nge nicht berschreiten darf und der weder der leere String noch Null sein darf R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Feh ler auftrat 7 20 Klasse FIELDCHECKERSTRINGNEQ extends FieldCheckerString Der FIELDCHECKERSTRINGNEQ Verzeichnis shared dok
80. ckt wird e L schen r ckg ngig Hiermit wird die Markierung die durch den vor herigen Men punkt gesetzt wurde wieder entfernt e nderungen r ckg ngig Alle nderungen die an diesem Datensatz vorgenommen wurden werden r ckg ngig gemacht Andere Datens tze sind davon nicht betroffen Men Feld Die Funktionen diese Men s beziehen sich lediglich auf ein einzelnes Textfeld n mlich das in dem der Fokus sich gerade befindet bzw das gerade angeklickt ist Welches das ist kann man den Statuszeilen entnehmen e Vorheriger Inhalt Stellt den Eintrag wieder her der sich vorher in die sem Feld befunden hat e Leeren L scht den Inhalt dieses Feldes e nderungen r ckg ngig Nimmt alle nderungen die an diesem Feld vorgenommen wurden wieder zur ck Andere Felder oder andere Da tens tze sind davon nicht betroffen Men Hilfe e Info Zeigt einen Hilfetext an e Version Zeigt eine kurze Information ber die Version der Maske an 1 4 Der Listenassistent Die erzeugten Masken bieten die M glichkeit Suchergebnisse in Listenform aus geben zu lassen Diese Funktion wird ber das Men Suchergebnis Men punkt Listen bersicht erzeugen angesprochen Wird sie aktiviert so wird zun chst ein separates Fenster ge ffnet der Listen assistent Abbildung 1 3 Hier kann eingeben werden welche Spalten der Rela tion in welcher Reihenfolge ausgegeben werden sollen und durch welche Zeichen oder Texte die Aus
81. den aus dem ResourceBundle rb gelesen Der KeyListener kl wird an alle Komponenten au er den Buttons die in buttons eingetragen werden angeh ngt createTextColXXX cont Container gb GridBagLayout name String uiname String TextCol XXX F r jeden Typ von TEXTCOLI TEM gibt es eine solche Methode die eine Instanz der entsprechenden Klasse erzeugt und mittels der entsprechen den addToGB Methode dem Panel hinzuf gt Das neue TEXTCOLITEM wird dann zur ckgegeben addToGB cont Container gb GridBagLayout tcX TextCoIXXX last boo lean void F r jeden Typ von TEXT OLITEM gibt es eine solche Methode die das bergebene TEXTCOLITEM tcX dem Container cont hinzuf gt Der Wert last gibt an ob es die aktuelle Zeile bis zum Ende f llen soll 7 39 Klasse KRITERIEN extends java lang Object Die Klasse KRITERIEN Verzeichnis dok enth lt alle Felder f r die Suchkri terien eingegeben werden k nnen Jeder neue Wert f r ein Feld wird sofort mit Hilfe des entsprechenden EXPRPARSERS geparst Falls ein Fehler auftritt kann man die vermeintliche Fehlerposition und einen Fehlertext holen Man kann das automatische Einkleiden der Kriterien in WildCards aktivieren und deak tivieren und man kann einstellen ob die Suchkriterien Gro Kleinschreibung unterscheiden sollen oder nicht Nicht aufgef hrt werden hier die public static final Konstanten die die Namen der Spalten in der Datenbankrelation bezeichnen und e
82. der Datenbankrelation in der Reihenfolge der Datenbankspalten in dem Format zur ck wie es im SQLASSISTANT ben tigt wird writeUpdateArray String Gibt die Namen der Spalten in der Datenbankrelation die modifi ziert werden k nnen in dem Format zur ck wie es im SQLASSISTANT ben tigt wird 9 7 Klasse FIELDENTRY 147 writeVersion String Gibt einen Versions String mit dem aktuellen Datum f r das Projekt zur ck initFieldEntry dbName String dbType int dbLength int isNullable boolean dataType int void Initialisiert den FIELDENTRY mit dem Namen dbName mit den ent sprechenden Werten initFieldEntry fe FIELDENTRY dbType int dbLength int isNullable boolean dataType int void Initialisiert den FIELDENTRY fe mit den entsprechenden Werten moveUpFrom row int col int FIELDENTRY Gibt den letzten FIELDENTRY vor der Position col der Zeile row zur ck oder Null falls es keinen solchen gibt moveDownFrom row int col int FIELDENTRY Gibt den ersten FIELDENTRY nach der Position col der Zeile row zur ck oder Null falls es keinen solchen gibt newFieldEntry dbName String FIELDENTRY Erzeugt einen neuen FIELDENTRY mit dem Namen dbName und gibt ihn zur ck nachdem er in die Speicherung eingef gt wurde 9 7 Klasse FIELDENTRY extends java lang Object implements Cloneable Die Klasse FIELDENTRY Verzeichnis metamask dok entspricht einem Mas kenelement der erzeugten Maske Hier
83. der durch das Pr fix p identifiziert wird d h es werden die Werte p 1 pt 2 usw gelesen und an den Vektor v angeh ngt getBooleanFromRB rb ResourceBundle s String boolean Liest einen Booleanwert aus aus dem ResourceBundle rb der durch den Kennzeichner s identifiziert wird Der Wert muss eine der beiden Zeichenketten true oder false sein getHashtableFromRB rb ResourceBundle s String key String value String Hashtable Liest einen Hastable aus dem ResourceBundle rd der durch den Kenn zeichner s identifiziert wird Das Key Suflix key legt fest welche Zeilen im ResourceBundle als Schl sselwerte erkannt werden und das Wert Suffix value erf llt diese Funktion f r die Eintr ge getIntFromRB rb ResourceBundle s String int Liest einen Integerwert aus dem ResourceBundle rb der durch den Kennzeichner s identifiziert wird Falls der Zahlenwert im Resource Bundle keine g ltige Dezimalzahl darstellt und das Parsen eine NUM BERFORMATEXCEPTION wirft wird diese abgefangen und ignoriert Es wird dann einfach der Wert 1 zur ckgegeben getRB rbname String ResourceBundle Liefert ein ResourceBundle mit dem Namen rbname Jedes einmal an geforderte ResourceBundle wird ber seinen Namen in einem Hashtable gechachet damit sp tere Zugriffe schneller erfolgen getRB rbname String mustFind boolean ResourceBundle Liefert ein ResourceBundle mit dem Namen rbname allerdings wird nur
84. deren TEXTCOLITEMS behandelt sie k nnen direkt mit der Methode setButtonEnabled NAME ENABLED des Hauptfensters aktiviert oder deaktiviert werden Kapitel 7 Dokumentation der einzelnen Klassen In diesem Kapitel sollen die einzelnen Klassen mit ihren Methoden vorgestellt werden Hierdurch soll jedoch weniger ein berblick der Klassenstruktur gege ben werden diese Funktion versucht Kapitel 5 zu erf llen Die folgenden Ab schnitte sollen eher als Nachschlagewerk dienen und sind daher alphabetisch geordnet Die beiden ResourceBundles DB properties und Sprache properties werden hier nicht nochmals aufgef hrt f r deren Beschreibung sei auf Abschnitt 5 4 5 f r DB properties bzw Abschnitt 5 4 6 f r Sprache properties verwiesen 7 1 Klasse ABLAUFVERWALTER extends java lang Object Diese Klasse die im Verzeichnis dok instantiiert wird beginnt und beendet Arbeitsabl ufe und ffnet bzw schlie t die zugeh rigen FLITFRAMES Sie wird nur statisch benutzt Attribute aal Vector Ein Vektor der alle aktiven Arbeitsabl ufe enth lt uff Vector Dieser Vektor enth lt die unbenutzten FLITFRAMES MAX UNUSED FF int Die angegebene Konstante beschr nkt die Anzahl der im Vektor uff gespeicherten unbenutzten FLITFRAMES 66 Dokumentation der einzelnen Klassen Konstruktoren AblaufVerwalter Default Konstruktor leer da der ABLAUFVERWALTER nur statisch be nutzt wird Met
85. des ResourceBundles das f r einen Testframe erzeugt wur de Konstruktoren DataManager Erzeugt einen neuen leeren DATAMANAGER Methoden checkLayout originals boolean void Erzeugt ein neues Layout aus den als sichtbar markierten FIELDEN TRIES Wenn der Parameter originals auf True gesetzt ist werden die errechneten Positionen in den FIELDENTRIES als Originalpositionen eingetragen cleanUpRBs void L scht die f r Testframes erzeugten ResourceBundles clearLayout void L scht das bisher erzeugte Layout Die einzelnen Maskenelemente be halten ihre momentane Position allerdings bei clone Object Gibt eine Kopie dieses DATAMANAGERS zur ck 142 Besonderheiten in der Implementation von MetaMask contains dbName String boolean Gibt zur ck ob ein FIELDENTRY mit dem Namen dbName vorhanden ist createDBNameVector Vector Erzeugt einen sortierten Vektor der Namen s mtlicher FIELDENTRIES und gibt diesen zur ck deleteFromLayout fe FIELDENTRY void L scht das Feld im Layout an dem sich der FIELDENTRY fe befindet elements Enumeration Gibt die FIELDENTRIES als Aufz hlung zur ck die Reihenfolge ent spricht dabei der der Spalten in der Datenbankrelation getChoices dbName String CHOICEDATA Holt die Auswahlliste f r den FIELDENTRY mit dem Namen dbName Die Angabe Null f r dbName holt die Auswahlliste die unabh ngig von
86. die Grundfunktionalit t einer Maske erweitert werden sei es durch neue Kn pfe im Hauptpanel neue Men eintr ge oder sogar Textfelder die sich nicht auf die Hauptrelation beziehen so muss das Hauptprogramm entsprechend er weitert werden Die folgenden Abschnitte sollen einen berblick dar ber geben was in diesen F llen zu tun ist Im Abschnitt 6 2 5 werden ein paar Fehlermel dungen erw hnt die auftreten k nnen wenn Erg nzungen vom Programm nicht gefunden werden Generell sei darauf hingewiesen dass die Angabe von Nummern immer von 1 beginnen und l ckenlos fortlaufend sein muss da der ResourceBundle Manager bei fehlenden Eintr gen die Eingabe als beendet erkl rt 6 1 Daten die MetaMask nicht automatisch instantiiert 6 1 1 Listenformate Die Formate die der Listenassistent beim Starten anbietet werden noch nicht von MetaMask verwaltet Sie m ssen daher separat in das ResourceBundle Sprache properties eingetragen werden Dies geschieht an der Stelle die mit 60 Wie werden die Masken erweitert EDIT LIST_DEFAULTS bezeichnet ist Einerseits k nnen hier Listenformate angegeben werden die im Listenassisten ten durch dr cken des Knopfes Ausw hlen abgerufen werden k nnen Das Format dieser Eingaben muss das folgende sein list format X STRING wobei X eine fortlaufende Nummer ist und STRING durch das gew nschte Li stenformat ersetzt wird Welche Bezeichnungen hier f r die einzelnen Spalten
87. ds java awt Frame implements ActionListener ItemListener KeyListener Der FLITLOGINFRAME Verzeichnis ui ist das Login Fenster der Maske Darin soll der Benutzer Namen und Passwort angeben und mit diesen Daten wird ein Login in der Datenbank versucht Gelingt dieser wird die Programmkontrolle an einen ABLAUFVERWALTER weitergegeben Konstruktoren FlitLoginFrame inAnApplet boolean Erzeugt einen FLITLOGINFRAME und zeigt ihn an Der Wert des Pa rameters inAnApplet der anzeigt ob das Programm als Applet l uft wird an die Klassen deren Verhalten sich nach dieser Information rich tet weitergegeben Methoden HactionPerformed e ActionEvent void Implementation des ActionListeners HitemStateChanged e ItemEvent void Implementation des ItemListeners keyPressed e KeyEvent void Implementation des KeyListeners keyReleased e KeyEvent void Implementation des KeyListeners leer keyTyped e KeyEvent void Implementation des KeyListeners leer 96 Dokumentation der einzelnen Klassen trylogin void Versucht den Login mit den momentan eingestellten bzw gelesenen Informationen und gibt ggf eine Fehlermeldung in der Statuszeile des FLITLOGINFRAMES aus loginException e Exception void berpr ft im Falle einer Exception w hrend des Logins ob diese auf ei ne ung ltige Username Password Kombination zur ckzuf hren ist und gibt abh ngig davo
88. e Selektion update g Graphics void Zeichnet den SCHLAGWORT ANVAS 8 6 Klasse SCHLAGWORTFRAME extends java awt Frame implements ActionListener KeyListener TextColListener Der SCHLAGWORTFRAME Verzeichnis flit ui ist das Schlagwortfenster der Flit Maske Es enth lt einen SCHLAGWORT ANVAS sowie Felder zum Eingeben und ndern von Schlagw rtern und deren Gewicht ein Men und Statuslabel Konstruktoren SchlagwortFrame font Font Erzeugt einen neuen SCHLAGWORTFRAME der vom Aufrufer noch mit setVisible angezeigt werden muss Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces 8 6 Klasse SCHLAGWORTFRAME 131 detach void L st diesen SCHLAGWORTFRAME von allen Referenzen auf SCHLAG WORTLISTENER und DOKUMENTSCHLAGWOERTER displayAndToFront void Macht diesen SCHLAGWORTFRAME sichtbar bringt ihn nach vorne und setzt den Fokus in ein Textfeld displaySchlagwoerter d DOKUMENTSCHLAGWOERTER void Zeigt die DOKUMENTSCHLAGWOERTER d an Der Wert Null ist er laubt Die Selektion wird auf 0 gesetzt Falls jedoch Null bergeben wurde oder die DOKUMENTSCHLAGWOERTER nicht modifizierbar oder leer sind oder der zugeh rige DOKUMENTDATENSATZ als gel scht mar kiert ist wird die Selektion auf 1 gesetzt getSelection int Liefert die Selektion dieses SCHLAGWORTFRAMES keyPressed e KeyEvent void Implementation des Key
89. e urspr ngliche Maske MetaMask den Maskengenerator und Litera eine Maske f r die Literaturdatenbank die mit MetaMask erzeugt wurde geben Da das Aussehen s mtlicher Benutzerschnittstellen dieses Pro grammpaketes sehr hnlich ist werden in Kapitel 1 zun chst die Elemente der Hauptfenster vorgestellt In den Kapiteln 2 bis 4 werden dann die einzelnen Programme mit ihren Sonderfunktionalit ten vorgestellt Der zweite Teil befasst sich mit den Details der Realisation In Kapitel 5 wer den die Programm und die Klassenstruktur erl utert und in Kapitel 6 wird erkl rt wie eine Maske mit zus tzlichen Funktionen ausgestattet werden kann Die Kapitel 8 bis 10 befassen sich mit den einzelnen Klassen der Programme Flit MetaMask und Litera 12 Kapitel 1 Die gemeinsamen Grundelemente der Benutzerschnittstellen Die Hauptfenster der Flit Maskenfamilie haben alle die gleichen Bereiche und die gleichen Grundelemente aus denen sie aufgebaut sind Dieselben Bestandtei le sind auch im MetaMask Hauptfenster zu finden und obwohl sich MetaMask in mehreren Punkten von den erzeugten Masken unterscheidet kann dieser Ab schnitt auch als Einf hrung in die Benutzerschnittstelle f r den Maskengenera tor verstanden werden Dennoch gelten die in diesem Kapitel erw hnten Details haupts chlich f r die erzeugten Masken die Unterschiede zu MetaMask werden im Kapitel 3 genauer ausgef hrt Die in diesem Kapitel enthaltenen Screenshots stelle
90. e von Strings Es muss ein LISTFRAMELISTENER Ifl angegeben wer den der ber die auftretenden Events benachrichtigt wird Der Name name dient ausschlie lich dem LISTFRAMELISTENER zur Identifikation dieses Frames Methoden actionPerformed a ActionEvent void Implementation des ActionListener Interfaces gibt das ActionCom mand zum ActionEvent a an den LISTFRAMELISTENER weiter 94 Dokumentation der einzelnen Klassen getPreferredSize Dimension Holt die bevorzugte Gr e des Frames Ist diese schmaler als die gew nschte Breite mit pleaseBeAsWideAs gesetzt so wird der Wert des Benutzers zur ckgegeben keyPressed e KeyEvent void Schlie t den Frame wenn Escape gedr ckt wird keyReleased e KeyEvent void Implementation des KeyListener Interfaces leer keyTyped e KeyEvent void Implementation des KeyListener Interfaces leer pleaseBeAsWideAs w int void Schl gt dem FLITLISTFRAME eine gew nschte Breite in Pixeln vor pleaseDispose void Veranlasst den FLITLISTFRAME sich zu schlie en und alle Resourcen freizugeben Darf mehrfach aufgerufen werden alle Aufrufe nach dem ersten sind dann wirkungslos pleasePositionHere p Point void Positioniert den FLITLISTFRAME auf dem Bildschirm Die bergebene Position p wird dabei nur als Empfehlung betrachtet von der abgewi chen wird falls der FLITLISTFRAME sonst nicht mehr vollst ndig auf dem Bildschirm sichtbar w
91. echseln will Dieser Wert ist f r alle Arbeitsabl ufe gleich dd DOKUMENTDATENSATZ Der aktuell benutzte angezeigte und m glicherweise editierbare Da tensatz 68 Dokumentation der einzelnen Klassen sucherg SUCHERGEBNIS Das aktuell benutzte m glicherweise editierbare Suchergebnis aus dem der aktuelle Datensatz stammt suchergcursor SUCHERGEBNIS URSOR Der Cursor des SUCHERGEBNISSES sucherg an der aktuell dargestellten Position ff FLITFRAME Der von diesem ARBEITSABLAUF benutzte FLITFRAME state int Zustand des ARBEITSABLAUFES entsprechend den n chsten drei Kon stanten KRITERIENEINGABE int RBEITSABLAUF befindet sich im Zustand Kriterieneingabe ERGEBNISDARSTELLUNG int ARBEITSABLAUF befindet sich im Zustand Ergebnisdarstellung NEUEINGABE int RBEITSABLAUF befindet sich im Zustand Neueingabe isModal boolean Wird auf True gesetzt wenn die Maske gerade ein anderes Fenster anzeigt das modal sein soll Die Maske selbst akzeptiert keine Eingaben mehr bis diese Variable wieder auf False gesetzt wird LABRX int Bezeichnet die Labelposition X 1 3 am rechten Fensterrand LABUX int Bezeichnet die Labelposition X 1 3 am unteren Fensterrand READAHEAD_OFF int Bezeichnet die Auswahl Benutzer w nscht kein Vorauslesen READAHEAD_SLOW int Bezeichnet die Auswahl Benutzer w nscht langsames Vorauslesen READAHEAD_FAST in
92. eeren String wenn kein Wert in diesem Feld gespeichert ist oder Null wenn beim Parsen des Wertes ein Fehler aufgetreten ist hasSQLParser feld String boolean Tested ob zu dem Feld mit dem Namen feld ein SQLParser exi stiert Falls nicht darf f r dieses Feld keine der Methoden getSQL getErrorString oder getErrorPos aufgerufen werden isEmpty boolean Gibt zur ck ob s mtliche Werte dieses Kriteriensatzes leer sind set feld String wert String boolean Setzt den Wert des Feldes fesl auf wert dabei l schen Null und der leere String den Feldinhalt Der neue Wert wird sofort geparst falls dabei ein Fehler auftritt wird False zur ckgegeben ansonsten True setAutoWildCards auto boolean void Aktiviert oder deaktiviert das automatische Einkleiden der Kriterien in WildCards je nach Wert von auto Default ist False d h deaktiviert Dies bezieht sich auf alle Felder gleichzeitig wird allerdings nur bei solchen wirksam bei denen es im zugeh rigen EXPRPARSER zugelassen ist 7 40 Klasse LIST SSISTANTFRAME 101 setCaseSensitive casesensitive boolean void Aktiviert oder deaktiviert die Beachtung der Gro Kleinschreibung je nach Wert von casesensitive Default ist False d h Gro Klein schreibung wird nicht unterschieden addX X X name String void F r die einzelnen Wert Typen gibt es private Methoden die einen neuen ExprX X XParser erzeugen mit der Spalte name verbinden und in der
93. egeben e Cursor hoch Cursor runter Wird im Men Optionen die Einstel lung Bl ttern mit Cursortasten ausgeschaltet so kann hier angegeben werden welches Feld bei einem entsprechenden Tastendruck den Fokus erh lt Texte e Focushelp Der Text in diesem Feld erscheint in des Statuszeilen der er zeugten Maske wenn das Maskenelement den Fokus erh lt Hier kann eine kurze Beschreibung der Funktion des entsprechenden Elements angegeben werden die dem Benutzer helfen soll e K rzel f r Liste Hier k nnen K rzel eingetragen werden die im Li stenassistenten diese Spalte bezeichnen Der Listenassistent wird in Ab schnitt 1 4 separat beschrieben 3 6 Das Umpositionieren von Maskenelementen Maskenelemente k nnen nicht einfach im Hauptpanel der erzeugten Maske ver schoben werden indem neue Werte f r Maskenzeile oder Position in der Zei le eingegeben werden durch solche Eintragungen k nnte es vorkommen dass Positionen doppelt oder gar nicht besetzt w ren Stattdessen befindet sich im MetaMask Hauptpanel der Knopf Umpositionieren der ein separates Fenster ffnet In diesem Fenster kann nun die gew nschte neue Position eingetragen werden Es gibt drei M glichkeiten dieses zus tliche Fenster wieder zu schlie en e alte Position behalten In diesem Fall bleibt die bisherige Anordnung unver ndert 3 7 Das Editieren von Auswahllisten 35 e neue Position annehmen Dies f hrt dazu dass d
94. einen neuen FIELDCHECKERFLOAT der 8 Vor und 2 Nach kommastellen akzeptiert FieldCheckerFloat max_vorkomma int max_nachkomma int Erzeugt einen neuen FIELDCHECKERFLOAT der maz_vorkomma Vor und mazx_nachkomma Nachkommastellen akzeptiert Methoden check s String String berpr ft den String s der eine Floatzahl enthalten soll R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Fehler aufrat 7 15 Klasse FIELD HECKERFLOATNE extends FieldCheckerFloat Der FIELDCHECKERFLOATNE Verzeichnis shared dok berpr ft einen String der eine Floatzahl enthalten soll deren Stellenzahl eine gewisse Stellen zahl vor und nach dem Punkt nicht berschreiten soll Nicht erlaubt sind Null und der leere String in diesem Sinne steht der Name NE f r not empty 7 16 Klasse FIELDCHECKERINT 8 Konstruktoren FieldCheckerFloatNE vorkomma int nachkomma int Erzeugt einen neuen FIELDCHECKERFLOATNE der maximal vorkom ma Vor und nachkomma Nachkommastellen akzeptiert Methoden check s String String berpr ft den String s der eine Floatzahl enthalten soll R ckgabewert ist die Klartextfehlermeldung oder Null falls kein Fehler auftrat 7 16 Klasse FIELD HECKERINT extends FieldChecker Der FIELDCHECKERINT Verzeichnis shared dok berpr ft einen String der eine Integerzahl enthalten soll deren Stellenzahl eine gewisse maximale Stel
95. ekt handelt was schon existierte d h nicht aus der Datenbank ausgelesen werden soll setSkeleton SkeletonFullPath String void Setzt den voll qualifizierten Pfad an dem die Templatefiles gefunden werden k nnen writeAllArray String Gibt die Namen der Spalten in der Datenbankrelation in dem For mat zur ck wie es im DOKUMENTDATENSATZ und im SQLASSISTANT ben tigt wird writeBlocked String Gibt die Namen der FIELDENTRIES die in bestimmten Programm zust nden deaktiviert sein sollen in dem Format zur ck wie es im ResourceBundle Sprache properties ben tigt wird writeCheckers String Gibt die Aufrufe der entsprechenden FIELDCHECKER f r die Einga befelder in dem Format zur ck wie es im DOKUMENTDATENSATZ ben tigt wird writeChoices String Gibt die Auswahllisten in dem Format zur ck wie es im ResouceBundle Sprache properties ben tigt wird writeConst String Gibt die Namen der ResourceBundles in dem Format zur ck wie es im ARBEITSABLAUF ben tigt wird writeCursorDown String Gibt die Zielfelder f r die Abw rtsbewegung in dem Format zur ck wie es im ResourceBundle Sprache properties ben tigt wird writeCursorUp String Gibt die Zielfelder f r die Aufw rtsbewegung in dem Format zur ck wie es im ResourceBundle Sprache properties ben tigt wird 146 Besonderheiten in der Implementation von MetaMask writeDefList String Gibt die Namen der Spalten in der Datenbankrelation
96. ent nicht sinnvoll ist wie z B das Ausf hren der Suche bevor Auswahl kriterien eingegeben wurden Welche Kn pfe angezeigt werden ndert sich mit den Programmzust nden deshalb sollen diese Zust nde hier einzeln aufgef hrt werden im Zustand Kriterieneingabe e Ausf hren Dieser Knopf startet die Suche mit den momentan angezeig ten Kriterien Nach der Suche wird das Programm in den Zustand An zeigen des Suchergebnisses wechseln falls die Suche mindestens einen Treffer ergeben hat e Ergebnis erweitern Auch mit diesem Knopf wird die Suche mit den angezeigten Kriterien gestartet allerdings werden gefundene Datens tze zu dem eventuell schon vorhandenen Suchergebnis hinzugef gt e Kriterien verfeinern Hiermit wird eine Suche gestartet die die angege benen Kriterien nicht auf die Datenbank sondern auf das vorher vorhan dene Suchergebnis anwendet e Felder leeren L scht s mtliche Eintr ge in den Textfeldern e Letzte Kriterien Holt die Kriterien zur ck die f r die letzte Suche ein gegeben wurden e Neues Dokument Wechselt in den Zustand Neueingabe im Zustand Anzeigen des Suchergebnisses e nderungen bernehmen Sind nderungen am Suchergebnis vorge nommen worden so k nnen sie mit diesem Knopf in die Datenbank ber 18 Die gemeinsamen Grundelemente der Benutzerschnittstellen tragen werden Dies ist nur m glich wenn der Benutzer Schreibrecht auf der Relation hat siehe Absch
97. er hinzuweisen Genauere Informationen k nnen den Statuszeilen entnommen werden e ist er schwarz so wurde der Wert ver ndert e sieht er aus als ob er in die Maske eingestanzt w re so ist das Feld deaktiviert 1 3 2 Die Statuszeilen Zu den Statuszeilen geh ren sowohl die drei Zeilen am unteren Rand des Fensters als auch der kleinere Bereich unterhalb der Knopfleiste in der rechten unteren 1 3 Das Maskenfenster 17 Ecke des Fensters In den drei Zeilen am unteren Bildschirmrand werden Statusinformationen des Programms angezeigt z B in welchem Zustand es sich gerade befindet Aus serdem werden hier auch die Fehlermeldungen angezeigt und man kann hier ablesen welche Hotkeys im Moment aktiviert sind dies kann sich je nach Pro grammzustand ndern Im Bereich unter der Knopfleiste kann man sehen ob der momentan angezeigte Datensatz modifiziert oder unver ndert ist Hier wird auch angezeigt ob das Einlesen der Datens tze aus der Relation abgeschlossen ist oder nicht f r das Einlesen k nnen zwei verschiedene Geschwindigkeiten ausgew hlt werden es ist sinnvoller die Einlesegeschwindigkeit zu drosseln wenn man in der Zwischenzeit bereits weiterarbeiten will 1 3 3 Die Knopfleiste Die Knopfleiste am rechten Fensterrand dient zur globalen Steuerung der Mas ke hier kann von einem Zustand in den anderen gewechselt oder ein anderer Datensatz angezeigt werden Die Kn pfe sind deaktiviert wenn ihre Funktion im Mom
98. ernative hinzugef gt und dann auch angezeigt Eine m glicherweise bereits vor handene Ausnahme Alternative wird in jedem Fall wieder entfernt setValueForUIText value String uitext String void ndert den internen Text einer vorhandenen Alternative die ber den angezeigten Text uitext identifiziert wird auf value Wenn keine Al ternative mit dem angegebenen Text vorhanden ist ist dieser Aufruf funktionslos 7 54 Klasse TEXTCOLFIELD 119 7 54 Klasse TEXT OLFIELD extends TextColltem implements TextListener Ein TEXTCOLFIELD Verzeichnis shared ui erlaubt es einen Text im Mas kenfenster anzuzeigen und zu modifizieren Es enth lt ein FLITTEXTFIELD und einen FLITSTRICH Die Feldgr e kann auf eine Mindestgr e eingestellt wer den Konstruktoren TextColField name String uiname String width int Erzeugt ein TEXTCOLFIELD mit dem internen Namen name und width sichtbaren Zeichen Methoden getField FLITTEXTFIELD Liefert das FLITTEXTFIELD dieses TEXTCOLFIELDS Diese Funktion wird nur dazu ben tigt das FLITTEXTFIELD beim Konstruieren der Benutzeroberfl che in einen Container einf gen zu k nnen getText String Liefert den aktuellen Wert des Textes requestFocus void Setzt den Eingabe Fokus in dieses TEXTCOLFIELD setCaretPosition pos int void Setzt die Cursorposition in diesem Textfeld setEditable editable boolean void Setz
99. erschiedenen Typen angegeben werden w hrend die spe ziellen Funktionen bei den Programmen Flit MetaMask und Litera in den Ka piteln 2 bis 4 aufgef hrt sind e Textfeld Ein Textfeld bietet die M glichkeit beliebige Texte oder Zahlen einzu geben Es ist wei wenn Eingaben angenommen werden ansonsten ist es grau um anzuzeigen dass es deaktiviert ist e Textfeld mit Liste In einem Textfeld mit Liste ist es wie bei einem normalen Textfeld m glich Daten einzugeben Zus tzlich bietet der Knopf neben dem Textfeld ein Fenster in dem aus den momentan in der Datenbank befindlichen Werte einer gew hlt werden kann Dies gibt dem Benutzer die einfache M glich keit einen bereits vorhandenen Wert einzusetzen aber auch neue Werte zu erg nzen e Auswahlliste Eine Auswahlliste bietet die Wahl zwischen mehreren festgelegten Werten Auswahllisten werden an Stelle der Textfelder mit Listen benutzt wenn es nicht sinnvoll ist die Auswahl der Werte zu erweitern z B bei Ja Nein Angaben e Knopf Kn pfe sind die einzigen Masken Elemente die sich nie auf eine Spalte der Datenbankrelation beziehen k nnen Stattdessen wird mit ihnen ein Kommando verkn pft das an das Hauptprogramm weitergegeben wird Links neben jedem Maskenelement das Werte anzeigt ist ein kleiner Strich der meistens nicht zu sehen ist Dieser Strich zeigt wenn er sichtbar ist Status informationen f r das zugeh rige Feld an e er wird rot um auf einen Fehl
100. ert gel scht exklusiv sind Der R ckgabewert ist ein int 3 Array mit den Eintr gen in der genannten Reihenfolge HisClosed boolean Liefert True falls das SUCHERGEBNIS bereits geschlossen wurde restore void Setzt das SUCHERGEBNIS in den Originalzustand zur ck und ver wirft alle daran vorgenommenen Modifikationen F r jedes Doku ment im SUCHERGEBNIS das bereits gelesen wurde wird die Metho de restore des DOKUMENTDATENSATZES aufgerufen und er wird als nicht gel scht markiert Hierf r sind keine Datenbankzugriffe n tig Danach wird ein Datenbank Rollback ausgef hrt um eventuell vorhan dene Sperren wieder freizugeben Alle DOKUMENTDATENS TZE sind danach wieder im nicht exklusiven Zustand int Liefert die Anzahl der Datens tze des SUCHERGEBNISSES falls sie be reits bekannt ist Ist sie noch nicht bekannt so wird ein negativer Wert zur ckgegeben dessen Betrag eine Mindestanzahl darstellt Falls das SUCHERGEBNIS bereits geschlossen ist wird 0 zur ckgegeben Die Min dest anzahl ist gleichzeitig die Anzahl der DOKUMENTDATENS TZE die schon im SUCHERGEBNIS gecached sind 116 Dokumentation der einzelnen Klassen 7 51 Klasse SUCHERGEBNIS URSOR extends java lang Object Der SUCHERGEBNISCURSOR Verzeichnis shared dok ist ein Cursor zum Na vigieren in einem SUCHERGEBNIS Man kann die Position des Cursors mit den geeigneten Methoden verschieben und dann aus dem SUCHERGEBNIS den Do KUMENTDATEN
101. f r die Auswahlliste der W hrung und dem neuen Men f r die Einzelbestel lungen und der Rechnungsw hrung die Formatstrings best format und kontroll format hinzukamen die das Listen Ausgabeformat f r die Bestell liste bzw die Kontrollliste angeben 10 11 Das erweiterte Rollensystem Litera sieht vor dass sich verschiedene Benutzer in die Datenbank einloggen k nnen wobei die Unterteilung feiner sein soll als mit oder ohne Schreib recht Es ist vielmehr so dass die meisten Benutzer zu einer der drei Informatik Abteilungen geh ren und wenn sie Schreibrechte besitzen auch nur Dokumente hinzuf gen k nnen die zu dieser Abteilung geh ren Dies wird realisiert durch eine weitere Datenbankrelation namens default_ifi in der zu jedem Benutzer der entsprechende Buchstabe A B oder C bzw der Wert Egal eingetragen ist Ist ein Buchstabe eingetragen so k nnen nur B cher der genannten Abteilung hinzugef gt werden au erdem ist bei Suchan fragen das Eingabefeld Abteilung zu Beginn auf diesen Wert gesetzt kann aber ver ndert werden Der Eintrag Egal bewirkt dass Dokumente aller Ab teilungen hinzugef gt werden k nnen Die Funktion dieser Datenbankrelation erfordert dass s mtliche Benutzer der Maske Litera das Leserecht auf ihr erhalten Hat ein Benutzer kein Leserecht auf dieser Relation oder wird sein Name nicht gefunden so erh lt er auch kein Schreibrecht auf der Hauptre
102. fende Nummer des Eintrages in diesem Men ZZ gibt den Typ des Wertes TEXT an wobei die folgenden M glichkeiten bestehen e ui sichtbarer Text des Eintrages wird hierbei f r TEXT der Wert ange geben so wird ein Separator eingef gt e ac ActionCommand das an den ARBEITSABLAUF weitergegeben wird wenn dieser Men eintrag ausgew hlt wird 6 2 Erg nzungen des Hauptprogramms 63 e ty Typ des Men eintrages f r TEXT sind hierbei drei Eintr ge m glich m Men eintrag Dieser Wert braucht nicht angegeben zu werden da er von den Masken als default Wert gesetzt wird c Checkbor Men eintrag Erzeugt einen Men eintrag der an und ausschaltbar ist Die Behandlung dieser Eintr ge erfolgt im ARBEITS ABLAUF gesondert und wird weiter unten genauer beschrieben Es ist m glich ein Untermen mit Checkbox Eintr gen anzulegen Hierbei ist es empfehlenswert die ActionCommands eines Checkbox Men s mit einer charakteristischen Zeichenfolge zu beginnen damit der ARBEITSABLAUF auf diese zusammengeh rigen Eingaben erken nen kann s Submenu ffnet ein Untermen dessen Eintragungen in der Form dok menu MENU X Y ZZ TEXT angegeben werden Dabei entspricht X dem obigen Wert w hrend Y eine fortlaufende Nummer dieses Untermen s ist Die Angaben ZZ und TEXT haben dieselben Wahlm glichkeiten wie im Hauptmen e sc ShortCut Wird hier ein Buchstabe angegeben so wird die entspre chende
103. fert die minimale Ausdehnung dieses SCHLAGWORTCANVASSES HgetPreferredSize Dimension Liefert die gew nschte Ausdehnung dieses SCHLAGWORTCANVASSES getTitelCanvas Canvas Holt die TitelCanvas dieses SCHLAGWORT CANVASSES Diese Methode wird nur f r Layout Zwecke ben tigt mouseClicked e MouseEvent void Implementation des MouseListener Interfaces leer 130 Besonderheiten in der Implementation von Flit mouseEntered e MouseEvent void Implementation des MouseListener Interfaces leer HmouseExited e MouseEvent void Implementation des MouseListener Interfaces leer HmousePressed e MouseEvent void Implementation des MouseListener Interfaces setzt die Selektion mousReleased e MouseEvent void Implementation des MouseListener Interfaces leer paint g Graphics void Zeichnet den SCHLAGWORT CANVAS setSchlagwoerter d DOKUMENTSCHLAGWOERTER void Zeigt die DOKUMENTSCHLAGWOERTER d an Der Wert Null ist er laubt Die Selektion und die Scrollposition werden auf 0 gesetzt Falls jedoch Null bergeben wurde oder die DOKUMENTSCHLAGWOERTER nicht modifizierbar oder leer sind oder der zugeh rige DOKUMENTDA TENSATZ als gel scht markiert ist wird die Selektion auf 1 gesetzt setSelection n int void Setzt die Selektion auf eine bestimmte Zeile Die Scrollposition wird so angepasst dass die Selektion im sichtbaren Bereicht liegt Der Wert 1 bedeutet kein
104. ft eine SQLException falls ein Datenbank Fehler auftritt lockDokument dd DOKUMENTDATENSATZ int Sperrt einen DOKUMENTDATENSATZ in der Datenbank f r exklusiven Zugriff select for update nowait und pr ft ob die aktuellen Daten in der Datenbank noch mit den Originaldaten des Datensatzes ber einstimmen In Abh ngigkeit vom Ausgang des Sperrversuchs und des Datenvergleichs wird der DOKUMENTDATENSATZ in einen bestimmten Zustand gesetzt und ein entsprechender Integer Wert zur ckgegeben Faktenlage DokumentDatensatz Wert Sperren erfolgreich Daten unver ndert exclusiv 1 Sperren erfolgreich Daten wurden zwischenzeitlich ge ndert oder gel scht exclusiv unmodifizierbar 0 Sperren fehlgeschlagen unmodifizierbar 1 Der R ckgabewert ist also genau dann lt 0 wenn der DOKUMENT DATENSATZ jetzt nicht mehr modifizierbar ist und genau dann gt 0 wenn der DOKUMENTDATENSATZ jetzt exklusiv ist quote s String String Ersetzt jeden vorkommenden Apostroph durch zwei Apostrophe Dokumentation der einzelnen Klassen restore se SUCHERGEBNIS void Setzt das SUCHERGEBNIS se komplett in den Originalzustand zur ck und verwirft alle daran vorgenommenen Modifikationen rollback void F hrt ein Datenbank Rollback durch wirft eine SQLException wenn dabei ein Datenbank Fehler auftritt setGast gast boolean void Aktiviert oder deaktiviert den Gast Modus ja nach Wert von gast deleteDokument dok
105. gabe erg nzt wird Diese Angabe kann auch aus einer Li ste ausgew hlt werden Da diese Listen allerdings von der Relation abh ngen m ssen sie bei einer neu erzeugten Maske separat eingegeben werden siehe dazu 1 4 Der Listenassistent 21 F DokNr DokNr Kuerzel Jahr Autoren Titel Abbildung 1 3 Der Listenassistent Kapitel 6 Die Angabe der Spalten im Listenassistenten erfolgt duch Eintra gen des Namens oder zugeordneten K rzels Die erzeugte Liste wird ein einem Listenfenster angezeigt siehe Abbildung 1 4 Abbildung 1 4 Das Listenfenster Man hat die M glichkeit entweder das gesamte Suchergebnis als Liste ausgeben zu lassen oder nur einen bestimmten Bereich der mittels des ersten und letzten gew nschten Datensatzes angegeben werden kann Es k nnen auch die Eigenschaften editierbar und automatischer Zeilenum bruch f r das Listenfenster ausgew hlt werden Ist das Fenster editierbar so kann der Benutzer weitere nderungen an der Listenausgabe vornehmen falls er dies als notwendig erachtet Soll kein automatischer Zeilenumbruch vorge nommen werden so werden die Daten eines Dokumentes in einer einzigen Zeile ausgegeben und erst f r das n chste Dokument wird eine neue Zeile begonnen 22 Die gemeinsamen Grundelemente der Benutzerschnittstellen Kapitel 2 Flit Benutzerhandbuch 2 1 bereinstimmung mit den Grundfunktionen Flit ist die urspr ngliche von Simon Stelling
106. geben 156 Besonderheiten in der Implementation von Litera 10 4 Klasse BESTELLLISTENDARSTFRAME extends java awt Frame implements WindowListener ActionListener Der BESTELLLISTENDARSTFRAME Verzeichnis litera ui ist ein Fenster das eine vorbereitete Bestellliste anzeigt Konstruktoren BestellListdarstFrame s String font Font bldl BestellListendarstListener Erzeugt einen neuen BESTELLLISTENDARSTFRAME der den String s anzeigt Der bergebene BestellListendarstListener bldl wird auf die auftretenden Events reagieren Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces windowActivated e WindowEvent void Implementation des WindowListener Interfaces windowClosed e WindowEvent void Implementation des WindowListnener Interfaces windowClosing e WindowEvent void Implementation des WindowListener Interfaces HwindowDeactivated e WindowEvent void Implementation des WindowListener Interfaces leer windowDeiconified e WindowEvent void Implementation des WindowListener Interfaces leer windowlconified e WindowEvent void Implementation des WindowListener Interfaces leer windowOpened e WindowEvent void Implementation des WindowListener Interfaces 10 5 Interface BESTELLLISTDARSTLISTENER Der BESTELLLISTDARSTLISTENER Verzeichnis litera ui ist ein Interface zur Kommunikation zwi
107. gen 2 2 22 om onen 4 3 Einzelbestellungen und der Warenkorb 2 2 II Implementationsdetails 5 Die Programmstruktur 5 1 berblick ber die Struktur 4 o 4 4 1 a er aa 5 2 Grundklassen shared 2 mm n nern 5 2 1 Verzeichnis dbis mask shared ui 22 2 5 2 2 Verzeichnis dbis mask shared net 5 2 3 Verzeichnis dbis mask shared dok 2 2 2 5 3 Grundklassen templates 2 22 Common nn 5 3 1 Verzeichnis dbis mask templates ui 5 3 2 Verzeichnis dbis mask templates net 5 3 3 Verzeichnis dbis mask templates dok 5 4 die automatische erste Instant erung 2 2 220 5 4 1 Klasse DOKUMENTDATENSATZ 2 222 58 4 2 Klasse KRITERIEN 2 2 2 222mm 5 4 3 Klasse SQLASSISTANT 2 2 2 nn nenn 5 4 4 Klasse ARBEITSABLAUF 2 22 22 5 4 5 ResourceBundle DB properties 2 2 2 0 5 4 6 ResourceBundle Sprache properties 5 5 Die empfohlene Rollen Verwaltung in Oracle 5 5 1 Schreibrechte 2 2 22 on une 5 9 2 Die Rollen an ara 37 37 38 39 41 INHALTSVERZEICHNIS 6 Wie werden die Masken erweitert 59 6 1 Daten die MetaMask nicht automatisch instantiiert 59 6 1 1 Listenformate oaoa 59 6 1 2 das OrderBy Men naoa a 60 6 1 3 Werte der Datenbank Anbindung oo oaaao 61 6 2 Erg nzungen des Hauptprogramms s aoo nn 61 6 2 1 Der Arbeitsablauf 4 42 22 su 2 20 22020
108. hl actionCommand weitergeben wird wenn er an geklickt wird Methoden getPreferredSize Dimension Liefert die gew nschte Dimension dieses Buttons 7 26 Klasse FLITBUTTONBAR extends java awt Panel Die FLITBUTTONBAR Verzeichnis shared ui ist ein Panel das die drei Button Leisten f r die Modi Kriterieneingabe Ergebnisdarstellung und Neueingabe der Maske enth lt Es ist nur jeweils eine dieser drei Button Leisten sichtbar Die Beschriftungen die H he die intern benutzten Action Commands und die Reihenfolge der Buttons wird aus dem ResourceBundle Sprache properties geladen Konstruktoren FlitButtonBar buttons Hashtable rb ResourceBundle Erzeugt eine FLITBUTTONBAR Im Hashtable buttons werden die aus dem ResourceBundle rb gelesenen Buttons mit ihrem Leistenna men ActionCommand als Schl ssel f r sp teren Zugriff gespei chert Methoden displayBar barname String void Zeigt die gew nschte Button Leiste mit dem Namen barname an Die Namen der einzelnen Leisten wurden aus der Property Datei gelesen 7 27 Klasse FLITERRORDIALOG extends java awt Dialog implements ActionListener Der FLITERRORDIALOG Verzeichnis shared ui ist ein modaler Dialog der Maske der einen auch mehrzeiligen Text anzeigt 7 28 Interface FLITFOCUSLISTENER 87 Konstruktoren FlitErrorDialog parent Frame font Font title String
109. hlen haben dieselbe Bedeutung wie bei der Me thode size im SUCHERGEBNIS textColValueChanged source TEXTCOLITEM name String text String void Implementation des TEXTCOLLISTENER Interfaces um den LISTASSI STANTLISTENER benachrichtigen zu k nnen windowActivated e WindowEvent void Implementation des WindowListener Interfaces windowClosed e WindowEvent void Implementation des WindowListener Interfaces windowClosing e WindowEvent void Implementation des WindowListener Interfaces windowDeactivated e WindowEvent void Implementation des WindowListener Interfaces 7 41 Interface LIST SSISTANTLISTENER 103 HwindowDeiconified e WindowEvent void Implementation des WindowListener Interfaces windowilconified e WindowEvent void Implementation des WindowListener Interfaces windowOpened e WindowEvent void Implementation des WindowListener Interfaces 7 41 Interface LIST SSISTANTLISTENER Der LISTAsSSISTANTLISTENER Verzeichnis shared ui ist ein Interface zur Kommunikation zwischen einem LISTASSISTANTFRAME und einem ARBEITS ABLAUF der insbesondere auf das Beenden des LIST ASSISTANTFRAMES reagie ren muss Methoden listAssistant_executeCommand ac String void Wird aufgerufen wenn der Befehl ac in einem LIST SSISTANTFRAME ausgef hrt werden soll listAssistant_textColValueChanged source TEXTCOLITEM name String text String
110. hler Statuszeile des SCHLAGWORTFRAMES auf den String s Wird Null oder der leere String bergeben wird eine Informati on ber die Schlagw rter angezeigt unver ndert gel scht nicht nder bar exklusiv setSchlagwortListener sl SCHLAGWORTLISTENER void Setzt den SCHLAGWORTLISTENER f r diesen SCHLAGWORTFRAME der Wert Null ist erlaubt dann ist kein SCHLAGWORTLISTENER mehr re gistriert textColValueChanged tci TEXTCOLITEM name String text String void Implementation des TEXTCOLLISTENER Interfaces updateAll void Aktualisiert alle Daten im Fenster wird nur ben tigt nachdem eine Zeile gel scht wurde oder nachdem alle Anderungen r ckg ngig gemacht wurden updateSelectedLine void Aktualisiert die Daten der selektierten Zeile im Fenster 8 7 Interface SCHLAGWORTLISTENER Der SCHLAGWORTLISTENER Verzeichnis flit ui ist ein Interface das zur Kommunikation zwischen dem SCHLAGWORTFRAME und dem ARBEITSABLAUF dient Methoden schlagwort_executeCommand ac String void Wird aufgerufen wenn der Befehl mit dem ActionCommand ac aus gef hrt werden soll schlagwort_selectionChanged n int void Wird aufgerufen wenn sich die Selektion Nummer der selektierten Zeile ge ndert hat schlagwort_textColValueChanged source TEXTCOLITEM name String text String void Wird aufgerufen wenn sich der Wert des Eingabefeldes source mit dem Namen name ge ndert hat Der neue Inh
111. hoden setFont font Font void Setzt den Zeichensatz font mit dem neue FLITFRAMES erzeugt werden sollen getOpenCount int Ermittelt wie viele Flit Fenster gerade offen sind und gibt diese Zahl zur ck getArbeitsabl ufe Enumeration Liefert eine Aufz hlung aller laufenden Arbeitsabl ufe openNewWindow void Erzeugt einen neuen ARBEITSABLAUF und ffnet ein neues Flit Fenster Tritt ein DB Fehler beim Offnen der neuen Verbindung auf so wird eine SQLException geworfen openNewWindow k KRITERIEN Erzeugt einen neuen ARBEITSABLAUF und ffnet ein neues Flit Fenster mit den gegebenen KRITERIEN k Der ARBEITSABLAUF wird sofort einen DB Anfrage mit diesen Kriterien stellen und das Ergebnis an zeigen Tritt beim ffnen der DB Verbindung ein Fehler auf so wird eine SQLException geworfen closing al ARBEITSABLAUF ff FLITFRAME void Schlie t den FLITFRAME ff eines ARBEITSABLAUFES al und betrachtet diesen ARBEITSABLAUF ab jetzt als beendet close void Veranlasst den ABLAUFVERWALTER alle gecachten unbenutzten FLIT FRAMES zu vernichten getNewFlitFrame FLITFRAME Holt einen FLITFRAME aus dem Vektor uff bzw erzeugt einen neuen falls uff leer ist keepMax max int void Entfernt vom Vektor uff die letzten FLITFRAMES so dass nur max brigbleiben 7 2 Klasse ARBEITSABLAUF 67 7 2 Klasse ARBEITSABLAUF extends java lang Object implements CheckMenuListe
112. hseln Neben den Navigationskn pfen in der Knopfleiste die denen der Flit hnlichen Masken entsprechen kann man auch im Feld Na me des Hauptpanels die Bezeichnung eines Maskenelements eingeben zu dem dadurch gesprungen wird siehe auch Abschnitt 3 5 in dem das MetaMask Hauptpanel detailliert beschrieben wird und wenn eine Testmaske offen ist so kann ein Maskenelement auch ausgew hlt werden indem man es in der dieser anklickt siehe Abschnitt 3 4 ber die Testmaske 3 3 1 Die Knopfleiste Die Knopfleisten f r die zwei Programmzust nde sehen denen der erzeugten Masken ebenfalls sehr hnlich doch gibt es ein paar feine Unterschiede weshalb deren Funktionen hier dennoch einzeln aufgef hrt werden sollen im Zustand Anzeigen aller Maskenelemente e Maske erzeugen Mit diesem Knopf werden die Klassen f r die Maske geschrieben Sie stehen danach f r berarbeitungen und Erweiterungen von Hand zur Verf gung oder auch direkt zum Compilieren e nderungen r ckg ngig Hiermit k nnen s mtliche Ver nderungen an allen Maskenelementen zur ckgenommen werden Existierte bereits eine Maske so entsprechen die angezeigten Daten wieder dieser Maske anson sten werden alle Felder auf die Defaultwerte zur ckgesetzt e Erstes Vorheriges N chstes Letztes Von der Funktion entsprechen diese Kn pfe genau denen in den erzeugten Masken Die Reihenfolge auf die sie sich beziehen ist die durch die zeilenweise Anordnung i
113. ht gibt es eine beachtliche Zahl von Unterschieden Von vornherein sollte klar sein dass die Datens tze die von MetaMask an gezeigt und bearbeitet werden die Maskenelemente also Textfelder Kn pfe etc der erzeugten Maske sind Dementsprechend werden wir in diesem Ka pitel nicht von Datens tzen sondern stattdessen von Maskenelementen spre chen Verwechslungen mit den Maskenelementen des MetaMask Hauptpanels sind nicht zu bef rchten da die Typen die selben sind die in Kapitel 1 be schrieben wurden bed rfen sie keiner weiteren Erw hnung 3 1 Das Loginfenster MetaMask braucht nur ein einziges Mal auf die Datenbank zuzugreifen wenn n mlich die Arbeit an einer neuen Relation begonnen wird Ab dann werden s mtliche Informationen ber die Maskenelemente der zu erzeugenden Maske im Speicher behalten und keine weiteren Daten sind notwendig Soll ein bereits existierendes Projekt weiter bearbeitet werden so ist daher kein Zugriff auf die Datenbank mehr n tig Das Startfenster siehe Abbildung 3 1 bietet zwei M glichkeiten die Metadaten ber die Maskenelemente einzulesen einerseits kann eine Datenbankverbindung aufgebaut werden aus der die Beschreibung einer Relation geholt wird anderer seits kann der Pfad einer bereits existierenden Maske der Flit Familie angegeben werden aus deren Files die Informationen extrahiert werden k nnen In beiden F llen muss ein Name f r die Maske und der Wurzelpfad siehe dazu A
114. ie t den Frame windowDeactivated e WindowEvent void Implementation des WindowListener Interfaces leer windowDeiconified e WindowEvent void Implementation des WindowListener Interfaces leer windowlconified e WindowEvent void Implementation des WindowListener Interfaces leer windowOpened e WindowEvent void Implementation des WindowListener Interfaces leer 7 43 Interface LISTFRAMELISTENER Der LISTFRAMELISTENER Verzeichnis shared ui ist ein Interface zur Kom munikation zwischen einem FLITLISTFRAME und einem ARBEITSABLAUF Methoden executeListCommand ac String flf FLITLISTFRAME name String value String void Wird aufgerufen wenn ein Befehl in einem FLITLISTFRAME ausgef hrt werden soll dabei ist ac das ActionCommand flf der FLITLISTFRAME von dem der Befehl kommt name der Name des ListFrames und value der Wert den der Benutzer ausgesucht hat 7 44 Klasse LISTMANAGER extends java lang Object Der LISTMANAGER Verzeichnis dok kann aus einem SUCHERGEBNIS eine bersicht in Form eines Strings erstellen Der String enth lt in jeder Zeile einen Datensatz des Suchergebnisses Start und Endposition innerhalb des Such ergebnisses sind frei w hlbar Ebenso ist frei w hlbar welche Spalten die Liste enthalten soll und deren Reihenfolge 7 44 Klasse LISTMANAGER 105 Die abstrakte interne Klasse Part wird zum schnellen Erzeugen des Listentextes benutzt Der
115. ie richtigen Stellen in den Templateklassen schreiben und bei einem erneuten Aufruf auch von diesen Stellen lesen kann sind in diesen Klassen Kommentar Paare eingef gt Diese sind immer von der Form BEGIN labelname END labelname Es ist nicht sinnvoll zwischen die zwei Kommentare eines Paars Texte oder Da ten einzuf gen da diese beim n chsten Speichern mit MetaMask berschrieben werden Die Stellen in den Klassen an denen Daten und Funktionen eingef gt werden k nnen sind gekennzeichnet mit EDIT labelname 52 Die Programmstruktur In den folgenden Abschnitten sollen die Klassen und die Daten vorgestellt wer den die von MetaMask bei den einzelnen Labels eingef gt werden 5 4 1 Klasse DOKUMENTDATENSATZ Die Modifikationen im DOKUMENTDATENSATZ werden von MetaMask vorge nommen Ver nderungen von Hand sind nicht zu empfehlen Der DOKUMENTDATENSATZ enth lt die Daten aus denen ein einzelner Da tensatz besteht Daf r ben tigt er Informationen wie viele Spalten die Rela tion enth lt und wie diese hei en Dar ber hinaus versieht der DOKUMENT DATENSATZ jedes Feld mit einem FIELDCHECKER um zu berpr fen ob die eingegebenen Daten g ltig sind daf r werden Informationen zum Datentyp ge braucht Letztendlich stellt der DOKUMENTDATENSATZ auch einen Zugriff auf den Prim rschl ssel des Datensatzes zur Verf gung DEF LIST Hier werden die Namen der Spalten in der Form public static final String NA
116. iefern die ActionCommands PAGE_UP bzw PAGE_DOWN die Tasten cursor up und cursor down liefern die ActionCommands CUR SOR_UP bzw CURSOR_DOWN die Funktionstasten F1 bis F12 die Ac tionCommands F1 bis F12 Die ActionCommands lassen sich mit Hilfe ei ner bersetzungstabelle die mit der Methode setMapping eingetragen wird ndern Der FLITKEYLISTENER schluckt die KeyEvents die die oben genannten Ta sten liefern d h er ruft die Methode consume der Events auf Attribute keys String Ein Array mit allen originalen ActionCommand Strings zu den Hot keys Konstruktoren FlitKeyListener Erzeugt einen neuen FLITKEYLISTENER und initialisiert ihn mit den in der Beschreibung dieser Klasse erw hnten ActionCommands f r die entsprechenden KeyEvents Methoden keyPressed e KeyEvent void Nimmt ein KeyEvent auf und bersetzt es in das entsprechende Action Command das dann an den registrierten COMMANDLISTENER weiter gegeben wird keyReleased e KeyEvent void Zur Implementation des KeyListener Interfaces leer keyTyped e KeyEvent void Zur Implementation des KeyListener Interfaces leer 7 32 Klasse FLITLISTFRAME 93 setCommandlistener cl COMMANDLISTENER void Setzt einen COMMANDLISTENER f r diesen FLITKEYLISTENER Es ist nur ein einziger COMMANDLISTENER pro FLITKEYLISTENER vorgese hen d h
117. ierte COMMANDLISTENER mit den bersetzten ActionCommands aufgerufen Falls zu einer Taste kein Schl ssel in der bersetzungsta belle existiert wird der COMMANDLISTENER mit dem originalen Ac tionCommand aufgerufen setLabel n int text String void Setzt den Text des nten Labels Die Labels werden von 0 an durch gez hlt zun chst von oben nach unten die Labels unter der Buttonlei ste danach von oben nach unten die Labels unter der Eingabemaske Es stehen in der Klasse ARBEITSABLAUF die Konstanten LABR bzw LABUrx zur Verf gung wobei x Werte von 1 bis 3 annehmen kann setMenuEnabled name String enabled boolean void Aktiviert oder deaktiviert das Men mit dem Namen name je nach dem Wert von enabled 7 30 Klasse FLITINFOFRAME 9 setMenultemEnabled ac String enabled boolean void Aktiviert oder deaktiviert das Menultem mit dem ActionCommand ac je nach dem Wert von enabled setTextColListener tcl TEXTCOLLISTENER void Setzt einen TEXTCOLLISTENER f r diesen FLITFRAME Er wird in al len in diesem FLITFRAME enthaltenen TEXTCOLITEMS gesetzt Es ist nur ein einziger TEXTCOLLISTENER pro FLITFRAME vorgesehen d h nur der zuletzt gesetzte TEXTCOLLISTENER wird benachrichtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein TEXTCOL LISTENER mehr registriert setVisibleAbbruch visible boolean void Setzt den Button Abbruch der SpeedBar auf sichtbar oder unsichtbar
118. iese DOKUMENTSCHLAG WOERTER geh ren getKurzuebersicht String Liefert eine Kurz bersicht ber die Schlagw rter Diese besteht aus ei ner durch Kommata getrennten Liste der ersten zehn Schlagw rter und dem jeweiligen Gewicht in Klammern hinter jedem SCHLAGWORT getOriginalSize int Liefert die Anzahl der Schlagw rter in der Sammlung die eine ROWID besitzen indexOf s SCHLAGWORT int Liefert die Nummer des SCHLAGWORTES s die Z hlung beginnt bei 0 Falls das SCHLAGWORT nicht in der Sammlung ist wird 1 zur ckgege ben 126 Besonderheiten in der Implementation von Flit isExclusive boolean Gibt an ob diese DOKUMENTSCHLAGWOERTER in der Datenbank zum exklusiven Zugriff gesperrt wurden isModifiable boolean Gibt ab ob diese DOKUMENTSCHLAGWORERTER modifizierbar sind isModified boolean Gibt an ob die DOKUMENTSCHLAGWOERTER modifiziert wurden d h ob irgendein SCHLAGWORT der Sammlung modifiziert oder als gel scht markiert wurde restore void L scht alle Modifikationen und stellt den Originalzustand wieder her Alle Schlagw rter ohne ROWID werden entfernt restore nr int void Stellt den Originalzustand des SCHLAGWORTES an der Position nr wie der her die Z hlung beginnt bei 0 Hat das SCHLAGWORT keine ROW ID ist dieser Aufruf funktionslos Wirft ggf eine ArrayIndexOutOf BoundsException setDokument DOKUMENTDATENSATZ dok void Teilt diesen DOKUMENTSCHLAGWOERTER
119. iese TEXTCOLAREA HsetCaretPosition pos int void Setzt die aktuelle Cursorposition in dieser TextArea setEditable editable boolean void Setzt die TEXTCOLARFA auf editierbar oder nicht editierbar je nach Wert von editable Im nicht editierbaren Fall wird der FLITSTRICH au tomatisch auf unsichtbar gesetzt setText text String void Setzt den Wert des Textes auf text textValueChanged te TextEvent void Implementaiton des TextListener Interfaces um die registrierten TEXT COLLISTENER benachrichtigen zu k nnen 7 53 Klasse TEXT OLCHOICE extends TextColltem implements ItemListener Die Klasse TEXTCOLCHOICE Verzeichnis shared ui erlaubt es einen Text im Maskenfenster anzuzeigen Der Text kann modifiziert werden allerdings ist nur eine Auswahl fester Werte aus einer Liste von Alternativen m glich Ein TEXTCOLFIELD enth lt einen FLITSTRICH Attribute value String Der momentan ausgew hlte Wert items Vector Der Vektor mit den ausw hlbaren Eintr gen extravalue String Ein m glicherweise vorhandener zus tzlicher Wert 118 Dokumentation der einzelnen Klassen Konstruktoren TextColChoice name String uiname String items Vector Erzeugt eine TEXTCOLCHOICE mit dem internen Namen name und dem Vektor items als Alternativenliste Eine Alternative selbst ist wie derum ein Vektor der zwei Strings enth lt Den in der Benutzerober f
120. im Vektor v gegebenen Liste die abwechselnd Strings Lieferanten und FloatZahlen Bestell summe enth lt Es muss ein BESTELLFRAMELISTENER bfl angegeben werden der ber die auftretenden Events benachrichtigt wird Der Na me name dient ausschlie lich dem BESTELLFRAMELISTENER zur Iden tifikation Die Angabe des Strings Rechnungs WaehrungUI ist lediglich zur Bezeichung der Zahlen in der Liste n tig Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces displayAndToFront void Macht diesen BESTELLFRAME sichtbar und bringt ihn nach vorne getPreferredSize Dimension Holt die bevorzugte Gr e des BESTELLFRAMES keyPressed e KeyEvent void Implementation des KeyListener Interfaces keyReleased e KeyEvent void Implementation des KeyListener Interfaces leer keyTyped e KeyEvent void Implementation des KeyListener Interfaces leer pleaseBeAsWideAs w int void Schl gt dem BESTELLFRAME eine gew nschte Breite vor pleaseCenterOver parent Frame void Positioniert den BESTELLFRAME so auf dem Bildschirm dass er zen triert ber dem Frame parent erscheint ohne sich jedoch ber den Bild schirmrand hinaus zu erstrecken 10 3 Interface BESTELLFRAMELISTENER 155 pleaseDispose void Veranlasst den BESTELLFRAME sich zu schlie en und alle Resourcen freizugeben Darf mehrfach aufgerufen werden alle Aufrufe nach dem e
121. in dem For mat zur ck wie es im DOKUMENTDATENSATZ und im SQLASSISTANT ben tigt wird writeFocushelp String Gibt die Focushelp Strings in dem Format zur ck wie es im Resource Bundle Sprache properties ben tigt wird writeLayout String Gibt das Layout der Maske in dem Format zur ck wie es im Resour ceBundle Sprache properties ben tigt wird writeListCommands String Gibt die Befehlszeilen f r die Kn pfe der TExXTCOLFIELDWITHLIST in dem Format zur ck wie es im ARBEITSABLAUF ben tigt wird writeNames String Gibt tableOwner und tableName in dem Format zur ck wie es im SQLASSISTANT ben tigt wird writeNewArray String Gibt die Namen der Spalten in der Datenbankrelation f r einen neuen Datensatz in dem Format zur ck wie es im SQLASSISTANT ben tigt wird writeOrderBy String Gibt die Formulierung des OrderBy Men s in dem Format zur ck wie es im ResourceBundle Sprache properties ben tigt wird writeParsers String Gibt die Aufrufe der entsprechenden Parser f r die Eingabefelder in dem Format zur ck wie es in den KRITERIEN ben tigt wird writePermission String Gibt die Formulierung der SQL Anfrage nach der Schreiberlaubnis in dem Format zur ck wie es im SQLASSISTANT ben tigt wird writePrimaryKeys String Gibt die SQL Anfrage nach den Prim rschl sseln in dem Format zur ck wie es im DOKUMENTDATENSATZ ben tigt wird writeSortArray String Gibt die Namen der Spalten in
122. ion des letzten Datensatzes im SUCHERGEBNIS an der in die Liste aufgenommen werden soll dabei bedeutet der Wert 1 dass die Datens tze bis zum Ende des SUCHERGEBNISSES Beachtung finden sollen setSuffix suffix String void Setzt den Text der der eigentlichen Liste folgt darf Null sein parseString s_orig String Part Parst den Formatstring s_orig und erzeugt einen entsprechenden Array von Parts der zur ckgegeben wird 7 45 Klasse LOGINMANAGER extends java lang Object Der LOGINMANAGER Verzeichnis net ist f r den Login Vorgang zust ndig Er reicht Usernamen und Passwort an die Datenbank weiter und stellt fest ob Schreibrechte gew hrt werden Geligt der Login wird danach ein Maskenfenster ge ffnet Konstruktoren LoginManager Default Konstruktor leer da die Klasse nur statisch benutzt wird 7 46 Klasse RBMANAGER 107 Methoden login driver String url String name String pass String isGast boolean inAnApplet boolean void F hrt den Login Vorgang durch Der Aufrufer sollte vorher im AB LAUFVERWALTER den gew nschten Font f r das Maskenfenster gesetzt haben Die Verbindung an die Datenbank wird mittels des Drivers dri ver und der URL url aufgebaut und die Authentifizierung wird mittels name und pass vorgenommen Ist isGast auf False gesetzt wird aus serdem auf Schreibrechte gepr ft Der Parameter inAnApplet gibt an ob das Programm als Applet l uft
123. it Wildcards versehen au er bei einigen Textfeldern bei denen dies explizit verboten ist Be nutzt wird hierf r das Zeichen e Case Sensitive Diese Option bestimmt ob in der Anfrage auf Gro und Kleinschreibung geachtet werden soll Men Suchergebnis e Im Voraus einlesen Hier kann ausgew hlt werden ob bei einer Anfrage das Suchergebnis im Hintergrund eingelesen werden soll Dies ist in zwei Geschwindigkeiten m glich die langsamere empfiehlt sich falls man die Datens tze schon bearbeiten will bevor das Einlesen beendet ist e Bl ttern mit Cursortasten Wird diese Option angeschaltet so kann man mit Hilfe der Cursortasten hoch und runter im Suchergebnis ge nau so navigieren wie mit den Kn pfen Vorheriges und N chstes Ist sie ausgeschaltet so springt man mit den Cursortasten ber die verschie denen aktivierten Textfelder des Hauptpanels e Listen bersicht erzeugen Diese Funktion erm glicht es das Suchergeb nis in Listenform ausgeben zu lassen Eine genauere Beschreibung findet sich im Abschnitt 1 4 Die gemeinsamen Grundelemente der Benutzerschnittstellen Men Dokument Die Funktionen dieses Men s beziehen sich jeweils auf den gesamten momentan angezeigten Datensatz Sie sind deaktiviert wenn sie nicht anwendbar sind e L schen Markiert den Datensatz als gel scht Er wird allerdings erst aus der Datenbank entfernt wenn der Knopf nderungen bernehmen ge dr
124. iziert falls der Wert ungleich dem Originalwert ist setSchlagwort schlagwort String void Setzt den Schlagwort String auf schlagwort Das SCHLAGWORT ist da mit modifiziert falls der Wert ungleich dem Originalwert ist 8 5 Klasse SCHLAGWORTCANVAS 129 undelete void Markiert das SCHLAGWORT als nicht gel scht Die Feldinhalte des SCHLAGWORTES bleiben unver ndert wasOriginal schlagwort String kuerzel String gewicht String boolean Gibt True zur ck falls die bergebenen Daten mit den Originaldaten des SCHLAGWORTES bereinstimmen 8 5 Klasse SCHLAGWORTCANVAS extends java awt Canvas implements MouseListener AdjustmentListener Der SCHLAGWORTCANVAS Verzeichnis flit ui ist die Zeichenfl che eines SCHLAGWORTFRAMES die die Schlagw rter eines Dokuments am Bildschirm in Listenform darstellt Konstruktoren SchlagwortCanvas font Font sf SCHLAGWORTFRAME Erzeugt einen neuen SCHLAGWORTCANVAS f r den SCHLAGWORT FRAME sf Dieser enth lt intern einen TitelCanvas und eine Canvas Scrollbar Methoden adjustmentValueChanged e AdjustmentEvent void Implementation des AdjustmentListener Interfaces getCanvasScrollbar Scrollbar Holt die CanvasScrollbar dieses SCHLAGWORTCANVASSES Diese Me thode wird nur f r Layout Zwecke ben tigt getMaximumSize Dimenstion Liefert die maximale Ausdehnung dieses SCHLAGWORTCANVASSES getMinimumSize Dimension Lie
125. je nach Wert von visible fillMenu rb ResourceBundle prefix String menu Menu void Liest die Eintr ge eines Men s aus dem ResourceBundle rb wo es durch prefix gekennzeichnet ist Die gelesenen Informationen und Submen s werden in das Menu menu eingebaut 7 30 Klasse FLITINFOFRAME extends java awt Frame implements ActionListener Der FLITINFOFRAME Verzeichnis shared ui ist ein selbstst ndiges Informa tionsfenster der Masken Er enth lt einen auch mehrzeiligen Text und einen Button zum Schlie en des Fensters Konstruktoren FlitInfoFrame parent Frame font Font title String infotext String buttontext String Erzeugt einen neuen FLITINFOFRAME ber dem Frame parent mit dem Titel title der den auch l ngeren mehrzeiligen Text infotert enth lt Der Button zum Schlie en des Fensters ist mit buttontext beschriftet Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces 92 Dokumentation der einzelnen Klassen 7 31 Klasse FLITKEYLISTENER extends java awt Object implements KeyListener Der FLITKEYLISTENER Verzeichnis shared ui ist der KeyListener der Mas ke Er reagiert auf Hotkey Tastendr cke und benachrichtigt dann einen COM MANDLISTENER Die Hotkeys und die zugeh rigen ActionCommands sind aus technischen Gr n den in den Sourcecode dieser Klasse fest eingebaut Die Tasten page up und page down l
126. kMenuChanged ac String checked boolean void Diese Methode wird aufgerufen wenn ein CheckboxMenultem ge ndert wurde Der ARBEITSABLAUF der dieses Interface implementiert ndert entsprechende Voreinstellungen bergeben werden das ActionCom mand ac des entsprechenden CheckboxMenultems und die Angabe ob es jetzt aktiviert ist checked auf True 7 5 Interface COMMANDLISTENER Der COMMANDLISTENER Verzeichnis shared ui ist ein Interface das aufge rufen wird wenn der Benutzer im Hauptfenster einen Befehl gibt dies ist bei fast jeder Aktion der Fall Methoden executeCommand ac String void Wird aufgerufen wenn ein Befehl ausgef hrt werden soll 7 6 Klasse CONNECTIONMANAGER extends java lang Object Der CONNECTIONMANAGER Verzeichnis shared dok verwaltet Connections an die Datenbank Er ffnet neue Connections wenn diese verlangt werden und recycled benutzte Connections Konstruktoren ConnectionManager driver String url String username String password String Erzeugt einen neuen CONNECTIONMANAGER mit den entsprechenden Parametern dem Driver driver f r die Datenbank Verbindung der die Datenbank bei der gegebenen url erwartet und den Benutzer username mit dem Passwort password einloggt Methoden close void Wird diese Methode aufgerufen so schlie t der CONNECTIONMANAGER alle unbenutzten gecachten Connections 72 Dokumentation der einzel
127. kgabe undefiniert getErrorString String Holt die KlartextFehlermeldung des letzten Parse Fehlers war noch kein Fehler aufgetreten wird Null zur ckgegeben getSQL String Holt die SQL bersetzung des zuletzt geparsten Strings ist beim Par sen ein Fehler aufgetreten wird Null zur ckgegeben parse s String boolean Parst einen String Es wird True zur ckgegeben wenn das Parsen feh lerfrei durchgef hrt werden konnte parseltem boolean Parst ein Item Die jeweilige Implementation dieser Klasse muss un bedingt sicherstellen dass das Item auf jeden Fall durch die Zeichen amp und terminiert wird Daf r darf sie davon ausgehen dass der zu parsende Teilstring keine f hrenden Leerzeichen mehr enth lt Der R ckgabewert sollte True genau dann sein wenn das Parsen fehlerfrei durchgef hrt werden konnte setAutoWildCards auto boolean void Setzt das automatische Einkleiden des Suchwortes in WildCards Default ist False d h es ist deaktiviert setCaseSensitive casesensitive boolean void Setzt die Case Sensitivit t des Suchwortes Default ist False d h Gro Kleinschreibung wird nicht unterschieden setSpalte spalte String void Setzt den SQL Spaltennamen der Spalte auf die sich dieser Parser be ziehen soll getChar char Holt das aktuelle Zeichen des zu parsenden Strings Liefert 0 falls keine Zeichen mehr da sind nextChar void Verbraucht das
128. l che anzuzeigenden Text und den internen Text dieser Alternative Methoden allowText uitext String value String void F gt eine Alternative zum Vektor der Alternativen hinzu Diese Alter native kann ab jetzt vom Benutzer ausgew hlt werden Falls bereits eine Alternative mit diesem uitext vorhanden ist wird dieser Methodenauf ruf ignoriert forbidText uitext String void Entfernt eine Alternative Sie kann ab jetzt nicht mehr vom Benutzer ausgew hlt werden Falls die Alternative gar nicht vorhanden war wird dieser Methodenaufruf ignoriert getChoice Choice Liefert die Choice dieses TEXTCOLITEMS Diese Funktion wird nur dazu ben tigt die Auswahlliste beim Konstruieren der Benutzeroberfl che in einen Container einf gen zu k nnen getText String Liefert den aktuellen Wert des Textes HitemStateChanged e ItemEvent void Implementation des ItemListener Interfaces um die registrierten TEXT COLLISTENER benachrichtigen zu k nnen requestFocus void Setzt den Eingabe Fokus in diese TEXT OLCHOICE HsetEditable editable boolean void Setzt die TEXTCOLCHOICE auf editierbar oder nicht editierbar je nach Wert von editable Im nicht editierbaren Fall wird der FLITSTRICH au tomatisch auf unsichtbar gesetzt setText text String void Setzt den Wert des Textes auf text Falls dieser Wert nicht im Vektor der Alternativen vorgesehen ist wird er als Ausnahme Alt
129. lation Dies ist notwendig f r den Fall des reinen Gast Logins Dar ber hinaus speichert Litera das Bestelldatum der Dokumente in der Kon trolltabelle kontrolle Auf diese Relation m ssen nur diejenigen Benutzer zu greifen k nnen die Bestellungen ausf hren sollen und das hei t dass sie bereits Schreibrechte auf der Hauptrelation besitzen Abschlie end sei hier noch die Einrichtung der notwendigen Benutzerrollen an gegeben wobei wie im allgemeinen Fall litera_guest f r diejenigen Benutzer gedacht ist die nur Leserechte auf der Hauptrelation besitzen egal ob sie einen Eintrag in der Relation default_ifi haben oder nicht litera_user f r dieje nigen Benutzer die Schreibrechte besitzen und litera_admin f r den Admini strator create role litera_guest grant select on literfassung to litera_guest grant select on default_ifi to litera_guest 10 11 Das erweiterte Rollensystem 161 create role litera_user grant litera_guest to litera_user grant insert update delete on literfassung to litera_user grant select on litera_readwrite to litera_user grant select insert update delete on kontrolle to litera_user create role litera_admin grant litera_user to litera_admin grant insert update delete on default_ifi to litera_admin Der Administrator hat durch den Schreibzugriff auf die Relation default ifi die M glichkeit neue Benutzer in diese Relation einzuf gen oder deren Eintr ge zu ver ndern um ihnen ggf
130. ll ob das Programm eine Routine besitzt die einen neuen Wert erzeugt oder ob einfach der Wert NULL eingesetzt werden soll Letz teres ist insbesondere dann vorteilhaft wenn die Datenbank mittels eines Datenbank Triggers bei der Eingabe NULL einen neuen Wert selbst er zeugt Wie und wo die erzeugte Maske modifiziert werden muss damit es selbst Werte erzeugen kann wird in Kapitel 6 beschrieben MetaMask Benutzerhandbuch e auto Wildcards keine auto Wildcards Bei einigen Textfeldern z B Buchtiteln ist es sinnvoll die Eingabe in Wildcards einzufassen Dieses Feld verhindert dies generell doch auch wenn hier auto Wildcards ausgew hlt wird k nnen in der erzeugten Maske Anfragen ohne Wildcards gestellt werden siehe auch Abschnitt 1 3 4 e offen f r Updates kein Update m glich Soll ein einmal eingetra gener Wert unver nderlich bleiben etwa bei einer Inventarnummer so kann das in diesem Feld entsprechend eingestellt werden e bezeichnet Dies ist eine Kombination aus zwei Feldern einer Auswahl liste mit den Werten ja mit und nein sowie einem dazugeh rigen Textfeld Bei Textfeldern und Auswahllisten bezieht sich diese Angabe auf einen Textbezeichner der vor das Maskenelement geschrieben wird wie bei den meisten Feldern im MetaMask Hauptpanel als Beispiel f r ei ne Auswahlliste ohne separaten Bezeichner sei das vorangegangene Feld Updates genannt Bei Kn pfen wird hier die Beschriftung ang
131. llen die vorgenommenen nderungen bernommen werden so muss der Knopf Test maske aktualisieren im der Knopfleiste des Hauptfensters angeklickt werden Obwohl die Testmaske der erzeugten Maske genau entspricht hat sie keinerlei Funktionalit t Das Anklicken von Feldern Kn pfen oder Men eintr gen hat lediglich zur Folge dass das entsprechende Kommando das an das Hauptpro gramm weitergegeben werden w rde in den Statuszeilen des Hauptfensters aus gegeben wird Eine Ausnahme davon bilden die Men eintr ge Fenster schlies sen und Programm beenden die beide dazu f hren dass die Testmaske wie der geschlossen wird Dar ber hinaus kann die Testmaske genutzt werden um zwischen den Masken elementen zu wechseln Wird n mlich ein Feld der Testmaske angeklickt so zeigt das MetaMask Hauptfenster den dazugeh rigen Eintrag an In der Testmaske kann auch festgestellt werden ob die Auswahllisten richtig eingegeben wurden 32 MetaMask Benutzerhandbuch 3 5 Bedeutungen der einzelnen Felder des Hauptpanels Wie bereits erw hnt besteht ein angezeigter Datensatz aus denjenigen Daten die ein Maskenelement der erzeugten Maske beschreiben Es gibt zwei verschie dene Arten von solchen Maskenelementen einerseits kann eine direkte Entspre chung in der Datenbankrelation bestehen andererseits k nnen die Elemente nachtr glich hinzugef gt worden sein und daher keine solche Entsprechung be sitzen wie das z B bei Kn
132. m Layout ist HisMetaMask boolean Gibt an ob es sich beim bearbeiteten Projekt um MetaMask selbst handelt isModified boolean Gibt zur ck ob ein FIELDENTRY des DATAMANAGERS modifiziert wur de isNew boolean Gibt zur ck ob das Projekt neu aus einer Datenbanktabelle erzeugt wurde length int Gibt die Anzahl der Maskenelemente zur ck Hoad void L dt die entsprechenden Passagen aus den instantiierten Klassenfiles eines bereits existierenden Projektes und ruft die entsprechenden In itialisierungsmethoden auf LoadDatabaseDescription sqla SQLASSISTANT boolean L dt die Beschreibung der Datenbanktabelle aus dem SQLASSISTANT sqla Danach werden die entsprechenden Initialisationen ausgef hrt Gibt den Wert False zur ck wenn ein Datenbankfehler aufgetreten ist LoadFromfFiles SortArray String SetCheckers String void L dt die Namen der Datenbankfelder und eine grundlegende Beschrei bung aus den beiden bergebenen Strings die in dieser Form aus den instantiierten Klassenfiles gelesen werden sollten moveDownFrom fe FIELDENTRY FIELDENTRY Gibt den im Layout dem FIELDENTRY fe nachfolgenden FIELDENTRY zur ck oder fe falls dies der letzte sein sollte movefFirst FIELDENTRY Gibt den im Layout ersten FIELDENTRY zur ck moveLast FIELDENTRY Gibt den im Layout letzten FIELDENTRY zur ck 144 Besonderheiten in der Implementation von MetaMask moveU
133. mes und TestFrames zu identifizieren 9 3 Klasse CHOICEDATA extends java lang Object Die Klasse CHOICEDATA speichert die Angaben einer Auswahlliste d h die Angabe f r den Benutzer UI Wert und den zugeh rigen Wert in der Datenbank DB Wert Diese Angaben k nnen aus einem String ausgelesen werden und in zwei Formaten ausgegeben werden Attribute EMPTY_UI String Der String den der Benutzer im CHOICEEDITFRAME angezeigt be kommt um die Position eines Ul Wertes anzugeben 9 3 Klasse CHOICEDATA 139 EMPTY_DB String Der String den der Benutzer im CHOICEEDITFRAME angezeigt be kommt um die Position eines DB Wertes anzugeben EMPTY_LI String Der String den der Benutzer im CHOICEEDITFRAME angezeigt be kommt und der ihm eine Leerzeile vorschl gt Konstruktoren ChoiceData choiceString String Erzeugt neue CHOICEDATA aus dem String in dem abwechselnd UI und DB Werte stehen Strings die den EMPTY_XX Konstanten ent sprechen werden ignoriert Methoden addChoice ui String db String void F gt die Kombination ui db der Auswahlliste hinzu clone Object Gibt eine Kopie dieser CHOICEDATA zur ck emptyString String Gibt den String zur ck der bei einer leeren Auswahlliste angezeigt wer den soll isOK boolean Gibt an ob der eingebene String fehlerfrei geparst werden konnte size int Gibt die Anzahl der Alternativen in de
134. n Titel Angabe des Dokumententitels dieses Feld darf nicht leer gelassen werden Jahr vierstellige Angabe des Erscheinungsjahres Monat Angabe des Erscheinungsmonats Heraugegeben gibt an ob die Autoren nur Herausgeber sind DokTyp diese Auswahlliste gibt an welchen Typ das angegebene Doku ment hat von der Angabe in diesem Feld ist abh ngig ob einige Felder deaktiviert sind oder ob ein enthaltendes Dokument angegeben werden kann DokTypErg Erg nzungen zum Dokumententyp Zeitschriftenreihe falls es sich bei dem Dokument um eine Zeitschrift handelt kann hier die entsprechende Reihe angegeben werden Band Band der Zeitschrifenreihe Nr Nummer der Zeitschrift Seite Seitenzahlen bei Teildokumenten in der Form erste Seite letzte Seite Auflage Auflage des Dokuments ISBN ISBN des Dokuments Vorversion Dokumentnummer der Vorversion InstOrg Name der Organisation der die Autoren angeh ren Verlag der Verlag in dem das Dokument ver ffentlicht wurde Ort Standort des Verlages CR CR Klassifikation Anzahl in welcher Anzahl das Dokument vorhanden ist Standort wo das Dokument steht Sprache in welcher Sprache das Dokument verfasst ist Signatur Signatur unter der das Dokument zu finden ist Inventar Nr die Inventarnummer des Dokuments Anmerkung in diesem Feld k nnen beliebige ffentlich zug ngliche An gaben hinzugef gt werden Intern Anm Im Gegensatz zu dem Text der im Feld Anmerkung ein gegeben ist werden die i
135. n eintrag Einzelbestellung l schen aus diesem wieder entfernt werden Dadurch werden zun chst noch keine nderungen an dem Datensatz vorgenommen Will man sich den Warenkorb anschauen so geschieht dies mittels Einzelbe stellung selektieren Dadurch wird eine Anfrage an die Datenbank gestellt die genau die Datens tze ausw hlt die im Warenkorb liegen Soll die Einzelbestellung ausgef hrt werden so geschieht das ber den Men ein trag Einzelbestellung ausf hren Dadurch wird wie bei der normalen Bestel lung zuerst ein Fenster ge ffnet in dem der Lieferant ausgew hlt werden kann und dann die entsprechenden Dokumente zu diesem Lieferanten in Listenform angezeigt Die Daten in dieser Liste sollten in den Bestellbrief bernommen werden und wenn die Bestellung best tigt wird werden die Dokumente in der Datenbank als bestellt markiert und in die Kontrolltabelle eingetragen 40 Litera Benutzerhandbuch Teil II Implementationsdetails Kapitel 5 Die Programmstruktur 5 1 berblick ber die Struktur Im zweiten Teil dieses Textes sollen die Verzeichnis und Klassenstruktur des Programmpaketes erl utert werden Als erstes f llt auf dass es unter den Klassen die in der urspr nglichen Struktur von Flit enthalten sind zwei verschiedene Typen gibt Einerseits n mlich sol che die Metadaten der zugrundeliegenden Datenbankrelation beinhalten wie z B Anzahl und Reihenfolge der Spalten Daten
136. n Datenbank Fehler auftritt 7 48 Klasse SQLASSISTANT 111 createSuchErgebnis sqlcemd String SUCHERGEBNIS F hrt die Datenbankanfrage sqlemd durch und bereitet die Ergebnis menge in einem SUCHERGEBNIS auf das dann zur ckgegeben wird Die SQL Anfrage muss vom Aufrufer zusammengestellt worden sein wo bei die Reihenfolge der Spaltennamen entscheidend ist sie sollten von der Methode getDokumentCokumnNames erzeugt worden sein Wirft eine SQLException falls ein Datenbank Fehler auftritt createUniqueList colname String Vector Erzeugt zur Spalte colname eine sortierte Liste aller in der Datenbank vorkommenden Werte mittels einer SQL Anfrage Wirft eine SQLEx ception falls dabei ein Datenbank Fehler auftritt getDokumentColumnNames String Liefert einen String mit allen Spaltennamen der Datenbankrelation durch Kommata getrennt Vor jedem Spaltennamen ist das Pr fix d gesetzt Die Reihenfolge der Spaltennamen ist bei allen lesenden SQL Anfragen bindend da sich andere Methoden auf die Reihenfolge der Spalten im ResultSet verlassen getTableName String Liefert einen String mit dem Namen der Haupttabelle getTableOwnerName String Liefert einen String mit dem Namen des Benutzers dem die Tabellen in der Datenbank geh ren insertNewDokument dok DOKUMENTDATENSATZ String F gt ein neues Dokument in die Datenbank ein Ermittelt zum Einf gen die Werte die das Programm selbst generiert Wir
137. n Wert von 0 f r toRow l scht den FIELDENTRY aus dem Layout ein Wert von 0 f r toCol setzt den FIELDENTRY ans Ende der Zeile toRow und ein Wert von 1 f r toCol f gt den FIELDENTRY als neue toRowte Zeile ein save for_real boolean void Speichert die eingegebenen Daten in entsprechenden Klassenfiles Wenn das Projekt neu aus einer Datenbank erzeugt wurde werden s mtliche Klassen neu aus den Templates instantiiert ansonsten werden die nde rungen an die entsprechenden Stellen der bereits existierenden Klassen files eingetragen Au erdem werden die ResouceBundles neu geschrie ben Ist for_real auf False gesetzt d h es soll nur ein ResouceBundle f r ein Testfenster geschrieben werden so werden die Klassenfiles weder instantiiert noch modifiziert 9 6 Klasse DATAMANAGER 145 setBasic ProjectFullPath String ProjectJavaPath String ProjectName String tableOwner String tableName String void Setzt die entsprechenden Werte die f r alle DATAMANAGER gleich blei ben setChoices dbName String newChoices CHOICEDATA void Setzt die Auswahlliste f r den FIELDENTRY mit dem Namen dbName auf newChoices Eine eventuell vorher vorhandene Auswahlliste wird gel scht Die Angabe Null f r dbName speichert die Auswahlliste un abh ngig von einem FIELDENTRY es kann aber auch hier nur eine ge speichert werden setProjectExistedBefore peb boolean void Teilt dem DATAMANAGER mit dass es sich um ein Proj
138. n der er zeugten Maske gegebene e Neues Maskenelement Wechselt in den Zustand Neueingabe 3 4 Die Testmaske 31 e Testmaske Mit diesem Knopf wird eine neue Testmaske ge ffnet bzw eine bereits offene auf den aktuellen Stand gebracht F r eine genauere Beschreibung siehe Abschnitt 3 4 im Zustand Neueingabe e Element einf gen F gt das neue Maskenelement in die Maske ein und wechselt in den Zustand Anzeigen aller Maskenelemente e nicht einf gen Dieser Knopf wechselt in den Zustand Anzeigen aller Maskenelemente zur ck ohne das Element einzuf gen S mtliche ein gegebene Informationen auch die f r eventuelle Auswahllisten werden verworfen e Leeren L scht alle Felder Auch die eventuell eingegebenen Daten einer Auswahlliste werden gel scht 3 4 Die Testmaske Die Testmaske ist haupts chlich daf r gedacht das Layout der erzeugten Mas ke zu berpr fen Eine Testmaske die ge ffnet oder aktualisiert wird orientiert sich immer an den momentanen Werten der Maskenelemente es ist also nicht notwendig vorher auf Maske erzeugen im Hauptfenster zu klicken vielmehr kann dies dazu f hren dass die bisherige Fassung berschrieben wird und nicht wieder hergestellt werden kann selbst wenn die neue sich als weniger gut her ausstellt Da das erzeugen des Hauptpanels in der Testmaske eine relativ aufwendige Ope ration ist wird die Testmaske nicht bei jeder nderung aktualisiert So
139. n die Fenster des Pro gramms Flit vor 1 1 Das Loginfenster Wird eine Maske gestartet so wird der Benutzer im Loginfenster siehe Abbil dung 1 1 zuerst um seinen Login in der Datenbank gebeten Das Fenster hat eine Men zeile ber die das Programm beendet die Schriftgr e eingestellt oder ein Hilfetext angezeigt werden kann Gelingt der Login nicht so bleibt das Loginfester sichtbar und eventuelle Tipp fehler k nnen korrigiert werden Ist der Login gelungen so verschwindet das Loginfenster und stattdessen erscheint das Maskenfenster F r Benutzer die keinen eigenen Login haben steht ein Gast Login parat Al lerdings haben G ste grunds tzlich kein Schreibrecht auf die Datenbankrelation f r die Verwaltung der Schreibrechte siehe Abschnitt 5 5 14 Die gemeinsamen Grundelemente der Benutzerschnittstellen Programm Schriftgr e Forschungsliteratur Login Username schell Pam Login Gast Login Abbildung 1 1 Das Login Fenster 1 2 Die Programmzust nde Die von MetaMask erzeugten Masken bieten von vornherein einige Funktionen Dazu geh rt das Suchen in der Datenbankrelation das die Hauptanwendung darstellen d rfte Der Zugriff auf die Datens tze der Relation ist nur ber ein so erzeugtes Suchergebnis m glich das allerdings noch erweitert und verfeinert werden kann Daneben bieten die Masken die M glichkeit neue Datens tze in die Relation einzuf gen oder bereits vorhandene zu bera
140. n eine Fehlermeludung in der Statuszeile des FLIT LOGINFRAMES aus 7 34 Klasse FLITSPEEDBAR extends java awt Panel Die FLITSPEEDBAR Verzeichnis shared ui ist ein Panel das die speed bar Button Leiste enth lt Es zeigt entweder die Button Leiste speedbar einen Textstring stop oder eine leere Fl che Die Beschriftungen die intern benutzten ActionCommands und die Reihenfolge der Buttons wird aus dem ResourceBundle Sprache properties geladen Konstruktoren FlitSpeedBar buttons Hashtable rb ResourceBundle Erzeugt eine FLITSPEEDBAR die Buttons die aus dem ResourceBundle rb gelesen werden werden im Hashtable buttons f r sp teren Zugriff gespeichert Methoden displayBar barname String void Zeigt die gew nschte Button Leiste mit dem Namen barname an M gli che Namen sind speedbar stop und empty setVisibleAbbruch visible boolean void Setzt den Button Abbruch auf sichtbar oder unsichtbar 7 35 Klasse FLITSTRICH extends java awt Canvas Der FLITSTRICH Verzeichnis shared ui ist ein senkrechter Strich Er kann durchsichtig schwarz oder rot sein oder auch ein 3D Aussehen annehmen Die Breite des Striches ist fixiert in der H he kann er sich beliebig ausdehnen Er wird in den meisten F llen dazu benutzt den Status eines Textfeldes zu dem er geh rt anzuzeigen 7 35 Klasse FLITSTRICH 97 Attribute ERROR
141. nT Erweitert Der SQLASsSISTANT wurde um die Funktionalit t erweitert die Default Abtei lung f r einen Benutzer aus der Datenbank auslesen zu k nnen und die Ver waltung der Kontrollliste zu bernehmen Methoden getDefaultAbteilung name String String Liefert einen String mit dem Defaultwert f r die Abteilung des Benut zers mit dem LoginNamen name Kann auch Egal zur ckgeben getBestDatum doknr String abteilung String String Liest das Bestelldatum des durch doknr und abteilung eindeutig identi fizierten Dokuments aus der Kontrolltabelle Ist dieses Dokument nicht in die Kontrolltabelle eingetragen so wird der String nicht vorhanden zur ckgegeben Tritt beim Zugriff auf die Datenbank eine Exception auf so wird der String SQL Zugriffsfehler zur ckgegeben deleteFromKontrolle void L scht diejenigen Eintr ge aus der Kontrollliste bei denen der zugeh ri ge Eintrag in der Haupttabelle nicht mehr als bestellt markiert ist insertIntoKontrolle doknr String abteilung String void F gt ein Dokument das ber doknr und abteilung eindeutig identifiziert wird in die Kontrollliste ein dies protokolliert die Bestellungen 160 Besonderheiten in der Implementation von Litera 10 10 ResourceBundle Sprache properties Erweitert Im ResourceBundle Sprache properties wurde den erweiterten Anforderun gen dadurch Rechnung getragen dass abgesehen von den Eintr gen
142. nem entspre chenden FIELDCHECKER berpr ft falls dieser einen Fehler findet wird die Fehlermeldung als String zur ckgegeben sonst Null 7 8 Klasse ExPERTSQLEDITOR 75 SQLprimaryKey prefix String String In dieser Methode wird beim Instantiieren eingetragen welche Felder den Prim rschl ssel der Datenbankrelation darstellen Der R ckgabe wert ist ein String mit der SQL Anfrage die in der Tabelle mit dem Namen prefix auf Gleichheit mit den Prim rschl sselwerten dieses Do KUMENTDATENSATZES testet addX X X name String void F r jeden FIELDCHECKER gibt es eine solche Methode die eine neue Instanz des entsprechenden Checkers erzeugt und im DOKUMENTDA TENSATZ abspeichert doCheck feld String wert String String Ruft den FIELDCHECKER des Feldes mit dem Namen feld auf falls dieser existiert und l sst diesen den String wert berpr fen 7 8 Klasse EXPERTSQLEDITOR extends java lang Dialog implements ActionListener Der EXxPERTSQLEDITOR Verzeichnis shared ui ist ein modaler Dialog der Maske In Ihm kann der Benutzer sofern er den Experten Modus angeschaltet und SQL Anfrage editieren ausgew hlt hat die Anfrage modifizieren bevor sie an die Datenbank abgeschickt wird Konstruktoren ExpertSQLEditor parent Frame sqlcmd String erzeugt einen EXPERTSQLEDITOR der ber dem parent Fenster er scheint und anfangs die Anfrage sqlcmd anzeigt Der parent Frame wird blockie
143. nen Klassen getNewConnection Connection Gibt eine offene neue oder wiederbenutzte Verbindung an die Da tenbank zur ck Diese ist auf AutoCommit False gesetzt Tritt ein Datenbank Fehler auf so wird eine SQLException geworfen getUsername String Gibt den in der Klasse gespeicherten Namen des Benutzers in der Da tenbank zur ck recycle con Connection void Gibt einen benutzte Connection con an den CONNECTIONMANAGER zur ck Es d rfen danach au erhalb des CONNECTIONMANAGERS kei nerlei Verweise auf diese Connection mehr existieren 7 7 Klasse DOKUMENTDATENSATZ extends java lang Object Ein DOKUMENTDATENSATZ stellt einen Eintrag in der Datenbankrelation dar Gleichzeitig werden hier die Ver nderungen die an diesem Datensatz vorgenom men werden gespeichert bevor sie in die Datenbank geschrieben werden dies gilt auch f r ein L schen des Datensatzes Ein DOKUMENTDATENSATZ kann als nicht modifizierbar markiert sein Werden Ver nderungen an diesem Daten satz vorgenommen so wird er als exklusiv in der Datenbank gesperrt Jedes Feld wird durch einen String identifiziert String Konstanten f r alle Feld namen stehen statisch in dieser Klasse bereit weshalb sie auch f r jede neue Datenbankrelation erneut instantiiert werden muss sie liegt daher im Verzeich nis dok Der Wert eines Feldes ist ebenfalls ein String der allerdings nicht Null sein darf zur Speicherung eines Datenbank NULL Wertes wird
144. ner CommandListener TextColListener ListFra meListener ListAssistantListener FlitFocusListener Diese Klasse ist die zentrale Klasse einer Maske und wird im Verzeichnis dok instantiiert Sie regelt den gesamten Arbeitsablauf f r ein Flit Fenster Dazu geh ren Ver nderungen am Aussehen des Fensters Men und Knopfleisten aber auch Auslesen und Darstellen eines Datensatzes aus dem Suchergebnis und die Reaktion auf s mtliche Eingaben im Hauptfenster Attribute cm CONNECTIONMANAGER Der CONNECTIONMANAGER f r die Verbindungen zur Datenbank gast boolean Gibt an ob die Maske im Gast Modus l uft inAnApplet boolean Gibt an ob die Maske als Applet gestartet wurde sqla SQLASSISTANT Der von diesem ARBEITSABLAUF benutzte SQLASSISTANT br BACKGROUNDREADER Der BACKGROUNDREADER dieses ARBEITSABLAUF der das Einlesen der Datens tze im Hintergrund erm glicht krit KRITERIEN Die aktuell benutzten dargestellten editierbaren KRITERIEN autowildcards boolean Gibt an ob die Felder bei denen dies erlaubt ist an beiden Enden automatisch mit Wildcards eingefasst werden sollen casesensitive boolean Gibt an ob die Suche auf Gro Kleinschreibung achten soll expert boolean Gibt an ob der Benutzer in den Experten Modus geschaltet hat nextprev_cursorupdown boolean Gibt an ob der Benutzer mit den Cursor Tasten zwischen Maskenfel dern True oder zwischen Datens tzen False w
145. ngestellt werden Konstruktoren ExprSchlagwortParser Default Konstruktor leer Methoden parseltem boolean Parst ein Item das bei dieser Implementation ein Schlagwort mit even tueller Gewichtsbedingung ist Das Schlagwort wird durch eines der Zei chen amp oder das Stringende terminiert Ausnahme zu jeder im Schlagwort auftauchenden ffnenden Klammer bernimmt diese Implementation auch eine eventuell auftauchende schlie ende Klammer mit in das Schlagwort oder in die Gewichtsbedingung ohne es zu terminieren Gibt True zur ck falls das Parsen fehlerfrei durchgef hrt werden konnt setGewichtSpalte spalteGewicht String void Setzt den SQL Spaltennamen der Spalte der Schlagwortgewichte bli cherweise GEWICHT Es darf kein Tabellenbezeichner wie etwa s vorangestellt werden weil das diese Methode selbst macht 8 4 Klasse SCHLAGWORT extends java lang Object Eine Instanz der Klasse SCHLAGWORT Verzeichnis flit dok besteht aus dem eigentlichen Schlagwort einem Namensk rzel einem Gewicht und einer RO WID Konstruktoren Schlagwort schlagwort String kuerzel String gewicht int Erzeugt ein neues SCHLAGWORT ohne ROWID Intern wird ROWID Null gespeichert Schlagwort schlagwort String kuerzel String gewicht int rowid String Erzeugt ein SCHLAGWORT mit ROWID 128 Besonderheiten in der Implemen
146. nitt 5 5 e nderungen r ckg ngig Hiermit k nnen eventuelle nderungen am Suchergebnis wieder zur ckgenommen werden Die angezeigten Daten s tze entsprechen dann wieder denen in der Datenbankrelation e Erstes Vorheriges N chstes Letztes Diese vier Kn pfe dienen dem Navigieren im Suchergebnis e Neues Dokument Wechselt in den Zustand Neueingabe e Neue Suche Wechselt in den Zustand Kriterieneingabe Das Such ergebnis wird dadurch noch nicht gel scht im Zustand Neueingabe e nderungen bernehmen Hiermit wird der neue Datensatz in die Re lation eingef gt e nderungen r ckg ngig L scht den Inhalt aller Textfelder e Vorherige Daten Holt die Daten des letzten angezeigten Dokumentes in die Eingabemaske f r das neue Dokument e Neue Suche Wechselt in den Zustand Kriterieneingabe 1 3 4 Die Men zeile Die Men zeile umfasst sieben Men s ber die teilweise Parameter gesetzt wer den und teilweise Operationen am aktuellen Datensatz durchgef hrt werden k nnen Im einzelnen sind dies Men Programm e Neues Fenster Hiermit kann ein neues Maskenfenster ge ffnet werden Die Vorg nge in den unterschiedlichen Fenstern sind nicht miteinander verbunden e Fenster schlie en Schlie t das zugeh rige Fenster Wurden nderungen vorgenommen die noch nicht gesichert wurden so wird der Benutzer vor her gefragt ob diese in die Datenbank bertragen oder verworfen werden sollen e
147. nternen Anmerkungen nicht an Benutzer weiter gegeben die sich mittels des Gast Logins angemeldet haben 2 3 Schlagw rter 25 e Verwendung Angaben ber die Verwendung des Dokuments e Schlagw rter In diesem Textfeld werden die Schlagw rter des Dokumen tes angezeigt falls solche vorhanden sind Gleichzeitig ist dieser Bezeich ner ein Knopf der ein separates Fenster ffnet in dem die Schlagw rter modifiziert oder neue hinzugef gt werden k nnen f r eine genauere Be schreibung siehe Abschnitt 2 3 e in DokNr Ist das angezeigte Dokument in einem anderen enthalten so wird hier die Dokumentennummer des anderen Dokumentes angezeigt Die Informationen um welchen Dokumententyp es sich bei dem umfassenden Dokument handelt sowie dessen Autoren und Titel werden in den nach folgenden Textfeldern angezeigt Diese Felder sind immer deaktiviert da Ver nderungen an diesen Werten in dem umfassenden DOKUMENTDA TENSATZ vorgenommen werden sollten e Anzeigen Dieser Knopf bezieht sich ebenfalls auf das Dokument in dem das aktuelle enthalten ist Durch Dr cken kann man ein neues Masken fenster ffnen das dieses andere Dokument anzeigt 2 3 Schlagw rter Im Unterschied zu der Grundfunktionalit t der erzeugten Masken umfasst die Forschungsliteraturdatenbank nicht nur eine einzige Relation in einer weiteren Relation sind Schlagw rter zu den Dokumenten abgelegt die mit unterschiedli chen Gewichten versehen werden k nnen Flit be
148. oid Implementation des LISTFRAMELISTENER Interfaces 102 Dokumentation der einzelnen Klassen HgetFormat String Holt den Inhalt des Format Eingabefeldes itemStateChanged e ItemEvent void Implementation des ItemListener Interfaces HpleaseCenterOver parent Frame void Positioniert den LIST SSISTANTFRAME so auf dem Bildschirm dass er zentriert ber dem Frame parent erscheint ohne sich jedoch ber den Bildschirm hinaus zu erstrecken pleaseDispose void Veranlasst den LIST SSISTANTFRAME sich zu schlie en und alle Re sourcen freizugeben Darf mehrfach aufgerufen werden alle Aufrufe nach dem ersten sind dann wirkungslos pleasePositionHere p Point void Positioniert den LIST ASSISTANTFRAME auf dem Bildschirm Die ge gebene Position wird dabei nur als Empfehlung betrachtet von der abgewichen wird falls der LISTASSISTANTFRAME sonst nicht mehr vollst ndig auf dem Bildschirm sichtbar w re requestFocus void Veranlasst den LISTASSISTANTFRAME den Eingabe Fokus in sein Fen ster zu holen setFirstLast first String last String void Setzt die Texte first und last in die Felder von bzw bis f r die Auswahl des Bereiches innerhalb des SUCHERGEBNISSES ein HsetFormat format String void Setzt den Text format in das Format Eingabefeld ein setNumberOfDocuments n int void Setzt die Angabe wieviele Dokumente sich im SUCHERGEBNIS befin den auf n Negative Za
149. on MAINTABLE to foo_user create role foo_user grant foo_guest to foo_ user grant insert update delete on MAINTABLE to foo_user grant select on foo_readwrite to foo_user create role foo_admin grant foo_user to foo_admin grant all on foo_readwrite to foo_admin Diese Organisation der Rollen hat sich auch in dem Fall als n tzlich erwiesen wenn Werte bereits beim Einloggen abh ngig vom Benutzer gesetzt werden sol len Details hier ber k nnen im Abschnitt 10 11 am Beispiel des Programms Litera nachgelesen werden Als Anmerkung sei hier noch hinzugef gt dass Oracle es anscheinend verbietet Rechte mit grant option an Rollen zu vergeben Daher muss der oben genannte komplette Zugriff auf die Sequenz namentlich jedem Administrator einzeln vom Besitzer der Sequenz gestattet werden damit neue foo_user zugelassen werden k nnen Kapitel 6 Wie werden die Masken erweitert Obwohl die von MetaMask erzeugten Masken schon mit der Grundfunktiona lit t f r Suchen Aktualisieren und Erg nzen der Datenbankrelation ausgestat tet sind kann es mehrere Gr nde geben die Files noch von Hand weiter zu erg nzen Einerseits gibt es zwei Angaben die von MetaMask noch nicht verwaltet werden Die Sammlung der Listenformate f r den Listenassistenten und das Men mit der Auswahl der Sortierreihenfolge bei Datenbankanfragen Wie diese im File Sprache properties eingegeben werden k nnen beschreibt Abschnitt 6 1 1 Soll
150. orhanden wird 1 zur ckgegeben toString String Erzeugt einen String der die Eintr ge im WARENKORB in der Form doknr abteilung enth lt um sie in einer SQL Anfrage auswerten zu k nnen 10 8 Klasse ARBEITSABLAUF Erweitert Der ARBEITSABLAUF wurde dahingehend erweitert dass er die Abteilung des Benutzers gesondert behandelt Au erdem wurden die Funkionalit ten f r die Einzelbestellungen WARENKORB Men bedienung hinzugef gt sowie die Im plementationen der entsprechenden Listener Attribute einzelbestellung WARENKORB Der WARENKORB in dem die Einzelbestellung zusammengestellt wird 10 9 Klasse SQLAss sTAanT Erweitert 159 default_abteilung String Benutzerabh ngige Default Einstellung f r die Abteilung Bei schreib berechtigen Benutzern ist dies die einzige Abteilung der sie Dokumente hinzuf gen k nnen ABTEILUNG_EGAL String Eine String Konstante die angibt dass der Wert der Abteilung irrele vant ist Methoden setDefaultAbteilung def_abteilung String void Setzt den Defaultwert der Abteilung f r den Benutzer executeBestellCommand ac String value String void Implementation des BESTELLFRAMELISTENER Interfaces executeBestellListdarstCommand do_best boolean void Implementation des BestellListendarstListener Interfaces bernimmt die Bestellung in die Literatur Relation und die Kontrolltabelle 10 9 Klasse SQLAssIsTA
151. pFrom fe FIELDENTRY FIELDENTRY Gibt den im Layout dem FIELDENTRY fe vorangehenden FIELDENTRY zur ck oder fe falls dies der erste sein sollte newChoiceFor dbName String tccUl String tccDB String boolean F gt an die Auswahlliste des FIELDENTRIES mit dem Namen dbName eine neue Auswahl an packLayout void L scht eventuell vorhandene freie Felder oder Zeilen aus dem Layout projectExistedBefore boolean Gibt zur ck ob das Projekt aus bereits existierenden Klassenfiles gele sen wurde readFlags NewArray String SetCheckers String UpdateArray String void Liest einige Flags f r die Maskenelemente aus den bergebenen Strings aus die in diesem Format aus den bereits instantiierten Klassenfiles gelesen werden sollten readResourceBundle rb ResourceBundle void Liest die Daten die im ResourceBundle rb enthalten sind aus und setzt die FIELDENTRIES entsprechend removeFieldEntry name String boolean Entfernt einen FIELDENTRY aus der Speicherung Dies ist nur f r nachtr glich erzeugte FIELDENTRIES empfehlenswert da sonst eine Da tenbankspalte keine Entsprechung mehr besitzt MetaMask f ngt eine solche Fehleingabe des Benutzers im ARBEITSABLAUF ab removeNewChoices void L scht eine Auswahlliste die noch zu keinem FIELDENTRY hinzugef gt wurde reposition fe FIELDENTRY toRow int toCol int void Setzt den FIELDENTRY fe auf die Position toCol in der Zeile toRow Ei
152. perren erfolgreich Daten wurden ver ndert exclusive unmodifizierbar 0 Sperren fehlgeschlagen unmodifizierbar 1 Der R ckgabewert ist also genau dann lt 0 wenn die DOKUMENT SCHLAGWOERTER jetzt nicht mehr modifizierbar sind und genau dann gt 0 wenn die DOKUMENTSCHLAGWOERTER jetzt exklusiv sind Man beachte dass im Fall 0 die DokumentSchlagw rter zwar gesperrt aber dennoch nicht modifzierbar sind Klasse SUCHERGEBNIS Modifiziert Die meisten Methoden des SUCHERGEBNISSES sind intern derart erweitert wor den dass sie die Schlagw rter gleich mit verwalten Die einzige Stelle an der dieser Unterschied au erhalb bemerkbar ist ist die Erweiterung der Methode getStatistics wie folgt Methoden getStatistics int 8 12 Liefert die Anzahl der DOKUMENTDATENS TZE in diesem SUCHER GEBNIS die modifiziert gel scht exklusiv sind und wie viele DOKU MENTSCHLAGWOERTER modifiziert gel scht sind Der R ckgabewert ist ein Array das wie folgt zu interpretieren ist Position Wert Anzahl der im SUCHERGEBNIS 0 modifizierten aber nicht als gel scht markierten Datens tze als gel scht markierten DOKUMENTDATENS TZE als exklusiv markierten DOKUMENTDATENS TZE modifizierten DOKUMENTSCHLAGWOERTER als exklusiv markierten DOKUMENTSCHLAGWOERTER Ae UNa ResourceBundle Sprache properties Erweitert Ein zus tzliche Funktion von Flit ist es dass Maskenelemente in Abh ngigkeit vom Dokumenttyp de
153. r ResouceBundle y ResourceBundle Sprache FlitLoginFrame static LoginManager ystatic 2 AblaufVerwalter 1 n Arbeitsablauf SQLAssistant Fi RER gt 1 SuchErgebnis 2 x 1 Kriterien DokumentDatensatz Expression Field Parsers Checkers Abbildung 5 2 Modell der zentralen Klassen bei Flit Die Programmstruktur MetaMask 1 FlitLoginFrame ystatic LoginManager ystatic AblaufVerwalter s mtliche Interfaces Pe 1 n separate Arbeitsablauf FileManager Frames Bee 1 1 FlitFrame 1 DataManager static 1 i ResourceBundleManager Static FieldEntry ResouceBundle i En ResourceBundle Sprache ResourceBundle erzeugte Maske Sprache Abbildung 5 3 Modell der zentralen Klassen bei MetaMask FlitFrame 3 1 N AitButtonBar FlitSpeecBar FlitTextPanel Pi f a TextColFieldwithlist 1 n id FlitButton TextColArea TextColChoice pS T
154. r NAMES An dieser Stelle werden die Konstanten f r den Besitzer und den Namen der Datenbankrelation abgelegt SORT_ARRAY Hier sind die Namen der Spalten in der Relation mit Bezug auf die ffentlichen Konstanten in der Klasse DOKUMENTDATENSATZ in der richtigen Reihenfolge abgelegt Als erste Spalte wird hier automatisch ROWID angegeben NEW_ARRAY Die Spalten die ein neu erzeugter Datensatz umfasst werden hier aufgef hrt Dabei ist zu beachten dass es drei Formen von magischen Strings gibt e der String beginnt mit es soll immer der Wert NULL eingef gt wer den dies ist daf r gedacht wenn ein Datenbanktrigger den eigentlichen Wert erzeugen soll e der String beginnt mit die Maske soll einen neuen Wert erzeugen und diesen einf gen siehe hierzu Kapitel 6 e der String ist signalisiert das Ende der Liste dieser String wird auto matisch als letztes eingetragen UPDATE_ARRAY Bei dieser Marke werden die Spaltennamen eingetragen die ver ndert werden d rfen die Liste wird mit dem Wert NULL abgeschlossen PERMISSION Die Datenbankanfrage die feststellt ob der Benutzer Schreibrechte auf der Rela tion hat wird an dieser Stelle zusammengestellt F r das Verfahren der Schreib rechte in der Flit Maskenfamilie siehe Abschnitt 5 5 5 4 4 Klasse ARBEITSABLAUF Der ARBEITSABLAUF ist die zentrale Klasse der Masken Die grundlegenden Funktionen werden zwar schon von MetaM
155. r Auswahlliste an numberOfLines int Gibt die Anzahl der Zeilen in der String Ausgabe an width int Gibt die maximale ben tigte Breite f r die Ausgabe der Ul und DB Werte an toString String Gibt einen String zur ck in dem der Reihe nach die UI und DB Werte stehen wobei jedes Paar durch eine Freizeile vom n chsten getrennt ist toResourceBundle prefix String String Gibt die Auswahlliste in dem Format an wie sie im ResourceBundle Sprache properties gebraucht wird Das Pr fix prefix muss dabei den kompletten String enthalten der vor ui bzw db gestellt werden soll 140 Besonderheiten in der Implementation von MetaMask 9 4 Klasse CHOICEEDITFRAME extends Frame implements ActionListener Der CHOICEEDITFRAME Verzeichnis metamask ui bietet einen Frame in dem eine Auswahlliste editiert werden kann Konstruktoren ChoiceEditFrame cel CHOICEEDITLISTENER parent Frame name String choices CHOICEDATA Erzeugt einen neuen CHOICEEDITFRAME ber dem Frame parent der dem CHOICEEDITLISTENER cel das Beenden mitteilt Der Frame hat den Namen name und zeigt die Auswahlliste choices an Methoden actionPerformed ActionEvent e void Implementation des ActionListener Interfaces 9 5 Interface CHOICEEDITLISTENER Der CHOICEEDITLISTENER Verzeichnis metamask ui ist ein Interface zur Kommunikation eines CHOICEEDITFRAMES mit einem ARBEITSABLAUF Methoden
156. ran dass keine Datenbank zugriffe f r die Modifikation der Daten n tig sind und andere Listener imple mentiert werden mussten Auf die dennoch vorhandenen hnlichkeiten dieser Klasse mit dem blichen ARBEITSABLAUF soll hier nicht weiter eingegangen werden 138 Besonderheiten in der Implementation von MetaMask Die interne Klasse TestListener implementiert die notwendigen Listener f r das Testfenster Dadurch wird es m glich den ARBEITSABLAUF auf ActionEvents des Testfensters reagieren zu lassen Attribute dm DATAMANAGER Der DATAMANAGER der die Daten der bearbeiteten Maske zur Verf gung stellt fm FileManager Der FileManager der die Zugriffe auf die Templates und die erzeugten Klassenfiles erm glicht Konstruktoren Arbeitsablauf mf FLITFRAME dm DATAMANAGER Erzeugt einen neuen ARBEITSABLAUF der sich auf den MainFrame mf bezieht und die Daten aus dem DATAMANAGER dm gewinnt Methoden choiceCancel void Implementation des CHOICEEDITLISTENER Interfaces choiceChangedText newChoices CHOICEDATA void Implementation des CHOICEEDITLISTENER Interfaces executeRepositionCommand ac String row int col int ok boolean void Implementation des REPOSITIONFRAMELISTENER Interfaces setNumber Arbeitsablauf ummer int void Setzt die Nummer des ARBEITSABLAUFES auf ArbeitsablaufNummer Dadurch wird es m glich die zusammengeh rigigen MainFra
157. rbeiten Diese Funktionalit t wird nat rlich nur solchen Benutzern angeboten die auch auf der Datenbankrelation Schreibrechte haben siehe dazu auch Abschnitt 5 5 Um diese Funktionen zu verwalten haben die Masken drei verschiedene Pro grammzust nde e Kriterieneingabe Wenn die Maske gestartet wird befindet sie sich zun chst in diesem Zustand Hier k nnen Auswahlkriterien f r die nach folgende Suche eingegeben werden e Anzeigen des Suchergebnisses Wird eine Suche ausgef hrt so wech selt das Programm danach in diesen Zustand in dem das Ergebnis an gezeigt wird Der erste Datensatz der gefunden wurde wird sofort im Hauptfenster dargestellt w hrend das Programm im Hintergrund weitere Datens tze aus der Relation ausliest Es ist jedoch m glich die angezeig ten Datens tze sofort zu bearbeiten auch wenn das Einlesen noch nicht abgeschlossen wurde e Neueingabe Dieser Zustand ist nur f r diejenigen Benutzer zug nglich die auf der Datenbankrelation Schreibrechte haben Hier k nnen neue Da tens tze in die Relation eingef gt werden 1 3 Das Maskenfenster 15 Programm Optionen lt Suchergebnis Dokument Feld DokNr 5043 K rzel Lama Erfassungsdatum 1991 12 02 00 00 00 0 Autoren Titel aTeX CTE anual Jahr Monat NULL Rolik DokTyp DokTypErg Zeitschr reihe Band ISBN Vorversion InstOrg Verlag JS Reading MA CR Anzahl Standort Int B Sprache Signatur Inventar Nr 44 Neues Dokument Anmerk
158. re pleasePositionSouthWestOfThisWithMinWidth com Component tcf TEXT CoLFIELD void Positioniert den FLITLISTFRAME auf dem Bildschirm und zwar unter halb der bergebenen Komponente com nach links ausdehnend Zus tz lich versucht der FLITLISTFRAME mindestens so weit zu breit wie das angegebene TEXT OLFIELD tcf zu sein Diese Position wird dabei nur als Empfehlung betrachtet von der abgewichen wird falls der FlitList Frame sonst nicht mehr vollst ndig auf dem Bildschirm sichtbar w re requestFocus void Veranlasst den FLITLISTFRAME den Eingabe Focus in die Liste zu holen windowActivated e WindowEvent void Implementation des WindowListener Interfaces holt den Focus in die Liste windowClosed e WindowEvent void Implementation des WindowListener Interfaces schlie t den Frame windowClosing e WindowEvent void Implementation des WindowListener Interfaces schlie t den Frame 7 33 Klasse FLITLOGINFRAME 95 HwindowDeactivated e WindowEvent void Implementation des WindowListener Interfaces schlie t den Frame HwindowDeiconified e WindowEvent void Implementation des WindowListener Interfaces leer windowlconified e WindowEvent void Implementation des WindowListener Interfaces schlie t den Frame windowOpened e WindowEvent void Implementation des WindowListener Interfaces holt den Focus in die Liste 7 33 Klasse FLITLOGINFRAME exten
159. riftenreihe das Dokument erschienen ist Lieferant wer das Dokument angeboten geliefert hat ISBN ISBN des Dokuments Auflage Auflage des Dokuments Betrag Preis des Dokuments nur Zahlenwert die zugeh rige W hrung wird in der folgenden Auswahlliste namens W hrung angegeben Verlag in welchem Verlag das Dokument erschienen ist Ort Standort des Verlages CR CR Klassifikation Signatur unter welcher Signatur das Dokument zu finden ist Inventar Nr die Inventarnummer des Dokumentes Interessent Interessenten an dem Dokument falls es bestellt werden soll Status Angabe ber den Bestell bzw Inventarisierungszustand des Do kumentes Ansicht falls das Dokument bestellt werden soll wird hier angegeben ob dies nur zur Ansicht geschehen soll Anmerkung weitere Anmerkungen zum Dokument 4 2 Bestellungen Litera kennt zwei unterschiedliche Arten der Bestellung eine wird in der Daten bank gesammelt und zu einem vom Benutzer gew hlten Zeitpunkt ausgef hrt die andere wird in einem Warenkorb gesammelt und muss vor dem Beenden des Programms vom Benutzer bernommen werden Das zweite Verfahren wird im Abschnitt 4 3 beschrieben das erstgenannte in diesem Abschnitt Soll ein Dokument in der Datenbank als zu bestellen markiert werden so geschieht dies indem der Status auf bestellen ge ndert wird Die so markierten B cher k nnen durch den Eintrag Bestellung ausf hren im Men Bestellung zu solch einer
160. rst durch das Instantiie ren in diese Klasse eingetragen werden Attribute fieldnames String Ein Array mit allen Spaltennamen der Datenbankrelation Konstruktoren Kriterien Erzeugt eine neue Instanz ohne eingetragene Werte f r jedes Feld wird ein Parser erzeugt 100 Dokumentation der einzelnen Klassen Methoden clear void L scht alle enthaltenen Kriterien get feld String String Holt den Wert des Feldes mit dem Namen feld liefert Null wenn kein Wert gespeichert ist getErrorPos feld String int Holt die vermeintliche Position des Parse Fehlers im Feld mit dem Namen feld Die Position ist gt 0 und lt length f r einen Wert der L nge length Man beachte dass length keine g ltige Positi on innerhalb eines Strings darstellt in diesem Fall war der Ausdruck vermutlich vorzeitig zu Ende War gar kein Fehler aufgetreten ist die R ckgabe undefiniert getErrorString feld String String Holt die Klartext Fehlermeldung des Parse Fehlers des Feldes mit dem Namen feld oder Null wenn kein Fehler aufgetreten war oder kein Wert gesetzt ist getKriterien Enumeration Liefert eine Aufz hlung aller Feldnamen zu denen ein Wert gespeichert ist getSQL feld String String Holt die SQL bersetzung des Feldes mit dem Namen feld Die Spal tennamen der Felder aus der Datenbanktabelle haben das Pr fix d Liefert den l
161. rsten sind dann wirkungslos pleasePositionHere p Point void Positioniert den BESTELLFRAME auf dem Bildschirm Die Position p wird dabei nur als Empfehlung betrachtet von der abgewichen wird falls der BESTELLFRAME sonst nicht mehr vollst ndig auf dem Bild schirm sichtbar w re requestFocus void Veranlasst den BESTELLFRAME den Eingabe Focus in die Liste zu ho len windowActivated e WindowEvent void Implementation des WindowListener Interfaces windowClosed e WindowEvent void Implementation des WindowListnener Interfaces windowClosing e WindowEvent void Implementation des WindowListener Interfaces windowDeactivated e WindowEvent void Implementation des WindowListener Interfaces windowDeiconified e WindowEvent void Implementation des WindowListener Interfaces leer windowilconified e WindowEvent void Implementation des WindowListener Interfaces schlie t den BESTELL FRAME windowOpened e WindowEvent void Implementation des WindowListener Interfaces 10 3 Interface BESTELLFRAMELISTENER Der BESTELLFRAMELISTENER Verzeichnis litera ui stellt ein Interface zur Kommunikation zwischen einem BESTELLFRAME und einem ARBEITSABLAUF dar Methoden executeBestellCommand ac String value String void Wird aufgerufen wenn der Befehl ac in einem BESTELLFRAME aus gef hrt werden soll Der Wert den der Benutzer ausgew hlt hat wird in value ber
162. rt solange der Editor offen ist Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces getResult String Liefert die evtl modifizierte SQL Anfrage die sichtbar war als der Dialog geschlossen wurde 7 9 Klasse ExXPRERFDATUMPARSER extends ExprParser Der EXPRERFDATUMPARSER Verzeichnis shared dok parst einen String Items sind Dezimalzahlen mit nachfolgender Einheit d D t oder T f r 76 Dokumentation der einzelnen Klassen Tage m oder M f r Monate Sie stellen die Anzahl der Tage bzw Monate dar die das Erfassungsdatum eines Dokuments zur ckliegt Die folgenden weiteren Modifikatoren d rfen enthalten sein e lt lt gt gt Wird keine Relation vorangestellt wird automatisch lt angenommen e Zahll Zahl2 oder auch nur zwei Punkte Das gew nschte Dezimalzahlkriterium wird in der SQL Where Bedingung auf den Ausdruck TRUNC MONTHS_BETWEEN SYSDATE Spaltenname bei Monaten bzw TRUNC MONTHS_BETWEEN SYSDATE Spaltenname 31 0 5 bei Ta gen angwendet G ltige Items sind z B e gt 14 D Dokumente die vor mehr als 14 Tagen erfasst wurden e 3 5 M Dokumente die vor 3 bis 5 Monaten erfasst wurden e 2 D Dokumente die vor maximal 2 Tagen erfasst wurden Aufrufer parsen einen String mit der Methode parse und holen sich falls kein Fehler beim Parsen aufgetreten ist danach den in SQL
163. rwiesen e Element Typ Hier kann angegeben werden ob das Maskenelement ein Textfeld ein Textfeld mit Liste eine Auswahlliste oder ein Knopf sein soll F r die Beschreibung dieser Typen siehe Abschnitt 1 3 1 Ein Textfeld mit Liste ist einem solchen ohne Liste vorzuziehen wenn Werte die in der Relation auftreten h ufig wieder verwendet werden sol len Sind s mtliche zul ssigen Werte von vornherein bekannt so sollte eine Auswahlliste benutzt werden Je nach Auswahl in diesem Feld k nnen die beiden folgenden Felder de aktiviert sein e L nge Hier ist die L nge des Feldes in der erzeugten Maske angegeben Wird ein neues Projekt begonnen so wird dieser Wert auf die L nge in der Datenbank gesetzt dies ist jedoch nicht immer sinnvoll z B bei Spalten die lange Texteingaben akzeptieren deshalb kann dieser Eintrag ver ndert werden e Edit Auswahl Mit diesem Knopf kann die Auswahlliste editiert werden Eine detailliertere Beschreibung findet sich in Abschnitt 3 7 e deaktiviert Sollen einige Maskenelemente je nach Programmzustand de aktiviert sein so kann dies hier eingestellt werden Angeboten werden al le m glichen Kombinationen der drei Programmzust nde Neueingabe Kriterieneingabe und Ergebnisdarstellung e Eingabe bernehmen vom Programm erzeugt als NULL einf gen Mit dieser Auswahl kann entschieden werden ob beim Erzeugen eines neuen Datensatzes ein Wert aus der Maske ausgele sen werden so
164. s Feldes mit dem Namen feld wieder her set feld String wert String String Setzt den Wert des Feldes mit dem Namen feld auf wert Das Feld ist damit modifiziert falls der Wert ungleich dem gesetzten Originalwert ist Falls f r das Feld noch kein Originalwert gesetzt wurde wird ein leerer String als Originalwert gesetzt Der neue Wert wird von einem entsprechenden FIELDCHECKER berpr ft Falls dieser einen Fehler fin det wird die Fehlermeldung als String zur ckgegeben sonst Null Ist der Datensatz nicht modifizierbar so wird der Aufruf ignoriert der R ckgabewert ist in diesem Fall ebenfalls Null setDeleted deleted boolean void Markiert den Datensatz als gel scht oder nicht gel scht Die Feldinhalte des Datensatzes bleiben in jedem Fall unver ndert Die Markierung ist nur dann m glich wenn der Datensatz modifizierbar ist ansonsten wird der Aufruf ignoriert setExclusive exclusive boolean void Markiert den Datensatz als exklusiv oder nicht exklusiv setModifiable modifiable boolean void Markiert den Datensatz als modifizierbar oder nicht modifizierbar Falls der Datensatz als nicht modifizierbar gekennzeichnet wird werden s mtliche Modifikationen des Datensatzes verworfen und der Original zustand wiederhergestellt setOriginal feld String wert String String Setzt den Originalwert des Feldes mit dem Namen feld auf wert Das Feld ist damit unmodifiziert Der neue Wert wird von ei
165. s momentan angezeigten Dokuments deaktiviert werden k nnen 136 Besonderheiten in der Implementation von Flit Der ARBEITSABLAUF liest dazu aus dem ResourceBundle Sprache properties zus tzlich Daten der Form dok text blocked erg DOKTYP X TEXT ein wobei DOKTYP der Typ des angezeigten Dokuments ist X eine fortlaufende Nummer f r diesen Typ und TEXT der Name des Maskenelementes ist das zus tzlich deaktiviert werden soll Kapitel 9 Besonderheiten in der Implementation von MetaMask 9 1 eine andere Aufgabe MetaMask ist keine Maske der Flit Familie im eigentlichen Sinne da sie auf keiner Datenbanktabelle basiert Stattdessen muss MetaMask Files lesen und schreiben k nnen und die Daten der anderen Masken verwalten Aus diesem Grund unterscheiden sich die meisten Klassen im Verzeichnis metamask dok deutlich von den automatisch erzeugten Klassen Die Klassen die zur Darstellung der Maske selbst benutzt werden sind jedoch dieselben bis auf die Erg nzung zweier Frames die in den blichen Masken nicht gebraucht werden Die folgenden Abschnitte sollen die einzelnen Klassen genauer erl utern 9 2 Klasse ARBEITSABLAUF extends java lang Object Der ARBEITSABLAUF Verzeichnis metamask dok hat mit dem ARBEITSAB LAUF einer automatisch erzeugten Maske au er der logischen Position eher we nig gemeinsam Das liegt einerseits daran dass MetaMask nur zwei statt drei Programmzust nde kennt aber andererseits auch da
166. schen einem BestellListdarstFrame und einem ARBEITS ABLAUF 10 6 Klasse KONTROLLLISTMANAGER 157 Methoden executeBestellListdarstCommand do_best boolean void Wird aufgerufen wenn der BestellListdarstFrame geschlossen wird Der Benutzer hat ausgew hlt ob die Bestellung durchgef hrt werden soll und in die Kontrolllisten eingetragen wenn do_best True ist anson sten will der Benutzer die Bestellung abbrechen 10 6 Klasse KONTROLLLISTMANAGER extends ListManager Der KONTROLLLISTMANAGER Verzeichnis litera dok kann aus einem SU CHERGEBNIS eine bersicht in Form eines Strings erstellen Der String enth lt in jeder Zeile einen Datensatz des SUCHERGEBNISSES Start und Endposition innerhalb des SUCHERGEBNISSES sind frei w hlbar Ebenso ist frei w hlbar welche Spalten die Liste in welcher Reihenfolge enthalten soll Die Erweiterung gegen ber des LISTMANAGERS besteht darin dass eine zus tz liche Zeile ausgegeben wird wenn eine neuer Lieferant angegeben wird Zur Einstellung des Formats sei auf die Klasse LISTMANAGER verwiesen Konstruktoren KontrollListManager se SUCHERGEBNIS spalten String Erzeugt einen neuen KONTROLLLISTMANAGER der auf dem SUCHER GEBNIS se arbeitet und sein Format aus dem String spalten ausliest Methoden getList separateByLine boolean String Erzeugt den String der die Ausgabe im eingestellten Format enth lt Wenn separateByLine True
167. sen Marken vorangehen es ist dann allerdings empfehlenswert im erzeugten File diese Marken zu entfernen damit die nderungen nicht aus Ver sehen mit MetaMask berschrieben werden Au erdem sei darauf hingewiesen dass die eingetragenen Angaben vollst ndig und die Nummern fortlaufend sein m ssen da der RBMANAGER bei fehlenden Resourcen das Layout als beendet erkl rt ALWAYS_BLOCKED SUCH_BLOCKED NEU_BLOCKED ERG_BLOCKED Hier werden von MetaMask die Felder abgelegt die in bestimmten Programm zust nden deaktiviert werden sollen CHOICES Der Inhalt der Auswahllisten wird zwischen diesen Marken eingetragen F r jede Liste wird dabei zur besseren bersicht ein Trenner eingef gt der auf das zugeh rige Feld verweist LIST_SHORTHANDS Die Namensk rzel die die einzelnen Felder f r die Listenausgabe bekommen haben werden hier gespeichert Diese Sektion wird von MetaMask bearbeitet die verwandte Sektion LIST_DEFAULTS muss allerdings von Hand bearbeitet werden siehe dazu Kapitel 6 FOCUSHELP Die Strings die hier zu den einzelnen Feldern gespeichert sind werden in den Statuszeilen des Hauptfensters angezeigt wenn sich der Fokus im zugeh rigen Feld befindet 5 5 Die empfohlene Rollen Verwaltung in Oracle CURSOR_DOWN CURSOR_UP Ist die Option Bl ttern mit Cursortasten ausgeschaltet so bewegt sich der Cursor wie hier angegeben 5 5 Die empfohlene Rollen Verwaltung in Oracle 5 5 1 Schreibrechte
168. sen soll sondern deren Beschreibung Konstruktoren SQLAssistant con Connection Erzeugt einen neuen SQLASSISTANT auf der Connection con 9 11 Klasse ABLAUFVERWALTER Erweitert 151 Methoden getDescOf tableOwner String tableName String ResultSetMetaData Holt die Beschreibung der Tabelle tableName des Datenbankbenut zers tableOumer Dies geschieht durch das Holen einer leeren Anfra ge SELECT FROM user table WHERE 1 0 deren ResulSetMetaData dann zur ckgegeben wird getPrimaryKeysOf tableOwner String tableName String Vector Holt die Prim rschl ssel der Tabelle tableName des Datenbankbenut zers tableOwner Diese werden als Vektor zur ckgegeben 9 11 Klasse ABLAUFVERWALTER Erweitert Der ABLAUFVERWALTER wurde nicht viel modifiziert allerdings wird ein Ex emplar des unmodifizierten DATAMANAGERS gespeichert von dem jedem neu ge ffneten ARBEITSABLAUF eine Kopie bergeben wird So ist es m glich in ver schiedenen Arbeitsabl ufen unterschiedliche Darstellungsalternativen vom sel ben Ausgangspunkt aus zu vergleichen Attribute original_dm DATAMANAGER Der DATAMANAGER wie er beim Start von MetaMask eingelesen wur de bzw wie er in einem ARBEITSABLAUF vom Benutzer als neue Maske bernommen wurde Methoden setDM dm DATAMANAGER void Setzt den DATAMANAGER dessen Kopie jedem neu ge ffneten AR BEITSABLAUF mitgegeben wird
169. ses Kommandos an der Stelle EDIT GENERAL_COMMANDS eingef gt werden Werden in verschiedenen Programmzust nden unterschiedli che Reaktionen gew nscht so sollte der Code an den Stellen EDIT SUCH_COMMANDS EDIT NEU_COMMANDS und EDIT ERG_COMMANDS erg nzt werden Hierbei ist allerdings darauf zu achten dass Reaktionen f r alle Zust nde angegeben werden in denen der Knopf aktiviert ist 6 2 3 Hinzuf gen von neuen Men eintr gen Das Erweitern der Men s ist etwas aufwendiger als das Hinzuf gen neuer Kn pfe da MetaMask die Men leiste nicht verwaltet Um einen neuen Eintrag in ein Men oder ein neues Men einzuf gen muss das File Sprache properties modifiziert werden Ein neues Men wird in die Men zeile eingetragen indem an der Stelle EDIT MENU_BAR die Liste dok menu X MENU um die entsprechenden Eintr ge erg nzt wird Hierbei ist X eine fortlaufende Zahl es wird empfohlen das Hilfsmen als letzten Eintrag beizubehalten Die Angabe MENU ist hierbei diejenige die bei der Ausformulierung des Men s als Kennzeichner benutzt wird Die einzelnen Men s werden wie folgt angegeben Jedes Men hat einen Eintrag dok menu MENU ui MENU_TITLE der den Text darstellt der in der Men leiste sichtbar ist Nachfolgend werden die einzelnen Eintr ge des Men s ausformuliert wobei das Format dok menu MENU X ZZ TEXT vorgegeben ist Hierbei ist MENU der Kennzeichner des Men s und X die fort lau
170. sitzt daher Erweiterungen um auf diese zuzugreifen Wird der Knopf Schlagw rter im Flit Hauptfenster gedr ckt so wird ein neues Fenster ge ffnet das die Schlagw rter des aktuellen Dokumentes anzeigt Ab bildung 2 1 Hier ist auch angegeben welches Gewicht das Schlagwort besitzt und von wem es eingetragen wurde Mittels der Felder im unteren Fensterbereich k nnen Schlagw rter modifiziert und zu den vorhandenen hinzugef gt werden Die Men leiste bietet drei Ein tr ge mit den folgenden Funktionen e Fenster Fenster schlie en beendet das Schlagwortfenster und gibt die Pro grammkontrolle an das Hauptfenster zur ck dies ist auch mit dem Hotkey CTRL W m glich e Schlagwort Die Men eintr ge dieses Men s beziehen sich jeweils auf ein einziges Schlagwort Im einzelnen sind dies Neues Schlagwort f gt ein neues Schlagwort hinzu diese Funktion entspricht dem Knopf im unteren Teil des Fensters und kann auch durch CTRL N erreicht werden L schen l scht das Schlagwort aus der Liste CTRL D 26 Flit Benutzerhandbuch Fenster Schlagwort Schlagw rter Schlagw rter zu DokNr 5043 K rzel Schlagwort text formatting word processing Schlagwort 1 von 3 Gewicht 4 Neues Schlagwort Schlagw rter unver ndert Abbildung 2 1 Das Schlagwortfenster L schen r ckg ngig f gt ein gel schtes Schlagwort wieder zu der Liste hinzu Dies is
171. t Bezeichnet die Auswahl Benutzer w nscht schnelles Vorauslesen readahead_speed int Gibt die momentane Auswahl der Vorauslesegeschwindigkeit an displaying_speedbar boolean Gibt an ob die Speedbar im Moment angezeigt wird 7 2 Klasse ARBEITSABLAUF 69 Konstruktoren Arbeitsablauf ff FLITFRAME Erzeugt einen neuen ARBEITSABLAUF im FLITFRAME ff mit entspre chender Initialisierung der Startzustand ist Kriterieneingabe und alle Textfelder sind leer Arbeitsablauf ff FLITFRAME k KRITERIEN Erzeugt einen neuen ARBEITSABLAUF im FLITFRAME ff mit entspre chender Initialisierung eine Datenbankanfrage mit den gegebenen KRI TERIEN k wird sofort gestartet und dann in den Zustand Ergebnisdar stellung gewechselt Methoden HcheckMenuChanged ac String checked boolean void Implementation des CHECKMENULISTENER Interfaces executeCommand ac String void Implementation des COMMANDLISTENER Interfaces executeListCommand ac String FLITLISTFRAME flf name String value String void Implementation des LISTFRAMELISTENER Interfaces focusChanged ac String have boolean temp boolean void Implementation des FLITFOCUSLISTENER Interfaces HistAssistant_executeCommand ac String void Implementation des LIST SSISTANTLISTENER Interfaces HistAssistant_textColValueChanged tci TEXTCOLITEM name String text String void Implemen
172. t das TEXTCOLFIELD auf editierbar oder nicht editierbar je nach Wert von editable Im nicht editierbaren Fall wird der FLITSTRICH au tomatisch auf unsichtbar gesetzt setText text String void Setzt den Text auf text textValueChanged te TextEvent void Implementation des TextListener Interfaces um die registrierten TEXT COLLISTENER benachrichtigen zu k nnen 7 55 Klasse TEXTCOLFIELDWITHLIST extends TextColField Die Klasse TEXTCOLFIELDWITHLIST Verzeichnis shared ui erweitert die Klasse TEXTCOLFIELD um die M glichkeit die bisher vorhandenen Werte aus der Datenbank auszulesen und zur Auswahl anzubieten 120 Dokumentation der einzelnen Klassen Konstruktoren TextColFieldWithList name String uiname String width int Erzeugt ein TEXTCOLFIELD mit dem internen Namen name und width sichtbaren Zeichen das einen Knopf zum ffnen eines Listenfensters besitzt Methoden setEditable editable boolean void Setzt das TEXTCOLFIELD und den zugeh rigen Knopf auf editierbar oder nicht editierbar je nach Wert von editable Im nicht editierbaren Fall wird der FLITSTRICH automatisch auf unsichtbar gesetzt getButton Button Liefert den Button Diese Funktion wird nur dazu ben tigt den Button beim Konstruieren der Benutzeroberfl che in einen Container einf gen zu k nnen 7 56 Klasse TEXTCOoLITEM extends java lang Object implements FocusListener Die
173. t einen COMMANDLISTENER f r diesen FLITFRAME Es ist nur ein einziger COMMANDLISTENER pro FLITFRAME vorgesehen d h nur der zuletzt gesetzte COMMANDLISTENER wird benachrichtigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein COMMANDLISTE NER mehr registriert Der COMMANDLISTENER wird ber die folgenden Benutzerbefehle in formiert bet tigen von Buttons e ausw hlen von Men punkten e dr cken von HotKeys e Versuch des Schlie ens des Fensters ber den Fenstermanager setFirstFocus name String void Setzt das TEXTCOLFIELD das beim ersten ffnen des Fensters sofort den Focus haben soll setFlitFocusListener ffl FLITFOCUSLISTENER void Setzt einen FLITFOCUSLISTENER f r diesen FLITFRAME Er wird in allen in diesem FLITFRAME enthaltenen TEXTCOLITEMS gesetzt Es ist nur ein einziger FLITFOCUSLISTENER pro FLITFRAME vorgesehen d h nur der zuletzt gesetzte FLITFOCUSLISTENER wird benachrich tigt Darf mit Null aufgerufen werden in diesem Fall ist dann kein FLITFOCUSLISTENER mehr registiert setHotkeyMapping h Hashtable void Setzt eine bersetzungstabelle f r die Hotkeys dieses FLITFRAMES Darf mit Null aufgerufen werden in diesem Fall wird dann keine ber setzungstabelle genutzt Die Tabelle h kann die Strings F1 bis F12 sowie PAGE_UP und PAGE_DOWN als Schl ssel enthalten und diesen Tasten andere Ac tionCommands zuordnen Beim Dr cken eines Hotkeys wird der re gistr
174. t nur solange m glich bis im Hauptfenster Com mit gedr ckt wird nderungen r ckg ngig setzt dieses Schlagwort wieder auf sei nen urspr nglichen Zustand zur ck l sst aber die anderen eventuell modifiziert e Schlagw rter Alles r ckg ngig f r diese DokNr nimmt s mtliche nderun gen und L schungen in der Schlagwortliste des aktuellen Dokuments zur ck 2 4 umfassende Dokumente In der Forschungsliteraturdatenbank ist vorgesehen dass ein Dokument in ei nem anderen enthalten sein kann Dies wird im Hauptfenster in den unteren drei Zeilen angegeben Die Felder in diesen Zeilen namentlich in DokNr in Dok Typ Autoren und Titel geben die entsprechenden Informationen ber das umfassende Dokument an Es ist zu bemerken dass sie immer deaktiviert sind weil nderungen an diesen Daten in dem umfassenden Dokument selbst vorgenommen werden sollen Die vollst ndigen Informationen zum umfassenden Dokument k nnen mittels des Knopfes Anzeigen aufgerufen werden Flit ffnet dabei ein neues Haupt fenster das dieses Dokument enth lt Das neue Fenster ist allerdings im Pro grammablauf unabh ngig von dem ersten und diesem nicht etwa untergeordnet Kapitel 3 MetaMask Benutzerhandbuch Das Programm MetaMask ist keine Datenbankmaske im eigentlichen Sinne der Flit Familie sondern der Generator f r solche Masken Obwohl das Hauptfen ster dem des Programmes Flit sehr hnlich sie
175. tation des LIST SSISTANTLISTENER Interfaces setApplet inAnApplet boolean void Setzt die Kennzeichnung ob die Maske als Applet ausgef hrt wird die f r alle Arbeitsabl ufe gemeinsam verwendet wird auf inAn Applet setConnectionManager cm CONNECTIONMANAGER void Setzt den CONNECTIONMANAGER der f r alle Arbeitsabl ufe gemein sam verwendet wird auf cm setGast gast boolean void Aktiviert bzw deaktiviert den Gast Modus der f r alle Arbeitsabl ufe gemeinsam gilt je nach dem ob gast wahr oder falsch ist Diese Me thode muss vor dem ersten Aufruf eines Konstruktors dieser Klassen aufgerufen werden bzw erst wieder nachdem alle vorher erzeugten Arbeitsabl ufe nicht mehr in Gebrauch sind textColValueChanged tci TEXTCOLITEM name String text String void Implementation des TEXTCOLLISTENER Interfaces 70 Dokumentation der einzelnen Klassen 7 3 Klasse BACKGROUNDREADER extends java lang Object implements java lang Runnable Der BACKGROUNDREADER der im Verzeichnis dok instantiiert wird kann im Hintergrund Daten eines Suchergebnisses vorab einlesen damit diese sp ter ohne Verz gerung zur Verf gung stehen und au erdem die Gesamtgr e des Suchergebnisses bekannt ist Diese Klasse arbeitet stets sehr eng mit einem ARBEITSABLAUF zusammen Attribute aa ARBEITSABLAUF Der ARBEITSABLAUF zu dem dieser BACKGROUNDREADER geh rt In diesem wird der aktuelle Lese Zust
176. tation von Flit Methoden commit boolean bernimmt alle Modifikationen als neuen Originalzustand Ist die RO WID gleich Null so schl gt dieser Aufruf fehl und gibt False zur ck ansonsten True delete void Markiert das SCHLAGWORT als gel scht getGewicht int Holt das Gewicht des SCHLAGWORTES getKuerzel String Holt das K rzel getROWID String Hold die ROWID gibt Null zur ck falls beim Erzeugen keine ROWID angegeben wurde getSchlagwort String Holt den Schlagwort String hasModifiedGewicht boolean Gibt an ob das Gewicht des SCHLAGWORTES modifiziert wurde hasModifiedSchlagwort boolean Gibt an ob der Schlagwort String modifiziert wurde isDeleted boolean Gibt an ob das SCHLAGWORT als gel scht markiert wurde isModified boolean Gibt an ob das SCHLAGWORT im Schlagwort String K rzel oder Ge wicht ver ndert wurde oder die ROWID gleich Null ist restore boolean Ist die ROWID gleich Null wird dieser Aufruf ignoriert ansonsten l scht er alle Modifikationen und stellt den Originalzustand wieder her Das SCHLAGWORT wird dann als nicht gel scht markiert setGewicht gewicht int void Setzt das Gewicht des SCHLAGWORTES auf gewicht Das SCHLAGWORT ist damit modifiziert falls der Wert ungleich dem Originalwert ist setKuerzel kuerzel String void Setzt das K rzel des SCHLAGWORTES auf kuerzel Das SCHLAGWORT ist damit modif
177. ten auf Kommandos abzubilden und gibt diese an einen COM MANDLISTENER weiter e LIST SSISTANTLISTENER wird aufgerufen wenn ein LIST SSISTANTFRA ME ein Kommando erh lt 5 2 2 Verzeichnis dbis mask shared net e RBMANAGER der ResourceBundle Manager bietet komfortable M glich keiten auf Strings aber auch Vektoren von Strings in einem Resource Bundle zuzugreifen 5 2 Grundklassen shared 49 5 2 3 Verzeichnis dbis mask shared dok Datenbankanbindung e CONNECTIONMANAGER verwaltet die Verbindungen an die Datenbank Suchergebnis e SUCHERGEBNISCURSOR enth lt eine Position in einem Suchergebnis und kann diese verschieben Feldtester f r Werte e FIELDCHECKER Grundklasse f r alle Feldtester verwaltet den Fehler String erzeugt aber selbst noch keine Fehler e FIELD HECKERSTRING testet einen bergebenen String auf eine Maxi mall nge e FIELDCHECKERSTRINGNE testet einen bergebenen String auf Maximal l nge und nicht leer e FIELDCHECKERSTRINGNQ testet einen bergebenen String auf Maximal l nge und nicht Fragezeichen e FIELDCHECKERSTRINGNEQ testet einen bergebenen String auf Maxi mall nge nicht leer und nicht Fragezeichen e FIELD HECKERINT testet einen bergebenen String auf eine enthaltene Integerzahl mit Maximall nge e FIELDCHECKERINTNE testet einen bergebenen String auf eine enthal tene Integerzahl mit Maximall nge und nicht leer e FIELD
178. tig in die Da tenbank bernommen und alle DOKUMENTDATENS TZE sind wieder im nicht exklusiven Zustand Behandlung von Datenbank SQLExceptions Falls beim abschlie enden commit eine SQLException auftritt wird das SUCHERGEBNIS ber haupt nicht ver ndert Andernfalls wird jedes als gel scht markierte Dokument bei dessen L schen in der Datenbank keine SQLException aufgetreten ist aus dem SUCHERGEBNIS entfernt Bei jedem Dokument das keine SQLException beim Aktualisieren in der Datenbank hervor gerufen hat wird die Methode commit des DOKUMENTDATENSATZES aufgerufen Referenzen auf DOKUMENTDATENS TZE m ssen nach einem commit verworfen und neu aus dem SUCHERGEBNIS geholt werden da sie sich ge ndert haben k nnen Falls das SUCHERGEBNIS nach diesem commit v llig leer sein sollte weil alle Datens tze als gel scht markiert waren und erfolgreicht gel scht werden konnten wird es automatisch geschlossen Falls der Cache des SUCHERGEBNISSES nach diesem commit leer sein sollte aber noch nicht alle Datens tze aus der Anfrage an die Daten bank gelesen worden sind so wird ein Datensatz der n chste aus dem Anfrageergebnis gelesen Dieser Lesevorgang ist die einzige Stelle in die ser Methode an der eine SQLException geworfen werden kann createCursor SUCHERGEBNISCURSOR Erzeugt einen neuen Cursor zum Navigieren in diesem SUCHERGEBNIS 7 50 Klasse SUCHERGEBNIS 115 forceEndReached void Zwingt das SUCHERGEBNI
179. tische erste Instantiierung 51 e SUCHERGEBNIS bietet eine komfortable Schnittstelle zur Ergebnismenge einer Datenbankanfrage e LISTMANAGER erzeugt aus einem SUCHERGEBNIS die Ausgabe in Listen form e SQLQUERY erzeugt aus einem oder mehreren KRITERIEN eine SQL Anfrage e ABLAUFVERWALTER verwaltet das ffnen und Schlie en von m glicher weise mehreren Maskenfenstern relationsabh ngige Klassen e DOKUMENTDATENSATZ enth lt die einzelnen Daten eines Datensatzes e KRITERIEN enth lt die Suchkriterien f r eine Datenbankanfrage e SQLASSISTANT bernimmt die Kommunikation mit der Datenbank e RBEITSABLAUF dies ist die zentrale Klasse der erzeugten Maske sie steu ert die Reaktion des Programms auf die meisten Eingaben im Hauptfen ster 5 4 die automatische erste Instantiierung Die Templateklassen werden von MetaMask automatisch mit den Metadaten der Relation gef llt und in das entsprechende Verzeichnis abgelegt Die Grund funktionalit t der neuen Maske steht damit sofort zur Verf gung In diesem Abschnitt wird erl utert welche Daten das im einzelnen sind und in welche Klassen sie geschrieben werden Es ist jedoch nicht notwendig diese Daten nachtr glich von Hand zu modifizieren um die Klassen konsistent zu halten sollten derartige Ver nderungen mittels MetaMask vorgenommen werden Wie die erzeugte Maske um zus tzliche Funktionen erweitert werden kann entnehme man Kapitel 6 Damit MetaMask die Daten an d
180. typen ob f r einige Spalten NULL Werte erlaubt sind etc oder die Beschreibung des Maskenlayouts Diese Klassen m ssen notwendigerweise f r jede Maske individuell erzeugt werden diese Arbeit bernimmt das Programm MetaMask Dar ber hinaus gibt es Klas sen die unver ndert f r alle Masken benutzt werden k nnen wie z B die gra phischen Grundelemente Diese zwei Typen von Klassen werden mit Templates bzw Shared bezeichnet In den Templates wurden die relationsspezifischen Daten durch Labels im Pro grammtext ersetzt die MetaMask mitteilen wo die neuen Daten eingef gt wer den m ssen Die genaue Beschreibung dieser Labels und welche Daten an diesen Stellen eingesetzt werden findet sich in Abschnitt 5 3 Es sei an dieser Stelle gleich erw hnt dass diese Labels auch noch in den indivi duell erzeugten Klassen existieren Dadurch wird es MetaMask erm glicht auch auf bereits existierende Projekte zuzugreifen und diese weiter zu berarbeiten selbst dann wenn sie schon mit zus tzlicher Funktionalit t ausgestattet worden sein sollten Zus tzlich ist zu bemerken wenn es auch nicht sonderlich relevant f r die Praxis ist dass auch MetaMask auf denselben Grundklassen aufbaut Es ist dadurch m glich auch die Maske des MetaMask Hauptfensters mit MetaMask selbst zu bearbeiten Die Zusammenh nge zwischen den einzelnen Programmen bzw den Klassen gruppen werden in den folgenden Abs tzen geschildert hierzu sei auch auf Ab
181. ung Intern Anm Neue Suche Verwendung Schlagw rter LaTeX textiormatting 2 word processing 2 Dok 2 von 23 in DokNr in DokTyp unver ndert Autoren Titel Autoren Format Nachname1 Yornament Nachname2 Ergebnisdarstellung Suchergebnis unver ndert Keine DB Sperren F2 neue Suche F3 Commit F4 Rollback F5 Feld r cksetzen F6 Feld leeren F7 F8 bl ttern F9 neues Dokument Abbildung 1 2 Das Hauptfenster 1 3 Das Maskenfenster Das Hauptfenster der Masken als Beispiel sei hier wieder Flit herangezogen siehe Abbildung 1 2 besteht aus vier Bereichen dem Hauptpanel in dem der aktuelle Datensatz angezeigt wird den Statuszeilen am unteren Fensterrand in denen Hilfstexte und Pro grammmeldungen ausgegeben werden der Knopfleiste am rechten Fensterrand ber die das Programm zu steu ern ist und e der Men zeile in der Programmeinstellungen vorgenommen werden k nnen 16 Die gemeinsamen Grundelemente der Benutzerschnittstellen 1 3 1 Das Hauptpanel Das Hauptpanel ist der Bereich in dem ein Datensatz angezeigt wird F r jede Spalte der Datenbankrelation ist ein Feld vorhanden au erdem k nnen Kn pfe die keine globale Funktion haben im Hauptpanel statt in der Knopfleiste platziert werden Welche Funktionen oder Zusammenh nge diese Maskenelemente haben kann selbstverst ndlich nicht f r alle Masken einheitlich erkl rt werden Deshalb sol len hier lediglich die v
182. ur so lange markiert bis der Benutzer das Programm Litera wieder beendet Wird die Einzelbestellung des Warenkorbes allerdings ausgef hrt so wird dies selbstverst ndlich in die Datenbank mit aufgenommen Die f r diese Instantiierung der Standardmaske hinzugekommenen Klassen die in den folgenden Abschitten dokumentiert werden spiegeln die neuen Anfor derungen im Zusammenhang mit den Bestellungen wieder Au erdem mussten nderungen an den automatisch instantiierten Klassen vorgenommen werden die in Abschnitt 10 8 und den folgenden dokumentiert sind Durch die Tatsache dass in der Hauptrelation die Dokumente aller drei Abtei lungen des Instituts f r Informatik zusammengef hrt sind ist ein erweitertes Rollensystem in der Oracle Datenbank n tig geworden das in Abschnitt 10 11 beschrieben wird 154 Besonderheiten in der Implementation von Litera 10 2 Klasse BESTELLFRAME extends java awt Frame implements KeyListener WindowListener ActionListener Der BESTELLFRAME Verzeichnis litera ui ist ein Fenster von Litera das eine Auswahlliste enth lt die Lieferanten und die zugeh rige Bestellsumme an gibt Der Inhalt der Liste wird durch einen Vektor angegeben der abwechselnd Strings Lieferantenname und FloatZahlen Bestellsumme enth lt Konstruktoren BestellFrame v Vector bfl BESTELLFRAMELISTENER name String font Font RechnungsWaehrungUl String Erzeugt einen neuen BESTELLFRAME aus dem
183. was dieses Problem beseitigen w rde doch habe ich in der vorliegen den Fassung des Programmpaketes noch die urspr ngliche Struktur von Flit beibehalten In diesem Kapitel sollen daher zun chst s mtliche Klassen des Templatever zeichnisses erw hnt werden genauere Erl uterungen welche Daten in welchen Klassen enthalten sind folgen im Abschnitt 5 4 Wie man die Klassen von Hand erweitern und modifizieren kann wird in Kapitel 6 geschildert und eine detail lierte Beschreibung der Klassen findet sich in Kapitel 7 5 3 1 Verzeichnis dbis mask templates ui e FLITLOGINFRAME stellt das Loginfenster und dessen Funktion bereit e Sprache properties dieses ResourceBundle enth lt s mtliche Daten f r das Layout der Maske darunter auch die Men und Knopfleisten Hilfs texte etc 5 3 2 Verzeichnis dbis mask templates net e DB properties dieses ResourceBundle enth lt die Informationen die zum Aufbau der Datenbankverbindung notwendig sind e LOGINMANAGER f hrt den Aufbau der Datenbankverbindung durch und bergibt die Programmkontrolle an den Ablaufverwalter e FLIT enth lt nur die Klasse main die das Loginfenster ffnet e FLITAPPLET stellt eine Variante des Programms zur Verf gung die als Applet gestartet werden kann 5 3 3 Verzeichnis dbis mask templates dok Klassen ohne relationsspezifische Daten e BACKGROUNDREADER bernimmt das Einlesen der Datens tze f r einen A RBEITSABLAUF im Hintergrund 5 4 die automa
184. y gibt an aus welchen Teilen der Ausgabestring besteht sp_max int Gibt an aus wievielen Spalten der Ausgabestring besteht suffix String Der Text der nach der eigentlichen Liste ausgegeben werden soll Konstruktoren ListManager se SUCHERGEBNIS spalten String Erzeugt einen LISTMANAGER zum SUCHERGEBNIS se Das Format des Ausgabestrings wird mit Spaltenbezeichnern und Trennzeichen in spal ten angegeben 106 Dokumentation der einzelnen Klassen Methoden appendWithNewLine b StringBuffer s String void H ngt den String s an den StringBuffer b an gefolgt von einem new line falls s nicht bereits mit einem newline aufh rt getList separateByLine boolean String Erzeugt eine Liste aus dem SUCHERGEBNIS f r den gew hlten Bereich dies ist einen aufwendige Operation Die Liste steht in einem String der zur ckgegeben wird Ist separateByLine auf True gesetzt so werden zwei Datens tze durch eine Freizeile getrennt setPrefix prefix String void Setzt den Text der der eigentlichen Liste vorangestellt werden soll darf Null sein setRange first int last int void Setzt den Bereich der in die Liste aufgenommen werden soll als Default wird die gesamte Liste aufgenommen first gibt die Position des ersten Datensatzes im SUCHERGEBNIS an der in die Liste aufgenommen wer den soll dabei ist 0 der erste Datensatz des SUCHERGEBNISSES last gibt die Posit
185. zeichnis shared dok berpr ft einen String Diese Klasse dient als Grundger st f r verschiedene Checker Die hier implementierte Methode check akzeptiert jeden beliebigen String Sie muss bei abgeleiteten Klassen geeignet implementiert werden um etwa eine Dezimalzahl pr fen zu k nnen Aufrufer berpr fen einen String mit check Falls ein Fehler beim Parsen auf getreten ist liefert das die Fehlermeldung als String Der Checker merkt sich das Ergebnis der letzten Pr fung es kann daher mit getErrorString immer wieder abgefragt werden 80 Dokumentation der einzelnen Klassen Konstruktoren FieldChecker Leerer Konstruktor Methoden check s String String berpr ft einen String s und gibt die Klartextfehlermeldung zur ck falls ein Fehler aufgetreten ist ansonsten Null Die Implementation dieser Methode in dieser Klasse akzeptiert s mtliche Strings getErrorString String Holt die Klartextfehlermeldung des letzten aufgetretenen Check Feh lers oder Null wenn kein Fehler aufgetreten war 7 14 Klasse FIELD HECKERFLOAT extends FieldChecker Der FIELDCHECKERFLOAT Verzeichnis shared dok berpr ft einen String der eine Floatzahl enthalten soll deren Stellenzahl eine gewisse maximale Stel lenzahl vor und nach dem Punkt nicht berschreiten soll Erlaubte Werte sind auch noch Null sowie der leere String Konstruktoren FieldCheckerFloat Erzeugt
186. zeigt werden muss Er benutzt den Font font und l dt die Infor mationen ber die graphischen Elemente aus dem ResourceBundle RB Name Der FLITFRAME versucht nur dann eine SpeedBar zu erzeugen wenn withSpeedBar auf True gesetzt ist das ist allerdings nur bei Me taMask nicht gew nscht Methoden actionPerformed e ActionEvent void Implementation des ActionListener Interfaces beep void Gibt einen Piep aus detachListeners void Entfernt alle Referenzen auf Listener TEXTCOLLISTENER FLITFO CUSLISTENER CHECKMENULISTENER COMMANDLISTENER aus die sem FLITFRAME und den enthaltenen Komponenten 7 29 Klasse FLITFRAME 89 displayBar barname String void Zeigt die Button Leiste mit dem Namen barname an die m glichen Namen sind aus der Property Datei geladen worden displaySpeedBar barname String void Setzt die FLITSPEEDBAR in den gew nschten Anzeigezustand mit dem Namen barname findTextColltem name String TEXTCOLITEM Liefert das TEXTCOLITEM mit dem Namen name Falls kein solches existiert wird Null zur ckgegeben getButton ac String Button Liefert den Button mit dem ActionCommand ac getKeyListener KeyListener Liefert den von diesem FLITFRAME verwendeten KeyListener getTextColChoices Enumeration Liefert eine Enumeration aller TEXTCOLCHOICES itemStateChanged e ItemEvent void Implementation des ItemListener Interfaces HreplacePanel r
Download Pdf Manuals
Related Search
Document documents documents folder documents word documentary documents file document camera document recovery document scanner documenting reality document editor documents needed for real id documentos de google document camera app document capture pro documents folder this computer document viewer documents and settings document ai document google documentos normativos document capture pro download document google docs documento 1 documento 2 document de confirmare digisign
Related Contents
Bedienungsanleitung EVO-SMT200 (pdf, 0,91MB, deutsch) Sistema di bloccaggio SLAM ITNS-301 Guide d`utilisation Copyright © All rights reserved.
Failed to retrieve file