summaryrefslogtreecommitdiff
path: root/development/pim/pimpaper/backendimplementation.tex
Side-by-side diff
Diffstat (limited to 'development/pim/pimpaper/backendimplementation.tex') (more/less context) (show whitespace changes)
-rw-r--r--development/pim/pimpaper/backendimplementation.tex103
1 files changed, 103 insertions, 0 deletions
diff --git a/development/pim/pimpaper/backendimplementation.tex b/development/pim/pimpaper/backendimplementation.tex
new file mode 100644
index 0000000..272507a
--- a/dev/null
+++ b/development/pim/pimpaper/backendimplementation.tex
@@ -0,0 +1,103 @@
+\section{Implementation of the Backends}
+Opie Backends have implementations for XML, VCF and SQL. We can
+group the VCF and XML Backend in the File Family.
+
+\section{Locking, Journal and Visibility}
+Opie PIM encourages that all changes are made visible
+immediately and are propagated by Qt Signals by the Frontend
+but we recognize that not every Backend
+- specially the File Family - is capable of making every
+change physically available instantly or it would be too
+complex to develop this is why this feature is nice to have
+but not necessary implement by the Backend.\\
+By default changes may not be lost by concurrent access and two different
+saves. The feature to implement is called Auto-Update the Backends
+can utilize QCOP for the communication. When one Backend saves the data
+it needs to lock the access (it can use API), check if external changes
+occurred and reload the data if necessary and then save the merged changes
+and finally to give up the lock.
+The user may call reload() any time and the access needs to be locked
+for that. The Backends can use the appropriate techniques to provide
+fast and secure operation.\\
+The reload feature may be turned off for the Frontend so that a save()
+might possible override changes that occurred.
+
+\subsubsection{Journal and Out Of Memory}
+The Backend need to make sure that it is capable of surviving crashes
+and storage out of memory situation without losing data and changes.\\
+The File Family is encouraged to use the journal on a per user basis
+to keep track of changes. The journal can be applied in case of a crash.\\
+In out of disk storage situation the user needs to be informed so it might
+free space.
+
+\subsubsection{Features of the Backends}
+
+\begin{center}
+\begin{tabular}{|l|l|l|l|l|}
+\hline
+Backend & Live Update & Auto Update & Journal & Available\\ \hline
+XML & no & yes & no but SQL & after save \\ \hline
+SQL & yes & yes & yes & immediately \\ \hline
+VCF & no & no & no & never \\ \hline
+\end{tabular}
+\label{Feature of Backends}
+\end{center}
+
+\subsection{Generic Implementation}
+\subsubsection{Recurrence}
+FIXME
+\subsubsection{OPimState}
+FIXME
+\subsubsection{Reminders and Alarms}
+
+\subsection{Todo}
+\subsubsection{XML}
+
+% supported attributes
+\begin{tabular}{|l|l|}
+\hline
+Key & Possible Values \\ \hline
+Categories & Comma separated list of Integers \\ \hline
+Uid & Unique negative Integer generated by timet \\ \hline
+HasDate & 0 for false and 1 for true \\ \hline
+Completed & 1 for completed and 0 for not completed \\ \hline
+Description & Escaped multi line Text \\ \hline
+Summary & One line summary \\ \hline
+Priority & Between 0 and 5, 5 high priority \\ \hline
+DateDay & The Day for the DueDate \\ \hline
+DateMonth & The Month for the DueDate \\ \hline
+DateYear & The year for the DueDate \\ \hline
+Progress & 0,10,20,30,40,50,60,70,80,90,100 \\ \hline
+CompleteDate & YYYYMMDD formated Date \\ \hline
+StartDate & YYYYMMDD formated Date \\ \hline
+CrossReference & TODO!! \\ \hline
+State & Relates to OPimState 0-4 arre current values \\ \hline
+Alarms & YYYYMMDD:durationOfTheAlarm:sound:future
+ multiple alarams are joined with ; \\ \hline
+Reminders & Notused TODO!!! \\ \hline
+rtype & Daily, Weekly, MonthlyDay, MonthlyDate, Yearly, None\\ \hline
+rweekdays & Char OPimReccruence::Days ored together \\ \hline
+rposition & The day in the week TODO\\ \hline
+rfreq & Every n (as int) \\ \hline
+start & The creation of the recurrence in UTC time\\ \hline
+rhasenddate & 1 if the recurrence has an end \\ \hline
+enddt & The end date of the recurrence from UTC time\\ \hline
+\end{tabular}
+
+\subsubsection{VCF}
+
+
+\subsubsection{SQL}
+
+
+\subsection{Contact}
+\subsubsection{XML}
+\subsubsection{VCF}
+\subsubsection{SQL}
+
+
+\subsection{Datebook}
+\subsubsection{XML}
+\subsubsection{VCF}
+\subsubsection{SQL}
+