<Thesis>

 

Anhang D: Softwaretechnische Anbindung an CURE

Um CoCuSe in CURE verwenden zu können, sind einige Änderungen an CURE selbst erforderlich. Ziel der Einbindung ist es, mit möglichst wenigen Modifikationen auszukommen - trivialerweise kommt man nicht ganz ohne aus. Diese Verbindungspunkte werden im Folgenden kurz erklärt und gezeigt, an welchen Programmstellen neue Programmzeilen eingefügt werden.

D.1 Klasse Configuration

In der Klasse Configuration wird der CoCuSe-Index-Button hinzugefügt.

private String[][] defaultSkin = { (...) {"showCoCuSe", "cocuse_blue.gif"}, {"cocuseVisitor", "cocuseVisitor.gif"}, {"cocuseVisitors", "cocuseVisitors.gif"}, (...) }

D.2 Klasse RoomServlet

Die Methoden createPage und removePage in der Klasse RoomServlet werden um die CoCuSe-Seitentypen erweitert.

public String createPage(HttpServletRequest req, HttpServletResponse res) { (...) } else if ("cocusebookmarkPage".equals(pageType)) {

String newUrl = ""; newUrl = getParameter(req, "url"); String ccsIp = getParameter(req, "indexPage"); Long li = new Long(ccsIp); CoCuSeIndexPage cocuseIndexPage = (CoCuSeIndexPage) room.get(li); p = new CoCuSeBookmarkPage(pageName, cocuseIndexPage, newUrl);

} else if ("cocuseindexPage".equals(pageType)) {

p = new CoCuSeIndexPage(pageName, getRequestingUser(req), room); } else {

(...) if (strFolderID != null) {

strFolderID); if ((o != null) && (o instanceof Folder)) { ((Folder) o).addPage(p); // special case CoCuSe-Index if (p instanceof CoCuSeIndexPage) { // put CoCuSe-Navigator into same folder as the Index CoCuSeIndexPage special = (CoCuSeIndexPage) p; ((Folder) o).addPage(special.getNavigatorPageID()); } }

} (...) }

public String removePage(HttpServletRequest req, HttpServletResponse res) { (...) Element query = null; if (page instanceof CoCuSeIndexPage) { // we have to inform the user of the consequences for CoCuSe query = SimpleHTMLRenderer.renderQuery(

"of all corresponding bookmarks! Do you really want to " + "delete CoCuSe?"), getRessourceString("Yes"),title, getRessourceString("Cancel"), getRessourceString("Do nothing"), page.urlString( "doRemovePage", getRequestingUser(req).getPrefix()), page.urlStringForViewing(getRequestingUser(req).getPrefix()));

// important: use elementToString without linebreak otherwise the cancel // button // will not be shown } else {

(...) }

D.3 Klasse PageAttributesRequestRenderer

In der Klasse PageAttributesRequestRenderer wird der CoCuSe-Index als zusätzlicher Seitentyp eingebunden.

public Element renderedXMLTree() { (...) // CoCuSe Index Page type select option if (true) {

"span").addContent(getRessourceString("CoCuSe Index Page")), "cocuseindexPage", true, false); extra = XHTMLFactory.span().addContent(("(CoCuSe - " + getRessourceString("Collaborative Cure Search") + ")")); pageTypes.add(radioButton); pageTypes.add(extra);

} (...) }

D.4 Klasse MessageStrings_de

Texte und Meldungen von CoCuSe sind standardmäßig in englischer Sprache implementiert. Eine Internationalisierung z.B. für die deutsche Sprache erfolgt in der Klasse MessageStrings_de und Übersetzungen hierzu liegen bereits vor. Weitere Sprachen in Bezug auf CoCuSe könnten bei Bedarf hinzugefügt werden.

(...) data.put("one more member present on this page", "ein weiteres Mitglied auf dieser Seite anwesend"); data.put("more than one more member present on this page", "mehr als ein weiteres Mitglied auf dieser Seite anwesend"); data.put("Date and Time", "Datum und Uhrzeit"); data.put("Go to the index of CoCuSe", "Gehe zum Index von CoCuSe"); data.put("Your browser does not support embedded frames. " +

"Dein Browser unterstützt keine eingebetteten Rahmen. " + "Du kannst die Zielseite anschauen, in dem Du folgenden Link anklickst : ");

