summaryrefslogtreecommitdiff
path: root/development/pim/pimpaper/seperation.tex
Unidiff
Diffstat (limited to 'development/pim/pimpaper/seperation.tex') (more/less context) (ignore whitespace changes)
-rw-r--r--development/pim/pimpaper/seperation.tex91
1 files changed, 45 insertions, 46 deletions
diff --git a/development/pim/pimpaper/seperation.tex b/development/pim/pimpaper/seperation.tex
index 544d5c1..e865fb0 100644
--- a/development/pim/pimpaper/seperation.tex
+++ b/development/pim/pimpaper/seperation.tex
@@ -1,66 +1,65 @@
1\section{Components of Opie PIM} 1\section{Components of Opie PIM}
2 2
3\subsection{The Record} 3\subsection{The Record}
4With our API everything is based on a OPimRecord, this record 4The basic component of our API is the OPimRecord. Every record is identified
5got a Identifier which is unique to the Backend it belongs, it is 5by an identifier, which is unique to the backend it belongs to
6also possible to assign a new Unique Identifier (uid) on a newly 6\comment{Why it is just unique to the backend? (eilers)}.
7If expected, is also possible to assign a new Unique Identifier (UID) on a newly
7created OPimRecord.\\ 8created OPimRecord.\\
8The OPimRecord allows to assign Categories this record is in, to get 9The OPimRecord allows to be assigned to categories, to provide a Rich Text
9a Rich Text summary of the content of the Record and finally to match 10summary of its content and finally to match
10the content of the Record with a regular expression. 11the content of the Record with a regular expression.
11 12
12\subsection{The Frontend} 13\subsection{The Frontend}
13Opie PIM got Frontends to access Todos, Events and Addressees. Using 14Opie PIM implements frontends to access Todos, Datebook-Events and Addresses.
14the default Constructor of either OTodoAccess, ODatebookAccess or 15The frontend provides a value based interface and operates on records inherited
15OContactAccess uses the default data. These Access methods offer 16from OPimRecord and add extra task specific methods to it.
16the common load, save, clear, reload methods and have all in common 17
17to query for an example record, sort a list of records for specific 18Access methods offer the common load, save, clear, reload methods,
18characteristics, and to match the content against a regular expression 19give access to the records inside the database/storage and implement a general
19 and give access to the Records inside the database/storage.\\ 20interface to query, for example, a record, request a sorted lists of records for specific
20The Frontend provide a value based Interface and operates on Records 21characteristics and to match the content against a regular expression.\\
21that inherit from OPimRecord and add extra task specific methods to it.
22 22
23\subsection{ORecordList and Iterator} 23\subsection{ORecordList and Iterator}
24The result of a query or the content of the database is a ORecordList. 24The result of a query or the content of the database is is abstracted by an ORecordList.
25To iterate over a ORecordList you can use the Iterator. The Iterators 25To iterate over an ORecordList useing an Iterator.
26behaves like the Iterators found in Qt and on dereferencing you get 26Using STL like iterators, it is possible to iterate through an ORecordList.
27the reference to the record. Internally the record is fetched just 27Accessing a record is easy possible by dereferencing the iterator.
28in time. This delayed loading allows to exploit full power of the specific 28Internally, the record is fetched just in time, called delayed loading.
29Backend. 29This delayed loading allows to exploit \comment{exploit??} full power of the specific
30backend.
30 31
31 32
32\subsection{The Backend} 33\subsection{The Backend}
33The Backend is a template based interface that operates on OPimRecord 34The backend is a template based interface that operates on data types, inherited from OPimRecord.
34inherited data types. To implement the delayed loading the Backends 35Delayed loading is implemented by the idea of storing just a list of UIDs instead complete records
35Implementation return only a list of UIDs and these get converted 36in an OPimRecordList<T> by the frontend and to fetch the records just on demand.
36to a OPimRecordList<T> by the Frontend.
37 37
38\subsection{The cache and read ahead} 38\subsection{Caching}
39To speed up the repeated lookup of records, specially when iterating 39To speed up the repeated lookup of records, especially while iterating
40over the OPimRecordList we've a cache in the Frontend which is filled 40over the OPimRecordList, a caching mechanism, located in the frontend, is filled
41by the Backend and specially in the iterator case the Backend 41by the backend automatically.
42can do a read ahead to fill the cache.
43 42
44\subsection{Backend vs. Frontend} 43\subsection{Backend vs. Frontend}
45The Frontend is meant to be used by the normal API user to access 44The frontend is meant to be used by the user API to access
46and query the Records and to save it with different Backend to 45and query the Records. \comment{ Ist hier irrelevant und verwirrt: and to save it with different backend to
47a different file if needed. 46a different file if needed}.
48The Backend is used to implement concrete storage such as XML, VCF 47The backend is used to implement the real storage, such as XML, VCF
49and SQL and exploit possible features of the chosen storage. For example 48and SQL and exploit \comment{exploit?} special features of the chosen storage. For example
50a SQL Backend can use the power of query, lookup, sorting of the database 49a SQL backend can use the power of query, lookup, sorting of the database
51and do true delayed loading of records whereas the XML resource on 50and do true delayed loading of records whereas the XML resource on
52a simple file-system normally can't (XMLLiveConnect on ReiserFS). On remote 51a simple file-system normally can't (XMLLiveConnect on ReiserFS\comment{???}).
53Backends such as LDAP one might want to use delayed initialisation and 52On remote backends, such as LDAP, one might want to use delayed initialisation and
54fetching of records as well. Due the clean separation of Frontend and Backend 53fetching of records as well. Due to the clean separation of frontend and backend,
55this is possible but the ease of development and deployment 54it is possible to use the power of the used databases, but still keep the ease of development
56of both Backends and Frontend remain. 55and deployment.
57 56
58\subsection{Occurrences} 57\subsection{Occurrences}
59A Frontend/Backend can be queried to include OPimRecords for a 58A frontend/backend can be queried to provide OPimRecords which occur in a
60period of time. Traditionally this only applies to Events but 59period of time. Traditionally this only applies to Calendar-Events, but
61with the Opie1.2 revision of PIM this can also be applied to 60due to the the revision of Opie (release 1.2), this can also be applied to
62Todo, Address and Notes. 61Todo, Address and Notes, as well.
63It behaves similar to OPimRecordList and supports the delayed 62OPimOccurence behaves similar to OPimRecordList and supports the delayed
64loading of Records. 63loading of Records as described above.
65 64
66%TODO implement it.... :} 65%TODO implement it.... :}