• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Datenbank wechseln

arbor95

Geoguru
Unter ACB gibt es ja die Möglichkeit die Datenbank zu wechseln im Programm.

Ich fände das auch im WCB schön.

Ich weiss nicht ob im ACB dann auch der DescriptionImageFolder und der SpoilerFolder geändert werden.
Ich wüsste einige Gründe, die dafür sprechen würden.
Implementierung: In der config das \Repository\ durch \<dbname>\ ersetzen.

Somit könnte ich mit WCB auf dem gleichen Datenbestand arbeiten, wie mein Handy, wenn ich es im Massenspeichermodus mit dem Computer verbinde. Das spart mir die Synchronisiererei.

Ich würde das auch ins WCB einbauen, wenn hier kein Sturm der Entrüstung aufbraust.
 

Ging-Buh

Geowizard
araber95 schrieb:
Ich würde das auch ins WCB einbauen, wenn hier kein Sturm der Entrüstung aufbraust.
Das wird hier mit Sicherheit nicht passieren. Im Gegenteil sogar es wären dir viele sicherlich dankbar. Es wurde hier schon oft nach dem Multi-DB Support für WinCB gefragt.

Hast du die Cachebox für Windows Mobile schon mal angesehen? Hier ist der Multi-DB Support komplett implementiert. Wenn er in WinCB aufgenommen werden sollte, dann sollte aus meiner Sicht dies genauso funktionieren wie in CB. Für Android habe ich auch vor, diese Erweiterungen (für die Repositories) auch noch einzubauen, bin aber aus Zeitgründen noch nicht dazu gekommen.

In CB gibt es in jeder DB ein Flag, das aussagt, ob das gemeinsame Repository (Cachebox\Repository) verwendet werden soll oder ein eigenes (Cachebox\Repositories\<DBname>).

Beim Export der DB von WinCB nach CB hat man die Möglichkeit, zu bestimmen, ob die Images... ins gemeinsame Repository oder in ein eingenes geschrieben werden sollen. In CB wird dann überprüft, ob ein eigenes Repository verwendet wird und dementsprechend werden die Images dann im gemeinsamen oder im eigenen Repository gesucht.

Bei der Umsetzung könnte sicherlich viel Code direkt aus CB übernommen werden.

Falls du dies einbauen willst und Fragen dazu hast, kannst du mich gerne direkt kontaktieren.
 

GeoSilverio

Geowizard
Ich gehöre zwar nicht zu den Entwicklern, würde das aber auch befürworten.
Derzeit ist es so, dass in Cachebox (egal welche Mobilvariante), die Auswahl der DB im Standard nur die jeweils gewählte DB wechselt, die Pfade für Images und Spoiler bleiben auf
\Repository\Images etc. stehen.
Man kann aber auch wechseln auf jeweils unterschiedliche Repositories. So richtig verstanden habe ich das noch nicht, habs aber auch noch nicht wirklich probiert. Mir hat bislang immer gereicht, dass ich die DB wechseln kann, die Images lagen halt gemeinsam in einem Ordner.

Aber wünschenswert wäre es schon, dass WinCB mit der gleichen Struktur umgehen kann und zweitens wäre es schön, die Image- und Spoiler-Ordner auch getrennt zu haben, so kann man mal ein zweites Cachegebiet einrichten, beispielsweise für Urlaub etc. Und hat dann DB, Images etc. komplett getrennt und kann das nach dem Urlaub auch komplett weglöschen.
Die Maps sollten evtl. zentral bleiben oder alternativ müsste Cachebox schauen:
Gibts im dedizierten Map-Ordner eine Karte für das Gebiet? Wenn ja, nimm diese, wenn nein, schau ins übergeordnete, gemeinsame Maps-Verzeichnis etc...

Wie auch immer: Ich bin dafür. :dafuer:

Edit: Ich war zu langsam, hab mal wieder zu lang geschrieben und dann nicht abgeschickt. :D
 
OP
arbor95

arbor95

Geoguru
Ging-Buh schrieb:
...In CB gibt es in jeder DB ein Flag, das aussagt, ob das gemeinsame Repository (Cachebox\Repository) verwendet werden soll oder ein eigenes (Cachebox\Repositories\<DBname>). ...
Wird das Flag auch in ACB berücksichtigt?
 