data.put("continue", "weiter"); data.put("Go!", "Los!"); data.put("Goto new address", "Gehe zur neuen Adresse"); data.put("Favourites", "Favoriten"); data.put("Favourite", "Favorit"); data.put("Results", "Ergebnisse"); data.put("Result", "Ergebnis"); data.put("List of shared bookmark collection contains", "Menge der gemeinsamen Lesezeichensammlung enthält"); data.put("List of group result bookmarks contains", "Menge der Gruppenergebnislesezeichen enthält"); data.put("bookmark(s)", "Lesezeichen"); data.put("bookmark", "Lesezeichen"); // unused ? data.put("CoCuSe Index Page", "CoCuSe Index-Seite"); data.put("Input a name for the index page", "Bitte einen Namen für die Index-Seite eingeben"); data.put("Edit the CoCuSe index page", "Bearbeite die CoCuSe Index-Seite"); data.put("Bookmark!", "Ablegen!"); data.put("Bookmark new url", "URL als Lesezeichen ablegen"); data.put("Last visitor: click to show/hide detailed information", "Letzter Besucher: zum Anzeigen/Verbergen von Detailinformationen anklicken"); data.put("Last visitor", "Letzter Besucher"); data.put("All visitors of this page", "Alle Besucher dieser Seite"); data.put("All visitors", "Alle Besucher"); data.put("CoCuSe Navigator Page", "CoCuSe Navigator-Seite"); data.put("Show all details", "Alle Details anzeigen"); data.put("display/hide enhanced information within all sections", "erweiterte Informationen innerhalb aller Bereiche anzeigen/verbergen"); data.put("Edit the CoCuSe bookmark page", "Bearbeite die CoCuSe Lesezeichen-Seite"); data.put("of", "von"); data.put("members have rated this bookmark", "Mitglieder haben dieses Lesezeichen bewertet"); data.put("Ratingprofile", "Bewertungsprofil"); data.put("Positive ratings", "Positive Bewertungen"); data.put("Ratings: click to show/hide detailed information", "Bewertungen: zum Anzeigen/Verbergen von Detailinformationen anklicken"); data.put("Ratings", "Bewertungen"); data.put("All ratings for this page", "Alle Bewertungen dieser Seite"); data.put("All ratings", "Alle Bewertungen"); data.put("Rate!", "Bewerten!"); data.put("Rate bookmark", "Lesezeichen bewerten"); data.put("CoCuSe Bookmark Page", "CoCuSe Lesezeichen-Seite"); data.put("Value", "Wert"); data.put("Ratingcomment", "Bewertungskommentar"); data.put("By", "Von"); data.put("Type", "Art"); data.put("URL", "URL"); // in case someone wants to translate this data.put("Active neighbours", "Aktive Nachbarn"); data.put("Present: click to show/hide detailed information", "Anwesend: zum Anzeigen/Verbergen von Detailinformationen anklicken"); data.put("Present", "Anwesend"); data.put("All present members of this page", "Alle anwesenden Mitglieder auf dieser Seite"); data.put("All members", "Alle Anwesenden"); data.put("CoCuSe Proxy Error", "CoCuSe Proxy Fehler"); data.put("Error processing URL", "Fehler bei der Verarbeitung der URL"); data.put("Error", "Fehler"); data.put("No URL entered", "Keine URL eingegeben"); data.put("No protocol specified", "Kein Protokoll angegeben"); data.put("Error parsing HTML document", "Fehler beim Parsen des HTML-Dokumentes"); data.put("Specified URL is not valid or network unreachable", "Angegebene URL ist ungültig oder Netzwerk nicht erreichbar"); data.put("Unknown Error", "Unbekannter Fehler"); data.put("Not Found", "Nicht gefunden"); data.put("Forbidden", "Zugriff verweigert"); data.put("Protocol not supported", "Protokoll nicht unterstützt"); data.put("Unauthorized", "Nicht autorisiert"); data.put("Internal Server Error", "Interner Server Fehler"); data.put("Service Unavailable", "Dienst nicht verfügbar"); data.put("Bad Request", "Fehlerhafte Anfrage"); data.put("Input a rating for the bookmark", "Bewerte dieses Lesezeichen"); data.put("Ratingvalue", "Bewertungswert"); data.put("positive", "positiv"); data.put("neutral", "neutral"); data.put("negative", "negativ"); data.put("Directions for use", "Hinweise zur Nutzung"); data.put("You are only allowed to rate a bookmark once", "Du darfst ein Lesezeichen nur einmal bewerten"); data.put("Therefore you have to enter both a comment and a value", "Deshalb musst Du sowohl einen Kommentar als auch einen Wert eingeben"); data.put("A given rating cannot be edited or deleted later", "Eine abgegebene Bewertung kann später weder geändert noch gelöscht werden"); data.put("You may also return to the bookmark", "Du kannst auch zum Lesezeichen"); data.put("without actually rating it now", "zurückkehren, ohne es jetzt zu bewerten"); data.put("Save rating", "Bewertung speichern"); data.put("Do not rate this bookmark", "Lesezeichen nicht bewerten"); data.put("Create a new rating for bookmark", "Erstelle eine neue Bewertung zum Lesezeichen"); data.put("Other active neighbours", "Weitere aktive Nachbarn"); data.put("Members on documents with links to this page", "Anwesende auf Dokumenten mit Links zu dieser Seite"); data.put("1 more active neighbour", "1 weiterer aktiver Nachbar"); data.put("more active neighbours", "weitere aktive Nachbarn"); data.put("Collaborative Cure Search", "Kooperative Web-Recherche in CURE"); data.put("Input a name for the bookmark page", "Bitte einen Namen für die Lesezeichen-Seite eingeben"); data.put("Input a name for the new bookmark page", "Bitte einen Namen für die neue Lesezeichen-Seite eingeben"); data.put("Save changes", "Änderungen speichern"); data.put("Do not change this index", "Diesen Index nicht ändern"); data.put("Do not change this bookmark", "Dieses Lesezeichen nicht ändern"); data.put("Input a new destination and click 'Go!'", "Bitte eine neue Zieladresse eingeben und 'Los!' anklicken"); data.put("Deleting this CoCuSe Index Page will result in loss " +

