예제 #1
0
        public bool DeleteDisk(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            var disks = Persistence.Disks(userDto);
            if (disks == null) return false;
            return Persistence.RemoveDisk(diskDto);
        }
예제 #2
0
        public SynchronizationState FetchSynchronizationState(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            var serverDisk = Persistence.FindDisk(diskDto);

            var localChanges = diskDto.LastServerVersion < diskDto.LocalVersion;
            var serverChanges = diskDto.LastServerVersion < serverDisk.LocalVersion;

            if (localChanges) return serverChanges ? SynchronizationState.Conflicted : SynchronizationState.LocalChanges;
            return serverChanges ? SynchronizationState.RemoteChanges : SynchronizationState.UpToDate;
        }
예제 #3
0
        public DiskDto CreateDisk(UserDto userDto, DiskOptionsDto optionsDto)
        {
            if (userDto == null) throw new ArgumentNullException("userDto");
            if (optionsDto == null) throw new ArgumentNullException("optionsDto");

            var disk = new DiskDto { UserId = userDto.Id };
            _db.Insert(disk);

            optionsDto.DiskId = disk.Id;
            _db.Insert(optionsDto);

            return disk;
        }
예제 #4
0
        private PersistenceImpl GetPersistenceWithData()
        {
            var p = _testHelper.GetPersistence();

            var user = p.CreateUser(_userDto.Login, _userDto.HashedPassword);
            _userDto.Id = user.Id;

            _disk = p.CreateDisk(_userDto, _diskOptions);

            return p;
        }
예제 #5
0
        public DiskOptionsDto GetDiskOptions(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            return Persistence.LoadDiskOptions(diskDto.Id);
        }
예제 #6
0
 private void Authenticate(UserDto userDto, DiskDto diskDto)
 {
     var disk = Persistence.Disk(diskDto);
     diskDto.UserId = disk.UserId;
     if (diskDto.UserId != userDto.Id) ErrorOccured(string.Format("You don't have access to the disk {0}", diskDto.Id));
 }
예제 #7
0
        public void UpdateDisk(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            Persistence.UpdateDisk(diskDto);
        }
예제 #8
0
        public void SetDiskOptions(UserDto userDto, DiskDto diskDto, DiskOptionsDto optionsDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            Persistence.SaveDiskOptions(diskDto.Id, optionsDto);
        }
예제 #9
0
        public DiskDto Disk(DiskDto diskDto)
        {
            if (diskDto == null) throw new ArgumentNullException("diskDto");

            return _db.Find<DiskDto>(diskDto.Id);
        }
예제 #10
0
        public void UpdateDisk(DiskDto diskDto)
        {
            if (diskDto == null) throw new ArgumentNullException("diskDto");

            _db.Update(diskDto);
        }
예제 #11
0
        public bool RemoveDisk(DiskDto diskDto)
        {
            if (diskDto == null) throw new ArgumentNullException("diskDto");

            if (FindDisk(diskDto) == null) return false;

            _db.Delete<DiskDto>(diskDto.Id);
            return true;
        }
예제 #12
0
        public DiskDto FindDisk(DiskDto remoteDiskDto)
        {
            if (remoteDiskDto == null) throw new ArgumentNullException("remoteDiskDto");

            return _db.Find<DiskDto>(remoteDiskDto.Id);
        }
예제 #13
0
        public void TestSynchronizationStateRemoteChanges()
        {
            using (var persistence = GetPersistence())
            {
                var user = persistence.CreateUser(_userDto.Login, _userDto.HashedPassword);

                var disk = persistence.CreateDisk(user, new DiskOptionsDto());
                disk.LocalVersion = 10;
                disk.LastServerVersion = 10;
                persistence.UpdateDisk(disk);

                var s = new DiskServiceImpl(persistence);

                var clonedDisk = new DiskDto { LastServerVersion = 9, LocalVersion = 9, UserId = user.Id, Id = disk.Id };
                Assert.AreEqual(SynchronizationState.RemoteChanges, s.FetchSynchronizationState(user, clonedDisk));
            }
        }
예제 #14
0
 public void TestDisks()
 {
     using (var persistence = GetPersistenceWithUser())
     {
         var disk = new DiskDto { UserId = _userDto.Id, Id = 1 };
         persistence.CreateDisk(_userDto, new DiskOptionsDto());
         var s = new DiskServiceImpl(persistence);
         Assert.AreEqual(1, s.Disks(_userDto).Count);
         Assert.AreEqual(disk.Id, s.Disks(_userDto).First().Id);
     }
 }