public IReplicationFolderMetadata GetReplicationFolder(IFolderMetadata folder, IStorageMetadata storage) { if (folder == null) { throw new ArgumentNullException("folder"); } if (storage == null) { throw new ArgumentNullException("storage"); } string condition = string.Format("[StorageID] = {0} AND [FolderID] = {1}", storage.ID, folder.ID); IReplicationFolderMetadata result = null; DBCollection <ReplicationFolderMetadata> replicationFolders = this.ReplicationFolderAdapter.GetReplicationFolders(condition); if (replicationFolders != null && replicationFolders.Count > 0) { result = replicationFolders[0]; } return(result); }
public void SaveReplicationFolder(IReplicationFolderMetadata replicationFolder) { if (replicationFolder == null) { throw new ArgumentNullException("replicationFolder"); } ReplicationFolderMetadata typedReplicationFolder = (ReplicationFolderMetadata)replicationFolder; this.ReplicationFolderAdapter.UpdateReplicationFolder(typedReplicationFolder); }
/// <summary> /// Возвращает метаданные папки репликации. Если ее не существует, то создает ее. /// </summary> /// <param name="folder">Папка.</param> /// <param name="sourceStorage">Узел источник для репликации.</param> /// <returns></returns> public IReplicationFolderMetadata EnsureReplicationFolder(IFolderMetadata folder, IStorageMetadata sourceStorage) { if (folder == null) { throw new ArgumentNullException("folder"); } if (sourceStorage == null) { throw new ArgumentNullException("sourceStorage"); } IReplicationFolderMetadata replicationFolder = this.GetReplicationFolder(folder, sourceStorage); if (replicationFolder == null) { replicationFolder = new ReplicationFolderMetadata(folder, sourceStorage); this.SaveReplicationFolder(replicationFolder); } return(replicationFolder); }
private ReplicationFolder EnsureReplicationFolder(StorageNode sourceNode, string folderUrl, bool isCurrentSettings, out bool justCreated) { if (sourceNode == null) { throw new ArgumentNullException("sourceNode"); } if (string.IsNullOrEmpty(folderUrl)) { throw new ArgumentNullException("folderUrl"); } justCreated = false; ReplicationFolder replicationFolder = this.GetReplicationFolder(sourceNode.UniqueID, folderUrl); if (replicationFolder == null) { lock (_ensureReplicationFolderLocker) { replicationFolder = this.GetReplicationFolder(sourceNode.UniqueID, folderUrl); if (replicationFolder == null) { Folder folder = this.Engine.EnsureFolderInternal(folderUrl); IReplicationFolderMetadata replicationFolderMetadata = this.Engine.MetadataAdapter.CreateReplicationFolder(folder.Metadata, sourceNode.Metadata); replicationFolderMetadata.IsCurrentNodeSettings = isCurrentSettings; this.Engine.MetadataAdapter.SaveReplicationFolder(replicationFolderMetadata); replicationFolder = new ReplicationFolder(this.Engine, folder, sourceNode, replicationFolderMetadata); this.AddReplicationFolder(replicationFolder); } } } return(replicationFolder); }
public ReplicationFolder(StorageEngine storage, Folder folder, IStorageNode node, IReplicationFolderMetadata metadata) { if (storage == null) { throw new ArgumentNullException("storage"); } if (folder == null) { throw new ArgumentNullException("folder"); } if (node == null) { throw new ArgumentNullException("node"); } if (metadata == null) { throw new ArgumentNullException("metadata"); } this.TypedStorage = storage; this.TypedFolder = folder; this.Metadata = metadata; this.SourceStorage = node; }