Ging-Buh

Geowizard
araber95 schrieb:
Ging-Buh schrieb:
...In CB gibt es in jeder DB ein Flag, das aussagt, ob das gemeinsame Repository (Cachebox\Repository) verwendet werden soll oder ein eigenes (Cachebox\Repositories\<DBname>). ...
Wird das Flag auch in ACB berücksichtigt?
Nein, im Moment wird dieses Flag in ACB noch nicht berücksichtigt. Es ist aber auf jeden Fall geplant, dies in ACB genauso zu implementieren wie in CB.
 
OP
arbor95

arbor95

Geoguru
Mir ist da noch eine einfache Variante der Umsetzung eingefallen: WCB mit Aufrufparameter configDateiName. Das Wechseln bei gestartetem Programm über Menü ist zwar nett, aber braucht man da nicht wirklich. Ein Aufruf über eine cmd-Datei wäre ja das geringste Problem für den Anwender.
 

Ging-Buh

Geowizard
araber95 schrieb:
Mir ist da noch eine einfache Variante der Umsetzung eingefallen: WCB mit Aufrufparameter configDateiName. Das Wechseln bei gestartetem Programm über Menü ist zwar nett, aber braucht man da nicht wirklich. Ein Aufruf über eine cmd-Datei wäre ja das geringste Problem für den Anwender.
Hey, diese Idee hört sich nicht schlecht an. Über die config Datei können alle Pfade gesteuert werden. Warum der Einfachheit halber nicht den Multi-DB Support über mehrere Config Dateien machen.
Das könnte ja vielleicht noch etwas automatisiert werden, damit automatisch neue config Dateien für neue DB's erzeugt werden können...
Darüber sollte wir ernsthaft nachdenken...

Meiner Meinung nach sollte unter Windows die Aufteilung in mehrere DB's eh nicht übertrieben werden. Windows kann mit großen DB's gut umgehen. Über die Categorien können diese auch sehr gut gefiltert werden.
In Cachebox für Windows Mobile wurde der Multi-DB Support eigentlich nur eingeführt, weil die schwächeren Geräte mit großen DB's nicht umgehen können.
 

GeoSilverio

Geowizard
Bei mir ists weniger die DB, die mir "Probleme" macht, sondern die etwa 20.000 Image-Dateien, die sich halt mit vielen Caches ansammeln.
Wenn ich das besser trennen kann, fällt es auch leichter, mal den alten Mist zu löschen.

Aber das geht ja auch über eine Anpassung der config. Hatte ich früher mit CB für WM ja mit so einem Makro-Tool selbst gebaut.
Wenn eine neue DB erstellt wurde habe ich die einmalig manuell mit einem postfix versehen.
Also aus cachebox.sdf dann cachebox_hh.sdf oder cachebox_muc.sdf etc...
Dann einen neuen image-Ordner mit gleichem postfix angelegt und dem Start von cachebox einfach eine Abfrage nach der DB vorangestellt. Danach wurden die Pfade in der config angepasst und schließlich cb gestartet. :)
Aber das lässt sich sicher noch ein wenig eleganter machen.
 
OP
arbor95

arbor95

Geoguru
sodele: ich habe mal eine Möglichkeit implementiert.

