From a0520b8e1012bec8a2f2e7fe1d15e6fd1d38f0b0 Mon Sep 17 00:00:00 2001
From: zecke <zecke>
Date: Fri, 20 Aug 2004 19:49:57 +0000
Subject: First Draft of Opie PIM Paper

Giving an Overview and Reference for the used Attributes  of
the Backends
---
(limited to 'development/pim/pimpaper/backendimplementation.tex')

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}
+
--
cgit v0.9.0.2
