- private void commitToDatabase(TreeNode root, String parentId) throws RemoteException {\r
- for (TreeNode n : root.getChildList()) {\r
- Log.d(TAG, n.toString());\r
- ContentValues cv = new ContentValues();\r
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, n.getProperty(NodeProperty.CONTENT_LENGTH));\r
- cv.put(ProviderTableMeta.FILE_MODIFIED, n.getProperty(NodeProperty.LAST_MODIFIED_DATE));\r
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, n.getProperty(NodeProperty.RESOURCE_TYPE));\r
- cv.put(ProviderTableMeta.FILE_PARENT, parentId);\r
+ PropFindMethod query;\r
+ try {\r
+ mCurrentSyncTime = System.currentTimeMillis();\r
+ query = new PropFindMethod(getUri().toString() + "/");\r
+ getClient().executeMethod(query);\r
+ MultiStatus resp = null;\r
+ resp = query.getResponseBodyAsMultiStatus();\r
+\r
+ if (resp.getResponses().length > 0) {\r
+ WebdavEntry we = new WebdavEntry(resp.getResponses()[0], getUri().getPath());\r
+ OCFile file = fillOCFile(we);\r
+ file.setParentId(0);\r
+ getStorageManager().saveFile(file);\r
+ fetchData(getUri().toString(), syncResult, file.getFileId());\r
+ }\r
+ } catch (OperationCanceledException e) {\r
+ e.printStackTrace();\r
+ } catch (AuthenticatorException e) {\r
+ syncResult.stats.numAuthExceptions++;\r
+ e.printStackTrace();\r
+ } catch (IOException e) {\r
+ syncResult.stats.numIoExceptions++;\r
+ e.printStackTrace();\r
+ } catch (DavException e) {\r
+ syncResult.stats.numIoExceptions++;\r
+ e.printStackTrace();\r
+ }\r
+ i.putExtra(FileSyncService.IN_PROGRESS, false);\r
+ getContext().sendStickyBroadcast(i);\r
+ }\r
+\r
+ private void fetchData(String uri, SyncResult syncResult, long parentId) {\r
+ try {\r
+ PropFindMethod query = new PropFindMethod(uri);\r
+ getClient().executeMethod(query);\r
+ MultiStatus resp = null;\r
+ resp = query.getResponseBodyAsMultiStatus();\r
+ for (int i = 1; i < resp.getResponses().length; ++i) {\r
+ WebdavEntry we = new WebdavEntry(resp.getResponses()[i], getUri().getPath());\r
+ OCFile file = fillOCFile(we);\r
+ file.setParentId(parentId);\r
+ getStorageManager().saveFile(file);\r
+ if (parentId == 0)\r
+ parentId = file.getFileId();\r
+ if (we.contentType().equals("DIR"))\r
+ fetchData(getUri().toString() + we.path(), syncResult, file.getFileId());\r
+ }\r
+ Vector<OCFile> files = getStorageManager().getDirectoryContent(\r
+ getStorageManager().getFileById(parentId));\r
+ for (OCFile file : files) {\r
+ if (file.getLastSyncDate() != mCurrentSyncTime && file.getLastSyncDate() != 0)\r
+ getStorageManager().removeFile(file);\r
+ }\r
+ } catch (OperationCanceledException e) {\r
+ e.printStackTrace();\r
+ } catch (AuthenticatorException e) {\r
+ syncResult.stats.numAuthExceptions++;\r
+ e.printStackTrace();\r
+ } catch (IOException e) {\r
+ syncResult.stats.numIoExceptions++;\r
+ e.printStackTrace();\r
+ } catch (DavException e) {\r
+ syncResult.stats.numIoExceptions++;\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ private OCFile fillOCFile(WebdavEntry we) {\r
+ OCFile file = new OCFile(URLDecoder.decode(we.path()));\r
+ file.setCreationTimestamp(we.createTimestamp());\r
+ file.setFileLength(we.contentLength());\r
+ file.setMimetype(we.contentType());\r
+ file.setModificationTimestamp(we.modifiedTimesamp());\r
+ file.setLastSyncDate(mCurrentSyncTime);\r
+ return file;\r
+ }\r