"delete CoCuSe?", "Löschen dieser CoCuSe Index-Seite führt zum Verlust " + "aller zugehörigen Lesezeichen! Möchtest Du CoCuSe " + "tatsächlich löschen?");

(...)

D.5 Klasse ChannelInfo

In der Klasse ChannelInfo wird die CoCuSeLocalAwarenessView als zusätzlicher Channeltyp eingebunden.

public class ChannelInfo { (...) public static final int COCUSELOCALAWARENESSVIEW_TYPE = 77; (...) }

D.6 Graphikdateien

In das zentrale Verzeichnis von CURE (Configuration.getImagesPath), welches sämtliche Graphik- und Symboldateien beherbergt, werden folgende Dateien für CoCuSe eingefügt.

cocuse_blue.gif // Index-Button cocuseMember.gif // Local awareness showing 1 person cocuseMembers.gif // Local awareness showing more persons cocuseRatingNeg.gif // Icon representing negative rating value cocuseRatingNeu.gif // Icon representing neutral rating value cocuseRatingPos.gif // Icon representing positive rating value cocuseVisitor.gif // Active neighbours showing 1 person cocuseVisitors.gif // Active neighbours showing more persons

D.7 Javascriptdateien

In das zentrale Verzeichnis von CURE (Configuration.getJavaScriptPath), welches sämtliche Javascriptdateien beherbergt, wird ein Unterverzeichnis cocuse für folgende Dateien von CoCuSe eingefügt.

cocuseai.js // awareness information cocuseect.js // expand/collapse text block

D.8 Einbindung der Servlets

CoCuSe wird zur Einbindung der Servlets und entsprechender Mappings in die Konfigurationsdatei web.xml des Servlet-Containers Tomcat eingetragen.

<web-app> (...) <servlet> <servlet-name>CoCuSeServlet</servlet-name> <description>CoCuSe Collaborative Cure Search for Group Bookmarks</description> <servlet-class>de.fuh.csclportal.cocuse.webui.CoCuSeServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet>

<servlet> <servlet-name>CoCuSeProxyServlet</servlet-name> <description>CoCuSe Transparent WWW Proxy</description> <servlet-class>de.fuh.csclportal.cocuse.webui.CoCuSeProxyServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet>

<servlet-mapping> <servlet-name>CoCuSeServlet</servlet-name> <url-pattern>/CoCuSe/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CoCuSeServlet</servlet-name> <url-pattern>/cocuse/*</url-pattern> </servlet-mapping>

<servlet-mapping> <servlet-name>CoCuSeProxyServlet</servlet-name> <url-pattern>/CoCuSeProxy/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CoCuSeProxyServlet</servlet-name> <url-pattern>/cocuseproxy/*</url-pattern> </servlet-mapping> (...) </web-app>



Start

0 Inhaltsverzeichnis

1 Einführung in die Aufgabenthematik

2 Analyse des Themenbereichs

3 Betrachtung von bestehenden Systemen

4 CoCuSe - Collaborative Cure Search

5 Implementierung in Java

6 Zusammenfassung und Ausblick

Anhang A: Verzeichnis der Abbildungen

Anhang B: Verzeichnis der Tabellen

Anhang C: Verzeichnis der Quellen und Referenzen

Anhang D: Softwaretechnische Anbindung an CURE

Anhang E: Inhalt der Begleit-CD

</Thesis>
Diplomarbeit "Kooperative Web-Recherche in CURE"
(CoCuSe - Collaborative Cure Search)
http://CoCuSe.ALEGROIT.de/
Copyright © 2006 Alexander M. Gross/ALEGRO

Copyright © 1999-2015 CoCuSe.ALEGROIT.de All rights reserved.