MiR Dokumentation
Hier soll versucht werden, die Code-Struktur und Funktionsweise von MiR zu dokumentieren...mal sehen ob das was wird, ist mehr ein Versuch.
Alle Angaben ohne Gewähr!
Hinweis: Diese Seite ist eine Arbeitsplattform und unterliegt ständigen Änderungen.
Adminbereich
Beim Aufruf von
mir/servlet/Mir erscheint das
Login für das Admincenter.
Verantwortlich dafuer ist:
Mir.java
Dort stehen die Funktionen ect. die beim Aufruf obiger URL ausgewertet werden.
Beim
erstmaligen Aufruf ohne weitere Parameter erscheint das
Login-Formular. Das nötige Template wird aus der
default.properties (oder
config.properties) ausgelesen und bereitgestellt.
Ebenfalls noch in
Mir.java findet dann die Überprüfung der Logindaten statt und man wird bei positiver Berechtigung auf die
Startseite des Admincenters weitergeleitet.
Diagramm Verlaufsstruktur
Mir.java (mir/servlet/Mir)
|
|--|-- erstmaliger Aufruf --> Login (Mir.java) --> module=Admin --> ServletModuleAdmin (Admin-Startseite)
| |-- module="login" --> Login (Mir.java) --> module=Admin --> ServletModuleAdmin (Admin-Startseite)
|
|-- module=Foobar --> Übergabe an ServletModuleFoobar
Module (ServletModuleFoobar) - Beschreibung
Auflistung der wichtigsten Funktionen der einzelnen Module. Es werden nur die nach außen sichtbaren Funktionen angesprochen, also die Routinen die direkt aus dem Admincenter heraus aufgerufen werden.
Der Wert für "do" entspricht dem Namen der Subroutine im jeweiligen Modul. Die Weiterleitung auf die entsprechende Subroutine aus dem do-Parameter erfolgt in der ServletModuleDispatch Klasse. Gibt es keinen do-Parameter wird versucht die Funktion defaultAction() im entsprechenden Modul aufzurufen.
Hinweis:
Mir.java erbt von verschiedensten anderen Klassen wie AbstractServlet oder ServletModule, daher finden sich in diesen Klassen zum Teil die Routinen welche in den aufgelisteten Modulen als "do" verwendet werden. Die jeweiligen Templates werden entweder im Modul selbst oder in ServletModule.java geladen.
Admin
- do=start - Anzeige der Startseite vom Admincenter
- do=superusermenu - Anzeige des Superuser Menüs
- do=reloadconfiguration - Neuladen der Bundles, Loggins und Producer
- do=reload - Neuladen der Bundles, Loggins und Producer für Scripte!
Content
- do=search - Anzeige von Artikeln eines Types
- do=list - Anzeige von Artikeln mit bestimmten Kriterien
- do=add - hinzufügen neuer Artikel (Formular)
- do=edit - editieren von Artikeln (Formular)
- do=delete - löschen von Artikeln (mir.servlet.ServletModule)
- do=update - update von Artikeln
- do=insert - hinzufügen neuer Artikel
- do=showPreview - Vorschau
- do=selectparent - Eltern-Artikel für den Artikel festlegen
- do=listchildren - Kinder des Artikels zeigen
- do=attach - anhängen von Mediafiles an einen Artikel
- do=dettach - entfernen von Mediafiles aus einem Artikel
Comment
- do=search - Anzeige von Kommentaren eines Types
- do=list - Anzeige von Kommentaren mit bestimmten Kriterien
- do=articlecomments - Anzeige aller Kommentare eines Artikels
- do=delete - löschen von Kommentaren
- do=edit - editieren von Kommentaren (Formular)
- do=update - update von Kommentaren
- do=attach - anhängen von Mediafiles an einen Kommentar
- do=dettach - entfernen von Mediafiles aus einem Kommentar
Hidden
- do=list - Anzeige aller versteckten Artikel des aktuellen Monats (oder in einem speziellen Monat&Jahr)
FileEdit
- do=list - Anzeige aller editierbaren Dateien in Verzeichnissen
- do=edit - editieren einer Datei (Formular)
- do=enter - wechseln in ein anderes Verzeichnis
- do=update - update einer Dateien
Breaking
- do=list - Anzeige der Breaking News (mir.servlet.ServletModule)
- do=add - hinzufügen von Breaking News (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Breaking News (Formular) (mir.servlet.ServletModule)
- do=update - update von Breaking News (mir.servlet.ServletModule)
- do=delete - löschen von Breaking News (mir.servlet.ServletModule)
Audio
- do=list - Anzeige der Audiofiles (mir.servlet.ServletModule)
- do=add - hinzufügen von Audiofiles (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Audiofiles (Formular) (mir.servlet.ServletModule)
- do=update - update von Audiofiles (mir.servlet.ServletModule)
- do=delete - löschen von Audiofiles (mir.servlet.ServletModule)
Video
- do=list - Anzeige der Videofiles (mir.servlet.ServletModule)
- do=add - hinzufügen von Videofiles (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Videofiles (Formular) (mir.servlet.ServletModule)
- do=update - update von Videofiles (mir.servlet.ServletModule)
- do=delete - löschen von Videofiles (mir.servlet.ServletModule)
Images
- do=list - Anzeige der Imagefiles (mir.servlet.ServletModule)
- do=add - hinzufügen von Imagefiles (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Imagefiles (Formular) (mir.servlet.ServletModule)
- do=update - update von Imagefiles(mir.servlet.ServletModule)
- do=delete - löschen von Imagefiles (mir.servlet.ServletModule)
OtherMedia
- do=list - Anzeige der Mediafiles (mir.servlet.ServletModule)
- do=add - hinzufügen von Mediafiles (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Mediafiles (Formular) (mir.servlet.ServletModule)
- do=update - update von Mediafiles (mir.servlet.ServletModule)
- do=delete - löschen von Mediafiles (mir.servlet.ServletModule)
Mediafolder
- do=list - Anzeige der Mediafolder (mir.servlet.ServletModule)
- do=search - Anzeige von bestimmten Mediafolder (mir.servlet.ServletModule)
- do=add - hinzufügen von Mediafolder (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Mediafolder (Formular) (mir.servlet.ServletModule)
- do=update - update von Mediafolder (mir.servlet.ServletModule)
- do=delete - löschen von Mediafolder (mir.servlet.ServletModule)
Producer
- do=showProducerQueueStatus - Anzeige der Producer und aktueller Status
- do=producerecipe - Ausführen von mehrere Producern (z.B. recipe=allnew)
- do=enqueue - Ausführen eines einzelnen Producers
- do=cancel - Abbrechen eines laufenden Producer-Prozesses (oder alle)
- do=produce - Ausführen von Producern (nur für externen Gebrauch, z.B. Cronjobs)
Message
- do=list - Anzeige der Messages (mir.servlet.ServletModule)
- do=add - hinzufügen von Messages (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Messages (Formular) (mir.servlet.ServletModule)
- do=update - update von Messages (mir.servlet.ServletModule)
- do=delete - löschen von Messages (mir.servlet.ServletModule)
Topics
- do=list - Anzeige von Topics (mir.servlet.ServletModule)
- do=add - hinzufügen von Topics (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Topics (Formular) (mir.servlet.ServletModule)
- do=update - update von Topics (mir.servlet.ServletModule)
- do=delete - löschen von Topics (mir.servlet.ServletModule)
ArticleType
- do=list - Anzeige von Artikeltypen (mir.servlet.ServletModule)
- do=add - hinzufügen von Artikeltypen (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Artikeltypen (Formular) (mir.servlet.ServletModule)
- do=update - update von Artikeltypen (mir.servlet.ServletModule)
- do=delete - löschen von Artikeltypen (mir.servlet.ServletModule)
MediaType
- do=list - Anzeige von Mediatypen (mir.servlet.ServletModule)
- do=add - hinzufügen von Mediatypen (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Mediatypen (Formular) (mir.servlet.ServletModule)
- do=update - update von Mediatypen (mir.servlet.ServletModule)
- do=delete - löschen von Mediatypen (mir.servlet.ServletModule)
CommentStatus
- do=list - Anzeige von Kommentarstati (mir.servlet.ServletModule)
- do=add - hinzufügen von Kommentarstati (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Kommentarstati (Formular) (mir.servlet.ServletModule)
- do=update - update von Kommentarstati (mir.servlet.ServletModule)
- do=delete - löschen von Kommentarstati (mir.servlet.ServletModule)
Users
- do=list - Anzeige der MiR-User
- do=add - hinzufügen von MiR-Usern (Formular)
- do=edit - editieren von MiR-Usern (Formular)
- do=update - update von MiR-Usern
- do=delete - löschen von MiR-Usern
- do=changepassword - ändern vom MiR-User Passwort (Formular)
- do=updatepassword - update vom MiR-User Passwort
Language
- do=list - Anzeige der Sprachen (mir.servlet.ServletModule)
- do=add - hinzufügen von Sprachen (Formular) (mir.servlet.ServletModule)
- do=edit - editieren von Sprachen (Formular) (mir.servlet.ServletModule)
- do=update - update von Sprachen (mir.servlet.ServletModule)
- do=delete - löschen von Sprachen (mir.servlet.ServletModule)
Abuse
- do=showsettings - Anzeige des Abuse-Menüs (default)
- do=showlog - IP-Liste zeigen
- do=showfilterconfiguration - Anzeige der Filterkonfiguration
- do=movefiltergroupup - Filtergruppe nach oben schieben
- do=movefiltergroupdown - Filtergruppe nach unten schieben
- do=listfilters - Filter einer Filtergruppe anzeigen
- do=addfiltergroup - Hinzufügen einer Filtergruppe (Formular)
- do=updatefiltergroup - Updaten einer Filtergruppe
- do=deletefiltergroup - Löschen einer Filtergruppe
- do=addfilter - einzelnen Filter einer Filtergruppe hinzufügen (Formular)
- do=editfilter - einzelnen Filter einer Filtergruppe editieren (Formular)
- do=updatefilter - einzelnen Filter einer Filtergruppe updaten
- do=deletefilter - einzelnen Filter einer Filtergruppe löschen
- do=movefilterup - einzelnen Filter einer Filtergruppe ein Feld nach oben schieben
- do=movefilterdown - einzelnen Filter einer Filtergruppe ein Feld nach unten schieben
- do=movefiltertop - einzelnen Filter einer Filtergruppe ganz nach oben schieben
- do=movefilterbottom - einzelnen Filter einer Filtergruppe ganz nach unten schieben
to top
OpenPostingbereich
Beim Aufruf von
mir/servlet/OpenMir erscheint das
Postingformular.
Verantwortlich dafuer ist:
OpenMir.java
Beim
erstmaligen Aufruf ohne weitere Parameter erscheint das
Formular zum posten von Artikeln.
Der Wert für "do" entspricht dem Namen der Subroutine im jeweiligen Modul. Die Weiterleitung auf die entsprechende Subroutine aus dem do-Parameter erfolgt in der ServletModuleDispatch Klasse. Gibt es keinen do-Parameter wird versucht die Funktion defaultAction() im entsprechenden Modul aufzurufen.
Diagramm Verlaufsstruktur
OpenMir.java (mir/servlet/OpenMir)
|
|-- erstmaliger Aufruf --> Postingforumular (ServletModuleOpenIndy.java)
ServletModuleOpenIndy
Bei
Initialisierung werden alle nötigen Templates des Openpostingbereichs geladen (Artikel, Kommentare, Suche, Email).
Ebenfalls werden die Klassen
ModuleComment und
ModuleContent in Objekte geladen.
Default-Routine ist
defaultAction() und ruft ihrerseits die Funktion
opensession() (mit
openpostings()) auf. Davon ausgehend wird über die Routine
localizer() der
MirGlobal.java Klasse die Routine
openpostings() der Klasse
MirBasicLocalizer (extends MirLocalizer) aufgerufen die das OpenPostingSession-Objekt zurückgibt...usw. ect. pp.
Danach wird mit dem Aufruf der
MirBasicPostingSessionHandler Funktion
handler.processRequest(request, session, response); von ServletModuleOpenIndy aus (mittels des OpenPostingSession-Objekts) überpüft ob das OpenPosting-Formular gesperrt ist oder nicht. Falls nicht, werden die
FreeMarker Templates (oder so) aus der
default.properties bzw.
config.properties geladen:
freemarker(etc/open/)
to top
Benutzte Standard-Java Klassen
multex
- multex.Failure;
- multex.Exc;
javax
- javax.servlet.ServletConfig;
- javax.servlet.ServletException;
- javax.servlet.UnavailableException;
- javax.servlet.ServletContext;
- java.servlet.http
- javax.servlet.http.HttpServlet;
- javax.servlet.http.HttpServletRequest;
- javax.servlet.http.HttpServletResponse;
- javax.servlet.http.HttpSession;
- javax.media.jai
- javax.media.jai.ImageLayout;
- javax.media.jai.InterpolationBilinear;
- javax.media.jai.JAI;
- javax.media.jai.ParameterBlockJAI;
java.io
- java.io.IOException;
- java.io.PrintWriter;
- java.io.StringWriter;
- java.io.IOException;
- java.io.File;
- java.io.FileInputStream;
- java.io.FileOutputStream;
- java.io.Reader;
- java.io.BufferedInputStream;
- java.io.BufferedOutputStream;
- java.io.FileNotFoundException;
- java.io.InputStream;
- java.io.OutputStream;
- java.io.InputStreamReader;
- java.io.ByteArrayOutputStream;
java.lang.reflect
- java.lang.reflect.Method;
- java.lang.reflect.InvocationTargetException;
java.util
- java.util.HashMap;
- java.util.List;
- java.util.Map;
- java.util.ArrayList;
- java.util.Arrays;
- java.util.Iterator;
- java.util.Properties;
- java.util.Set;
- java.util.Date;
- java.util.AbstractList;
- java.util.Collections;
- java.util.Calendar;
- java.util.GregorianCalendar;
- java.util.TimeZone;
- java.util.Locale;
org.apache
- org.apache.commons
- org.apache.commons.collections.ExtendedProperties;
- org.apache.commons.beanutils.MethodUtils;
- org.apache.commons.beanutils.PropertyUtils;
- org.apache.commons.fileupload.FileItem;
- org.apache.commons.dbcp.DelegatingConnection;
- org.apache.fop
- org.apache.fop.apps.Driver;
- org.apache.fop.apps.InputHandler;
- org.apache.fop.apps.XSLTInputHandler;
- org.apache.log
- org.apache.log.Hierarchy;
- org.apache.log.Logger;
- org.apache.log.Priority;
- org.apache.velocity
- org.apache.velocity.Template;
- org.apache.velocity.app.VelocityEngine;
- org.apache.velocity.context.Context;
- org.apache.velocity.exception.ParseErrorException;
- org.apache.velocity.exception.ResourceNotFoundException;
- org.apache.velocity.runtime.RuntimeServices;
- org.apache.velocity.runtime.log.LogSystem;
java.sql
- java.sql.ResultSet;
- java.sql.SQLException;
- java.sql.Connection;
freemarker
- freemarker.template.FileTemplateCache;
- freemarker.template.SimpleScalar;
- freemarker.template.Template;
- freemarker.template.TemplateHashModel;
- freemarker.template.TemplateListModel;
- freemarker.template.TemplateMethodModel;
- freemarker.template.TemplateModel;
- freemarker.template.TemplateModelException;
- freemarker.template.TemplateModelRoot;
- freemarker.template.TemplateScalarModel;
java.awt
- java.awt.image
- java.awt.image.ColorModel
- java.awt.image.DataBuffer
- java.awt.image.PixelInterleavedSampleModel
- java.awt.image.RenderedImage
com.sun
- com.sun.media.jai.codec.ByteArraySeekableStream;
- com.sun.media.jai.codec.FileSeekableStream;
- com.sun.media.jai.codec.SeekableStream;
org.xml.sax
gnu.regexp
- gnu.regexp.RE;
- gnu.regexp.REException;
java.text
- java.text.NumberFormat;
- java.text.ParseException;
- java.text.SimpleDateFormat;
org.postgresql
- org.postgresql.PGConnection;
- org.postgresql.largeobject.LargeObject;
- org.postgresql.largeobject.LargeObjectManager;
to top
Datenbank (Klassen & Schemata)
Die postgresql Datenbank wird über die Klasse DatabaseEngine.java angesprochen. Dort wird die Verbindung hergestellt und ein Datenbankobjekt zurückgegeben. Die benötigten Zugangsdaten werden zuvor aus config.properties ausgelesen. Aufgerufen wird die DatabaseEngine-Klasse von MirGlobal.java und AbstractServlet.java.
Datenbankabfragen werden durch die Klasse
Database.java erledigt. Dort finden sich alle Funktionen zum auslesen von Tabellen, updaten, hinzufügen von Einträgen ect..
to top
Freemarker
to top
to top