= Notizomat =

Der Notizomat ist eine [Java] [Swing] Anwendung, die es erlaubt, mit mehreren Benutzern gemeinsam Notizen zu verwalten. Er hat folgende Eigenschaften:

* Die Notizen werden in einem hierarchischen Baum abgelegt (ähnlich einem Dateibaum).
* Jeder Benutzer hat ein Home-Verzeichnis.
* Falls ein Wort benutzt wird, zu dem es bereits eine Notiz gibt, wird daraus automatisch ein Link erstellt.
* Wer den Text formatieren möchte (Überschriften, Fettdruck, etc.), dem steht die recht einfache und bekannte Mediawiki-Syntax zur Verfügung.
* Notizen können ausgedruckt werden

Fortgeschrittene Eigenschaften:

* Es gibt Möglichkeiten, den Zugriff bzgl. Verlinkung, Schreiben und Lesen von Dokumenten einzuschränken, so das man unterschiedliche Teilprojekte und Benutzerverantwortlichkeiten voneinander trennen kann.
* Man kann seinen Benutzernamen und damit seine Sicht auf den Baum ändern, z.B. um an einem bestimmten Projekt zu arbeiten.

[{Image src='Notizomat-Screenshot.png' width='700'}]


== technische Informationen ==

Der Zugriff auf die eigentlichen Daten geht über ein abstraktes Interface ~FileProvider, für das es verschiedene Implementierungen gibt. Bisher habe ich den Zugriff auf "*.notiz"-Dateien im Filesystem sowie den Zugriff auf eine PostgreSQL-Datenbank realisiert. Später kann hier eine Implementierung auch direkt auf ein Dokumentenmanagement-System zugreifen.

Die Wikisyntax ist ebenfalls über ein Interface geregelt. Neben einer (nicht empfehlenswerten) ~SimpleWiki-Implementierung (mit regulären Ausdrücken) benutzt die Mediawiki-Implementierung die [Wikitext|http://wiki.eclipse.org/Mylyn/Incubator/WikiText]-Bibliothek des Eclipse-Projektes. Die erlaubt ganz einfach auch andere Merkup-Sprachen (Textile, Confluence, TWiki, etc.), wenn das jemand möchte.

Der Quellcode ist in zwei Projekte aufgeteilt. Dadurch ist die Datenverwaltungs-Basis von der Swing-Oberfläche getrennt. Der Sinn ist, das man später einfacher z.B. eine Android-Version erstellen kann, die dann auf der selben Basis aufbaut.


== Download ==

Den Quellcode gibt es im [Notizomat Bitbucket Repository|https://bitbucket.org/tbayen/notizomat]. Wer kein Mercurial mag, kann dort auch ein [tgz-Archiv|https://bitbucket.org/tbayen/notizomat/get/tip.tar.gz] herunterladen.

Wer keine Lust auf Quelltext und Interesse an Binaries hat, kann mich gerne fragen, ich kann dann eine aktuelle Version bereitstellen.


== Konfiguration ==

Ich gebe zu, das ich das Programm erst einmal für mich selber geschrieben habe. Wer damit herumspielen möchte, kann mich aber gerne ansprechen. Nach der ersten gemeinsamen Fremdinstallation haben wir dann bestimmt auch eine gute Installationsanleitung. ;-)

Grundsätzlich ist der Zugriff auf das '''Filesystem''' sowie auf die '''Datenbank''' in einer Properties-Datei zu konfigurieren. Der erste genannte Provider ist der Standard-Provider, in dem normalerweise neu geschriebene Notizen angelegt werden. Im Postgres-Server muss eine Datenbank voreingerichtet sein. Die Tabellen legt das Programm aber selber an.

Für die '''Benutzerverwaltung''' gibt es bisher keine Oberfläche. Hat man keine Datenbank, gibts nur einen Benutzer. Ist ein Provider mit dem Namen "datenbank" eingerichtet, wird dort eine Users-Tabelle angelegt. Das Programm legt beim ersten Start einen Benutzer für den aktuellen Linux-Benutzer sowie einen Superuser an. Alles weitere mache ich dann mit ~PGAdminII. ''(Hört sich zwar vielleicht blöde an, aber ehrlich gesagt reicht mir als Admin das für den Moment.)''

Hier ist eine Beispiel-Konfigurationsdatei zu sehen. Diese sollte im aktuellen Verzeichnis abgelegt sein und <tt>de.bayen.wiki.gui.config.properties</tt> heissen:

  provider = datenbank, kundenverzeichnis, filestore
  
  # Konfiguration für den Provider datenbank
  provider.datenbank.class = de.bayen.wiki.fileprovider.PostgresFileProvider
  de.bayen.utils.Sql.datenbank.servername = localhost
  de.bayen.utils.Sql.datenbank.databasename = notizomat
  de.bayen.utils.Sql.datenbank.user = notizomat
  de.bayen.utils.Sql.datenbank.password =passwort
  
  # Konfiguration für den normalen Fileprovider
  provider.filestore.class = de.bayen.wiki.fileprovider.FilesystemFileProvider
  de.bayen.wiki.fileprovider.FilesystemFileProvider.filestore.storagedir=/home/user/Notizen
  
  # Konfiguration für den besonderen (read-only) Provider für mein Kundenverzeichnis
  provider.kundenverzeichnis.class = de.bayen.wiki.fileprovider.KundenverzeichnisFileProvider
  de.bayen.wiki.fileprovider.KundenverzeichnisFileProvider.kundenverzeichnis.storagedir=/home/user/Kunden