[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/sharedkraft/src
From:       Klaas Freitag <freitag () suse ! de>
Date:       2011-02-03 15:41:11
Message-ID: 20110203154111.C2FDD3E1F5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1218653 by freitag:

Mostly documenting the numbercycle download process

 M  +34 -2     kraftdoc.cpp  


--- branches/work/sharedkraft/src/kraftdoc.cpp #1218652:1218653
@@ -248,6 +248,32 @@
 // Called in sharedKraft mode, when the kitoc object received the answer from the
 // owncloud and parsed it. This one must generate the ident and save it to the
 // file.
+/*
+   The secure handling of the cloud Ids is:
+   1. Without having a kitoc id, the document is saved under a local tuple id
+      which is supposed to be unique locally, ie. the username and DB unique id.
+   2. If the new Id arrives, the file is updated by writing to temp file (ie.
+      filename.newxml)
+      * delete the index database entry
+      *  move the file to the right filename
+      * create the db index entry with the right modified time of the file
+   3. The file has a new modified time than. The index algorithm has to realise
+      that on krafts startup and updates the index in the database.
+
+   Error cases:
+   a) Documents have no Kitoc doc id - they are only local
+      - ask the server for an id for the user-localID tuple. Either the user
+        generates it for the localID or resends a previously generated.
+   b) there are new-files (filename.newxml) That means that the moving has not
+      happened.
+      - Ask the kitoc server again for the number and redo.
+      - the modified time of a file is different from the one in the index table.
+        Regenerate the index.
+   c) there is no index entry in the database for a file or the modified time is
+      wrong
+      - regenerate the index.
+*/
+
 void KraftDoc::slotReceivedId()
 {
   int nextId = mKitoc->nextId();
@@ -258,14 +284,20 @@
   QString oldIdent = ident();
   setIdent( id );
 
-  // save again.
+  // save again, using the updated id.
+  bool result = false;
   DocumentSaverBase *saver = getSaver();
   if( saver ) {
-    bool result = saver->saveDocument( this );
+    result = saver->saveDocument( this );
   } else {
     kDebug() << "ERR: could not get a saver";
   }
 
+  if( result )  {
+    // the new file was created, remove the old one.
+
+  }
+
   // update the index again
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic