]> err.no Git - scalable-opengroupware.org/blob - dbd/README
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@40 d1b88da0-ebda-0310-925b-ed51d8...
[scalable-opengroupware.org] / dbd / README
1 # $Id$
2
3 PostgreSQL Browser
4 ==================
5
6 Intention:
7 - fix open SOPE issues
8 - fix PostgreSQL issues, prepare low-level storage
9 - work towards SOGo from a storage point of view (with UI-X coming down from a
10   UI point of view)
11
12 SOPE Hierarchy
13 - /DBHOST/Databases/MYDB/MYTABLE/MYFIELD
14 - /DBHOST/Users/MYUSER
15
16 Class Hierarchy
17   DSoObject
18     DSoHost            "DBHOST"
19     DSoTable           "MYTABLE"
20     DSoDatabase        "MYDB"
21     DSoDatabaseManager "Database"
22     DSoUser            "MYUSER"
23     DSoUserManager     "Users"
24     DSoField           "MYFIELD"
25
26 Tricks used
27 ===========
28
29 - small hack in MainPage.m to make a redirect to a "valid" WO URL if the
30   request-handler-key is missing
31   - should be made by SOPE itself?
32
33 - own authenticator object
34   - two different authenticators (with dbname available and without)
35
36 - a hack in the SoApplication -lookupName: to differentiate between
37   'hostnames' and resources
38
39 - in DSoObject we extract login/password from the basic auth
40   - SOPE does all the authentication for SOPE level objects, but if we
41     want to reuse passwords, we need to do that manually
42   - we reuse an HTTP parsing method from SoHTTPAuthenticator
43
44 - could -sleep to tear down transient state (not used)
45   - -sleep is called by the SoObjectRequestHandler
46   - Note: also supports -_sleepWithContext:
47
48 - note that the EOAdaptor is created by the object, but the channel is created
49   by the method (the component)
50   - the object itself is not really active, the methods should be active
51   - the distinction here is blur, in general I would avoid methods which would
52     require an [[WOApplication application] context]
53
54 - we are not really clever with DSoUserManager and DSoDatabaseManager,
55   those two classes are basically identical
56
57 - the "GET" method is explicitly mapped in product.plist for the application
58   object because otherwise "GET" will be treated as a hostname (because we
59   perform no check on the hostname!)
60   - need to check whether we can make SOPE smarter on this front, but I guess
61     that issue is inherent to all containers which map to arbitary, external
62     collections
63   - we could create an EOAdaptor and connect it to 'template1', but this would
64     result in one unnecessary DB connection?