Man rufe WCB mit einem Parameter auf (falls Leerzeichen drin, ist das Ganze mit " zu klammern) und bearbeite die wincachebox.config mit einem Editor indem man bestimmte Stellen mit %1% ersetzt.

Beispiel:
...
DatabasePath=G:\cachebox\%1%.db3
DescriptionImageFolder=G:\cachebox\Repository\%1%\Images
SpoilerFolder=G:\cachebox\Repository\%1%\Spoilers
...
MapPackFolder=G:\cachebox\Maps
...
wobei G:\cachebox das Cachebox - Datenverzeichnis ist.

(Bei mir auf dem Handy)


Jetzt müsste ACB nur noch beim Wechsel auf <%1%> auch Image und Spoiler umsetzen, dann wäre ich erst mal glücklich und zufrieden.
 

Ging-Buh

Geowizard
araber95 schrieb:
sodele: ich habe mal eine Möglichkeit implementiert.

Man rufe WCB mit einem Parameter auf (falls Leerzeichen drin, ist das Ganze mit " zu klammern) und bearbeite die wincachebox.config mit einem Editor indem man bestimmte Stellen mit %1% ersetzt.

Beispiel:
...
DatabasePath=G:\cachebox\%1%.db3
DescriptionImageFolder=G:\cachebox\Repository\%1%\Images
SpoilerFolder=G:\cachebox\Repository\%1%\Spoilers
...
MapPackFolder=G:\cachebox\Maps
...
wobei G:\cachebox das Cachebox - Datenverzeichnis ist.

(Bei mir auf dem Handy)


Jetzt müsste ACB nur noch beim Wechsel auf <%1%> auch Image und Spoiler umsetzen, dann wäre ich erst mal glücklich und zufrieden.
Ich würde in ACB den Multi-DB Support auf jeden Fall genau so implementieren, wie er aktuell in der CB (für Windows Mobile) drin ist. Hast du die Möglichkeit, dir diese Quellen anzusehen?

In CB gibt es das globale Repository ("Cachebox\Repository") und bei Bedarf für jede DB ein lokales.
Diese Lokalen Repositories sind standardmäßig in den Ordnern ("Cachebox\Repositories\%DBName%") gespeichert. Wenn du mit WinCB einen Export einer DB mit dem Schalter "eigenes Repository" machst siehst du die genaue Ordnerstruktur, die dabei angelegt wird.

Die ganz exakten Vorgänge (in CB) habe ich jetzt nicht auswendig im Kopf, kann mir aber heute Abend das ganze nochmal durch den Kopf gehen lassen und es dann nochmal genau beschreiben.

Die Trennung zwischen globalem und lokalen Repositories sollten wir auf jeden Fall beibehalten, da es dadurch auch Möglich ist, mehrere DB's zu nutzen, die sich den Image Ordner teilen.
 

Ging-Buh

Geowizard
Hab zu den lokalen Repositories noch ein paar Infos gesammelt:

In der config von CB kann man den Pfad zu den lokalen Repositories angeben ("OtherRepositoriesFolder").
Dieser ist standardmäßig auf ...\cachebox\repositories" gesetzt.

Darin wird für jede DB (die ein lokales Repository verwenden soll) ein Ordner angelegt mit dem Dateinamen der DB (ohne Erweiterung). z.B. für die DB "Test.sdf" (bzw Test.db3) wird der Ordner "..\cachebox\repositories\test" angelegt. Darin liegen dann die Ordner:
- cache - für die gecachten Map Tiles
- map - für map packs
- spoiler - für spoiler images
- images - für description images

In CB existiert dann in jeder DB noch ein Flag, in dem gespeichert ist, ob für diese DB ein lokales Rep. verwendet wird. Darauf könnte wir aber vielleicht verzichten und einfach nachsehen, ob ein entsprechender Ordner vorhanden ist.

Wenn nun eine Info (Image, Map Tile... ) geladen werden soll wird zuerst im lokalen Rep. gesucht, wenn dort nichts gefunden wird, wird im globalen Rep. ("..\cachebox\Repository") gesucht. Wenn im lokalen Rep. gesucht wird, dann werden erstmal die Einstellungen (z.B. Pfad zu den Spoiler Images) in der config ignoriert.

Diese Aufteilung zwischen globalem und lokalen Repositories müssen wir (zumindest in ACB) auf jeden Fall irgendwie beibehalten!
 
OP
arbor95

arbor95

Geoguru
In der wincachebox.config gibt es ja noch keinen Eintrag für OtherRepositoriesFolder.
Aber das lässt sich ja noch einbauen.

Die aktuelle Form widerspricht der CB - Struktur ja nicht.

Ein Batchaufruf würde etwa so aussehen:

C:
rem Pfad zum Programm WinCachebox.exe
cd \Dateien_Entwicklung\WinCacheBox\bin\Debug
start WinCachebox.exe "meine Datenbank"
 
OP
arbor95

arbor95

Geoguru
Ging-Buh schrieb:
...Ich würde in ACB den Multi-DB Support auf jeden Fall genau so implementieren, wie er aktuell in der CB (für Windows Mobile) drin ist. Hast du die Möglichkeit, dir diese Quellen anzusehen?...
Im Prinzip ja. Habe ich mir bisher gespart.
Leider habe ich auch kein Gerät um CB in Aktion zu sehen und die Handhabung mit dem Export / Import zu begutachten. Ich habe nur hier ab und an gesehen, dass da immer wieder Fragen zu auftauchen.

Ging-Buh schrieb:
...Diese Aufteilung zwischen globalem und lokalen Repositories müssen wir (zumindest in ACB) auf jeden Fall irgendwie beibehalten!...
Dann werd ich erst mal dort nachsehen wie das dort implementiert ist.

Ich selber würde gerne auf Export / Import verzichten und mit WCB auf dem gleichen Datenbestand arbeiten wie das mobile Gerät. Dafür müsste jetzt für mich nur noch das ACB die Repositories richtig auswählen, was wohl noch nicht implementiert ist (so wie ich gelesen habe)

Ist das mit eigenem oder globalen Repository für jede Datenbank nicht etwas übertrieben (Overkill) ?
 

GeoSilverio

Geowizard
Ich denke letztendlich ist es egal, auf welcher Ebene man die Trennung zwischen den DB-Image-Beziehungen macht.

Bislang war es, da wo es überhaupt umgesetzt ist, wohl so umgesetzt, dass es entweder ein "Repository" gibt, darin liegt eine (oder mehre DBs).
Man kann dann zwischen den DB wechseln, Images- und Spoiler-Ordner bleiben aber gemeinsamen Ordner für all diese DBs.

Alternativ eine echte Trennung der Repositories, eben über den eigenen Ordner Repositories mit dem jeweiligen Unterordner, der nach dem DB-Namen benannt ist.
Darin dann das DB-File und eigene Ordner für Images und Spoiler etc...

Ich finde das durchaus schick so.
Wie gesagt gibts hier doch einige, die mehrere recht große Gegenden "mit sich herumschleppen". Sicher auch weil Cachebox für WM so performant und schnell war, dass man auch mal 6.000 oder 8.000 Caches in einer DB haben konnte, ohne dass der Speicher oder die Performance in die Knie gingen. Nur wenn man da mal "aufräumen" will und beispielsweise die Images nur des einen Gebietes löschen will, wirds halt schwer mit einem gemeinsamen Image-Ordner.

Da das ja schon in Cachebox für WM so drin ist und andererseits von WinCB im Export unterstützt wird, würd ich die Logik so lassen und nur noch in WinCb und in ACB nachziehen.
Die Daten dann gemeinsam zu nutzen. als in WinCB über gemountete SD-Karte und auf dem Smartphone, sollte dann auch kein Problem sein, wenn alle drei Versionen das gleich handhaben.
Aber letztendlich egal wie man es macht, ich denke es sollte eben nur in allen Versionen gleich sein.

Noch was anderes: Den "Fallback" auf den gemeinsamen Maps-Ordner, falls im Repositories\.... keine Karte gefunden wird, kannte ich noch nicht. Das ist super, da speziell bei ACB die mapsforge-Karte dann liegen bleiben kann, wo sie ist.
Jetzt bräuchte ACB eben nur noch die Multi-DB-Untersützung in unterschiedlichen Repositories. Hier ist die Performance zwar auch ganz ordentlich aber ganz so performant wie unter WM scheint es mit (mit gleichem Handy) unter Android doch nicht zu sein...
 

Ging-Buh

Geowizard
araber95 schrieb:
Ist das mit eigenem oder globalen Repository für jede Datenbank nicht etwas übertrieben (Overkill) ?
Moment mal, es hat niemand von einem eigenen globalen Rep. für jede DB geschrieben.

Hier nochmal ein Überblick über den Multi-DB Support von Cachebox (WinMob):
  • Die DB's liegen alle im selben Ordner (einstellbar in der config) (Standard: ..\cachebox)
  • Alle DB's greifen auf das (einzige) globale Repository zu (einstellbar in der config) (Standard: ..\cachebox\repository)
  • Für jede DB kann (muss aber nicht) ein lokales Repository angelegt werden. Für jedes dieser lokalen Repositorys wird ein Ordner (mit dem selben Namen wie die DB) im Repositories-Ordner (einstellbar in der config) (Standard: ..\cachebox\repositories) angelegt.
  • In jeder DB ist ein Schalter, der angibt, ob für diese DB ein lokales Repository verwendet wird. Auf diesen Schalter können wir aber verzichten, da wir für diesen Fall einfach überprüfen können, ob der entsprechende Ordner im Repositories-Ordner vorhanden ist.
  • Wenn z.B. in einer DB ein Image gesucht werden soll, wird zuerst im lokalen Repository (falls vorhanden) gesucht und wenn dort kein Image gefunden wird, wird im globalen gesucht.
    Dies gilt für DescriptionImages, SpoilerImages, MapPacks und den MapCache.
  • Wenn mit einer DB z.B. Images oder MapCache Tiles gespeichert werden sollen werden diese in das lokale Rep. gespeichert, falls dies vorhanden ist, sonst ins globale.

Dieses globale Rep. ist einerseits aus Kompatibilitätsgründen geblieben, andererseits möchte ich nicht darauf verzichten. Es kann im Endeffekt ja jeder selbst entscheiden, ob er das globale Rep. verwendet oder nicht (wenn mal alles fertig ist).

Ich verstehe zwar einerseits dein Bestreben, die Daten in WinCB und ACB direkt parallel zu nutzen, ohne Export/Import, ich für mich bevorzuge aber lieber die Variante mit einer DB in WinCB und mehreren auf dem Handy.
  • Zum einen ist dies eine Art der Datensicherung. Ich würde niemals meine Daten einer Speicherkarte im Handy anvertrauen. Das kann einerseits mal verloren gehen und die Speicherkarten neigen doch viel viel eher zu Fehlern als Festplatten. Ich hatte in der Vergangenheit schon öfters Probleme damit.
  • Ich kann mit WinCB Arbeiten, ohne das Handy anzustecken.
  • Die Geschwindigkeit von WinCB sollte doch von der Festplatte gestartet auch viel besser sein, wie von der Speicherkarte.
  • Import- und Update- Funktionen kann ich so mit einem Schlag für meine komplette DB durchführen. Wenn du mehrere DB's verwenden würdest müsstest du zum Import jedesmal erst die DB wechseln...
  • Es wären für die Zukunft auch mal Batch Funktionen denkbar für den Import, Export, Update...

Die aktuellen Probleme mit der einen DB sollte sich ja auch anders lösen lassen:
  • Beim Löschen von Caches wäre es in Zukunft durchaus denkbar, gleich die Images... mit zu löschen
  • Die verschiedenen Profile von CW bzw. verschiedene PQ's können in WinCB über die Categories verwaltet werden
  • Es wäre in Zukunft denkbar, einen automatischen Export anhand der Categories zu machen. Jede Categorie erzeugt eine DB für ACB/CB (auch incl. eigenem Repository möglich)

Grundsätzlich würde ich aber einem Einbau des Multi-DB-Supports in WinCB nicht im Wege stehen, wenn die bisherigen Möglichkeiten dadurch nicht verloren gehen.
 
OP
arbor95

arbor95

Geoguru
Sodele, die Strukturen sind jetzt kompatibel drin.

Allerdings werden (vermutlich) noch keine Infos in die Datenbank geschrieben.

Ist das der Grund, warum es im ACB noch nicht die Spoiler/Images nach einem Umschalten auf eine andere Datenbank anzeigt?
 

Ging-Buh

Geowizard
Ich werde es mir morgen mal ansehen...

Welche Infos in welcher Datenbank meinst du?

Bei mir in ACB werden nach einem Wechsel der DB die Spoiler angezeigt. Hast du in ACB schon die DB's mit eigenen Repositories gestartet?
 
OP
arbor95

arbor95

Geoguru
Ging-Buh schrieb:
....
Welche Infos in welcher Datenbank meinst du?

Bei mir in ACB werden nach einem Wechsel der DB die Spoiler angezeigt. Hast du in ACB schon die DB's mit eigenen Repositories gestartet?

Ja, natürlich meine ich eigene Repositories. (Derohne ist ja trivial)
 
Oben