当前位置: 首页>>代码示例>>C#>>正文


C# IDocument.DeleteAllVersions方法代码示例

本文整理汇总了C#中IDocument.DeleteAllVersions方法的典型用法代码示例。如果您正苦于以下问题:C# IDocument.DeleteAllVersions方法的具体用法?C# IDocument.DeleteAllVersions怎么用?C# IDocument.DeleteAllVersions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IDocument的用法示例。


在下文中一共展示了IDocument.DeleteAllVersions方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CrawlRemoteDocument


//.........这里部分代码省略.........
                    var paths = remoteDocument.Paths;
                    var pathsCount = paths.Count;
                    var syncItem = database.GetSyncItemFromRemotePath(remoteDocument.Paths[0]);
                    if (null == syncItem)
                    {
                        syncItem = SyncItemFactory.CreateFromRemotePath(remoteDocument.Paths[0], repoinfo);
                    }

                    if (syncItem.ExistsLocal())
                    {
                        // Check modification date stored in database and download if remote modification date if different.
                        DateTime? serverSideModificationDate = ((DateTime)remoteDocument.LastModificationDate).ToUniversalTime();
                        DateTime? lastDatabaseUpdate = database.GetServerSideModificationDate(syncItem);

                        if (lastDatabaseUpdate == null)
                        {
                            Logger.Info("Downloading file absent from database: " + syncItem.LocalPath);
                            activityListener.ActivityStarted();
                            DownloadFile(remoteDocument, localFolder);
                            activityListener.ActivityStopped();
                        }
                        else
                        {
                            // If the file has been modified since last time we downloaded it, then download again.
                            if (serverSideModificationDate > lastDatabaseUpdate)
                            {
                                activityListener.ActivityStarted();

                                if (database.LocalFileHasChanged(syncItem.LocalPath))
                                {
                                    Logger.Info("Conflict with file: " + remoteDocumentFileName + ", backing up locally modified version and downloading server version");
                                    Logger.Info("- serverSideModificationDate: " + serverSideModificationDate);
                                    Logger.Info("- lastDatabaseUpdate: " + lastDatabaseUpdate);
                                    Logger.Info("- Checksum in database: " + database.GetChecksum(syncItem.LocalPath));
                                    Logger.Info("- Checksum of local file: " + Database.Database.Checksum(syncItem.LocalPath));

                                    // Rename locally modified file.
                                    String newFilePath = Utils.CreateConflictFilename(syncItem.LocalPath, repoinfo.User);
                                    File.Move(syncItem.LocalPath, newFilePath);

                                    // Download server version
                                    DownloadFile(remoteDocument, localFolder);
                                    Logger.Info("- Checksum of remote file: " + Database.Database.Checksum(syncItem.LocalPath));
                                    repo.OnConflictResolved();

                                    // Notify the user.
                                    string lastModifiedBy = CmisUtils.GetProperty(remoteDocument, "cmis:lastModifiedBy");
                                    string message = String.Format(
                                        // Properties_Resources.ResourceManager.GetString("ModifiedSame", CultureInfo.CurrentCulture),
                                        "User {0} modified file \"{1}\" at the same time as you.",
                                        lastModifiedBy, syncItem.LocalPath)
                                        + "\n\n"
                                        // + Properties_Resources.ResourceManager.GetString("YourVersion", CultureInfo.CurrentCulture);
                                        + "Your version has been saved as \"" + newFilePath + "\", please merge your important changes from it and then delete it.";
                                    Logger.Info(message);
                                    Utils.NotifyUser(message);
                                }
                                else
                                {
                                    Logger.Info("Downloading modified file: " + remoteDocumentFileName);
                                    DownloadFile(remoteDocument, localFolder);
                                }

                                activityListener.ActivityStopped();
                            }
                        }
                    }
                    else
                    {
                        if (database.ContainsFile(syncItem))
                        {
                            if (!(bool)remoteDocument.IsVersionSeriesCheckedOut)
                            {
                                // File has been recently removed locally, so remove it from server too.
                                activityListener.ActivityStarted();
                                Logger.Info("Removing locally deleted file on server: " + syncItem.RemotePath);
                                remoteDocument.DeleteAllVersions();
                                // Remove it from database.
                                database.RemoveFile(syncItem);
                                activityListener.ActivityStopped();
                            }
                            else
                            {
                                string message = String.Format("File {0} is checked out on the server by another user: {1}", syncItem.LocalPath, remoteDocument.CheckinComment);
                                // throw new IOException("File is checked out on the server");
                                Logger.Info(message);
                                Utils.NotifyUser(message);
                            }
                        }
                        else
                        {
                            // New remote file, download it.
                            Logger.Info("New remote file: " + syncItem.RemotePath);
                            activityListener.ActivityStarted();
                            DownloadFile(remoteDocument, localFolder);
                            activityListener.ActivityStopped();
                        }
                    }
                }
            }
开发者ID:jelacote,项目名称:CmisSync,代码行数:101,代码来源:CrawlStrategy.cs

示例2: SyncDownloadFile

            /// <summary>
            /// Download a single file from the CMIS server for sync.
            /// </summary>
            /// <returns>true if successful</returns>
            private bool SyncDownloadFile(IDocument remoteDocument, string localFolder, IList<string> remoteFiles = null)
            {
                string remotePath = remoteDocument.Paths[0];
                var syncItem = database.GetSyncItemFromRemotePath(remotePath);
                if (null == syncItem)
                {
                    syncItem = SyncItemFactory.CreateFromRemotePath(remotePath, repoinfo);
                    // syncItem = SyncItemFactory.CreateFromLocalFolderAndRemoteName(localFolder, remoteDocument.Name, repoinfo);
                }
                //var syncItem = SyncItemFactory.CreateFromRemotePath(localFolder, remoteDocument.Name);
                string fileName = remoteDocument.Name;
                string filePath = Path.Combine(localFolder, fileName);

                // If this file does not have a filename, ignore it.
                // It sometimes happen on IBM P8 CMIS server, not sure why.
                if (remoteDocument.ContentStreamFileName == null)
                {
                    //TODO Possibly the file content has been changed to 0, this case should be handled
                    Logger.Warn("Skipping download of '" + syncItem.RemoteFileName + "' with null content stream in " + localFolder);
                    return true;
                }

                if (null != remoteFiles)
                {
                    remoteFiles.Add(syncItem.RemoteFileName);
                }

                // Check if file extension is allowed
                if (!Utils.WorthSyncing(syncItem.RemoteFileName))
                {
                    Logger.Info("Ignore the unworth syncing remote file: " + syncItem.RemoteFileName);
                    return true;
                }

                bool success = true;

                try
                {
                    if (syncItem.ExistsLocal())
                    {
                        // Check modification date stored in database and download if remote modification date if different.
                        DateTime? serverSideModificationDate = ((DateTime)remoteDocument.LastModificationDate).ToUniversalTime();
                        DateTime? lastDatabaseUpdate = database.GetServerSideModificationDate(syncItem);

                        if (lastDatabaseUpdate == null)
                        {
                            Logger.Info("Downloading file absent from database: " + syncItem.LocalPath);
                            success = DownloadFile(remoteDocument, localFolder);
                        }
                        else
                        {
                            // If the file has been modified since last time we downloaded it, then download again.
                            if (serverSideModificationDate > lastDatabaseUpdate)
                            {
                                Logger.Info("Downloading modified file: " + syncItem.RemoteFileName);
                                success = DownloadFile(remoteDocument, localFolder);
                            }
                            else if (serverSideModificationDate == lastDatabaseUpdate)
                            {
                                // check chunked upload
                                FileInfo fileInfo = new FileInfo(syncItem.LocalPath);
                                if (remoteDocument.ContentStreamLength < fileInfo.Length)
                                {
                                    success = ResumeUploadFile(syncItem.LocalPath, remoteDocument);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (database.ContainsFile(syncItem))
                        {
                            long retries = database.GetOperationRetryCounter(syncItem.LocalPath, Database.Database.OperationType.DELETE);
                            if (retries <= repoinfo.MaxDeletionRetries)
                            {
                                // File has been recently removed locally, so remove it from server too.
                                Logger.Info("Removing locally deleted file on server: " + syncItem.LocalPath);  //?
                                try
                                {
                                    remoteDocument.DeleteAllVersions();
                                    // Remove it from database.
                                    database.RemoveFile(syncItem);
                                    database.SetOperationRetryCounter(syncItem, 0, Database.Database.OperationType.DELETE);
                                }
                                catch (CmisBaseException ex)
                                {
                                    Logger.Warn("Could not delete remote file: ", ex);
                                    database.SetOperationRetryCounter(syncItem, retries + 1, Database.Database.OperationType.DELETE);
                                    throw;
                                }
                            }
                            else
                            {
                                Logger.Info(String.Format("Skipped deletion of remote file {0} because of too many failed retries ({1} max={2})", syncItem.RemotePath, retries, repoinfo.MaxDeletionRetries));  // ???
                            }
                        }
//.........这里部分代码省略.........
开发者ID:jelacote,项目名称:CmisSync,代码行数:101,代码来源:SynchronizedFolder.cs

示例3: CrawlRemoteDocument

            /// <summary>
            /// Crawl remote document, syncing down if needed.
            /// Meanwhile, cache remoteFiles, they are output parameters that are used in CrawlLocalFiles/CrawlLocalFolders
            /// </summary>
            private void CrawlRemoteDocument(IDocument remoteDocument, string localFolder, IList remoteFiles)
            {
                sleepWhileSuspended();

                try
                {
                    if (Utils.WorthSyncing(localFolder, remoteDocument.Name, repoinfo))
                    {
                        // We use the filename of the document's content stream.
                        // This can be different from the name of the document.
                        // For instance in FileNet it is not usual to have a document where
                        // document.Name is "foo" and document.ContentStreamFileName is "foo.jpg".
                        string remoteDocumentFileName = remoteDocument.ContentStreamFileName;
                        //Logger.Debug("CrawlRemote doc: " + localFolder + Path.DirectorySeparatorChar.ToString() + remoteDocumentFileName);

                        // If this file does not have a filename, ignore it.
                        // It sometimes happen on IBM P8 CMIS server, not sure why.
                        if (remoteDocumentFileName == null)
                        {
                            Logger.Warn("Skipping download of '" + remoteDocument.Name + "' with null content stream in " + localFolder);
                            return;
                        }

                        remoteFiles.Add(remoteDocumentFileName);

                        string filePath = Path.Combine(localFolder, remoteDocumentFileName);

                        if (File.Exists(filePath))
                        {
                            // Check modification date stored in database and download if remote modification date if different.
                            DateTime? serverSideModificationDate = ((DateTime)remoteDocument.LastModificationDate).ToUniversalTime();
                            DateTime? lastDatabaseUpdate = database.GetServerSideModificationDate(filePath);

                            if (lastDatabaseUpdate == null)
                            {
                                Logger.Info("Downloading file absent from database: " + filePath);
                                DownloadFile(remoteDocument, localFolder);
                            }
                            else
                            {
                                // If the file has been modified since last time we downloaded it, then download again.
                                if (serverSideModificationDate > lastDatabaseUpdate)
                                {
                                    if (database.LocalFileHasChanged(filePath))
                                    {
                                        Logger.Info("Conflict with file: " + remoteDocumentFileName + ", backing up locally modified version and downloading server version");
                                        // Rename locally modified file.
                                        String newFilePath = Utils.ConflictPath(filePath);
                                        File.Move(filePath, newFilePath);

                                        // Download server version
                                        DownloadFile(remoteDocument, localFolder);
                                        repo.OnConflictResolved();

                                        // TODO move to OS-dependant layer
                                        //System.Windows.Forms.MessageBox.Show("Someone modified a file at the same time as you: " + filePath
                                        //    + "\n\nYour version has been saved with a '_your-version' suffix, please merge your important changes from it and then delete it.");
                                        // TODO show CMIS property lastModifiedBy
                                    }
                                    else
                                    {
                                        Logger.Info("Downloading modified file: " + remoteDocumentFileName);
                                        DownloadFile(remoteDocument, localFolder);
                                    }
                                }

                            }
                        }
                        else
                        {
                            if (database.ContainsFile(filePath))
                            {
                                // File has been recently removed locally, so remove it from server too.
                                Logger.Info("Removing locally deleted file on server: " + filePath);
                                remoteDocument.DeleteAllVersions();
                                // Remove it from database.
                                database.RemoveFile(filePath);
                            }
                            else
                            {
                                // New remote file, download it.
                                Logger.Info("New remote file: " + filePath);
                                DownloadFile(remoteDocument, localFolder);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    ProcessRecoverableException("Could not crawl sync remote document: " + remoteDocument.Name, e);
                }
            }
开发者ID:keithwharrison,项目名称:Oris4Sync,代码行数:96,代码来源:CrawlStrategy.cs

示例4: DeleteRemoteDocument

            public void DeleteRemoteDocument(IDocument document, SyncItem syncItem)
            {
                string message0 = "CmisSync Warning: You have deleted file " + syncItem.LocalPath + "\nCmisSync will now delete it from the server. If you actually did not delete this file, please report a bug at [email protected]";
                Logger.Info(message0);
                //Utils.NotifyUser(message0);

                if (document.IsVersionSeriesCheckedOut != null
                    && (bool)document.IsVersionSeriesCheckedOut)
                {
                    string message = String.Format("File {0} is checked out on the server by another user: {1}", syncItem.LocalPath, document.CheckinComment);
                    Logger.Info(message);
                    Utils.NotifyUser(message);
                }
                else
                {
                    // File has been recently removed locally, so remove it from server too.

                    activityListener.ActivityStarted();
                    Logger.Info("Removing locally deleted file on server: " + syncItem.RemotePath);
                    document.DeleteAllVersions();
                    // Remove it from database.
                    database.RemoveFile(syncItem);
                    activityListener.ActivityStopped();
                }
            }
开发者ID:aegif,项目名称:ASaasDriveClient,代码行数:25,代码来源:SynchronizedFolder.cs

示例5: DeleteRemoteDocument

            public void DeleteRemoteDocument(IDocument remoteDocument, SyncItem syncItem)
            {


               string message0 = "CmisSync Warning: You have deleted file " + syncItem.LocalPath +
                                "\nCmisSync will now delete it from the server. If you actually did not delete this file, please report a bug at [email protected]";
                Logger.Info(message0);
                //Utils.NotifyUser(message0);

                if (remoteDocument.IsVersionSeriesCheckedOut != null
                    && (bool)remoteDocument.IsVersionSeriesCheckedOut
                    && remoteDocument.VersionSeriesCheckedOutBy != null
                    && !remoteDocument.VersionSeriesCheckedOutBy.Equals(repoInfo.User))
                {
                    string message = String.Format("Restoring file \"{0}\" because it is checked out on the server by another user: {1}",
                        syncItem.LocalPath, remoteDocument.VersionSeriesCheckedOutBy);
                    Logger.Info(message);
                    Utils.NotifyUser(message);

                    // Restore the deleted file
                    activityListener.ActivityStarted();
                    DownloadFile(remoteDocument, syncItem.RemotePath, Path.GetDirectoryName(syncItem.LocalPath));
                    activityListener.ActivityStopped();
                }
                else
                {
                    // File has been recently removed locally, so remove it from server too.

                    activityListener.ActivityStarted();
                    Logger.Info("Removing locally deleted file on server: " + syncItem.RemotePath);
                    remoteDocument.DeleteAllVersions();
                    // Remove it from database.
                    database.RemoveFile(syncItem);
                    activityListener.ActivityStopped();
                }
            }
开发者ID:aegif,项目名称:CmisSync,代码行数:36,代码来源:SynchronizedFolder.cs

示例6: CrawlRemoteDocument

        /// <summary>
        /// Crawl remote document, syncing down if needed.
        /// Meanwhile, cache remoteFiles, they are output parameters that are used in CrawlLocalFiles/CrawlLocalFolders
        /// </summary>
        private void CrawlRemoteDocument(IDocument remoteDocument, string localFolder, IList<string> remoteFiles)
        {
            CheckPendingCancelation();

            if (SyncUtils.IsWorthSyncing(localFolder, remoteDocument.Name, SyncFolderInfo))
            {
                // We use the filename of the document's content stream.
                // This can be different from the name of the document.
                // For instance in FileNet it is not unusual to have a document where
                // document.Name is "foo" and document.ContentStreamFileName is "foo.jpg".
                string remoteDocumentFileName = remoteDocument.ContentStreamFileName;
                //Logger.Debug("CrawlRemote doc: " + localFolder + CmisPath.CMIS_FILE_SEPARATOR + remoteDocumentFileName);

                // If this file does not have a filename, ignore it.
                // It sometimes happen on IBM P8 CMIS server, not sure why.
                if (remoteDocumentFileName == null)
                {
                    Logger.Warn("Skipping download of '" + remoteDocument.Name + "' with null content stream in " + localFolder);
                    return;
                }

                remoteFiles.Add(remoteDocumentFileName);

                var paths = remoteDocument.Paths;
                var pathsCount = paths.Count;
                SyncItem syncItem = getSyncItemFromRemotePath(remoteDocument.Paths[0]);

                if (syncItem.ExistsLocal())
                {
                    // Check modification date stored in database and download if remote modification date if different.
                    DateTime? serverSideModificationDate = getUtcLastModificationDate(remoteDocument);
                    DateTime? lastDatabaseUpdate = database.GetServerSideModificationDate(syncItem);

                    if (lastDatabaseUpdate == null)
                    {
                        Logger.Info("Downloading file absent from database: " + syncItem.LocalPath);

                        DownloadFile(remoteDocument, localFolder);

                    }
                    else
                    {
                        // If the file has been modified since last time we downloaded it, then download again.
                        if (serverSideModificationDate > lastDatabaseUpdate)
                        {
                            if (database.LocalFileHasChanged(syncItem.LocalPath))
                            {
                                Logger.Info("Conflict with file: " + remoteDocumentFileName + ", backing up locally modified version and downloading server version");
                                Logger.Info("- serverSideModificationDate: " + serverSideModificationDate);
                                Logger.Info("- lastDatabaseUpdate: " + lastDatabaseUpdate);
                                Logger.Info("- Checksum in database: " + database.GetChecksum(syncItem.LocalPath));
                                Logger.Info("- Checksum of local file: " + Database.Database.Checksum(syncItem.LocalPath));

                                // Rename locally modified file.
                                String newFilePath = SyncUtils.CreateConflictFilename(syncItem.LocalPath, SyncFolderInfo.Account.Credentials.UserName);
                                File.Move(syncItem.LocalPath, newFilePath);

                                // Download server version
                                DownloadFile(remoteDocument, localFolder);
                                Logger.Info("- Checksum of remote file: " + Database.Database.Checksum(syncItem.LocalPath));

                                // Notify the user.
                                string lastModifiedBy = CmisUtils.GetProperty(remoteDocument, "cmis:lastModifiedBy");
                                HandleException(new FileConflictException(syncItem.LocalPath, lastModifiedBy, newFilePath));
                            }
                            else
                            {
                                Logger.Info("Downloading modified file: " + remoteDocumentFileName);
                                DownloadFile(remoteDocument, localFolder);
                            }

                        }
                    }
                }
                else
                {
                    if (database.ContainsFile(syncItem))
                    {
                        if (!(bool)remoteDocument.IsVersionSeriesCheckedOut)
                        {
                            // File has been recently removed locally, so remove it from server too.
                            Logger.Info("Removing locally deleted file on server: " + syncItem.RemotePath);
                            remoteDocument.DeleteAllVersions();
                            // Remove it from database.
                            database.RemoveFile(syncItem);
                        }
                        else
                        {
                            HandleException(new CheckOutFileException(syncItem.LocalPath, remoteDocument.CheckinComment));
                        }
                    }
                    else
                    {
                        // New remote file, download it.
                        Logger.Info("New remote file: " + syncItem.RemotePath);

//.........这里部分代码省略.........
开发者ID:lelmarir,项目名称:CmisSync,代码行数:101,代码来源:SyncFolderSyncronizer_CrawlStrategy.cs


注:本文中的IDocument.DeleteAllVersions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。