Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / FileProperties / Permission.cs @ 21141c06

History | View | Annotate | Download (3.7 kB)

1
#region
2
/* -----------------------------------------------------------------------
3
 * <copyright file="Permission.cs" company="GRNet">
4
 * 
5
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or
8
 * without modification, are permitted provided that the following
9
 * conditions are met:
10
 *
11
 *   1. Redistributions of source code must retain the above
12
 *      copyright notice, this list of conditions and the following
13
 *      disclaimer.
14
 *
15
 *   2. Redistributions in binary form must reproduce the above
16
 *      copyright notice, this list of conditions and the following
17
 *      disclaimer in the documentation and/or other materials
18
 *      provided with the distribution.
19
 *
20
 *
21
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
 * POSSIBILITY OF SUCH DAMAGE.
33
 *
34
 * The views and conclusions contained in the software and
35
 * documentation are those of the authors and should not be
36
 * interpreted as representing official policies, either expressed
37
 * or implied, of GRNET S.A.
38
 * </copyright>
39
 * -----------------------------------------------------------------------
40
 */
41
#endregion
42

    
43
using System;
44
using Caliburn.Micro;
45

    
46
namespace Pithos.Client.WPF
47
{
48
    public class Permission:PropertyChangedBase
49
    {
50
        private string _userName;
51
        public string UserName
52
        {
53
            get { return _userName; }
54
            set
55
            {
56
                _userName = value;
57
                NotifyOfPropertyChange(()=>UserName);
58
            }
59
        }
60

    
61
        private bool _read=true;
62
        public bool Read
63
        {
64
            get { return _read; }
65
            set
66
            {
67
                _read = value;                
68
                _write = !value;
69
                NotifyOfPropertyChange(() => Write);
70
                NotifyOfPropertyChange(() => Read);
71
                NotifyOfPropertyChange(() => Value);
72
            }
73
        }
74

    
75
        private bool _write;
76

    
77
        public bool Write
78
        {
79
            get { return _write; }
80
            set
81
            {
82
                _write = value;
83
                _read = !value;
84
                NotifyOfPropertyChange(()=>Write);
85
                NotifyOfPropertyChange(() => Read);
86
                NotifyOfPropertyChange(() => Value);
87
            }
88
        }
89

    
90
        public Permission(string userName, string permission)
91
        {
92
            UserName = userName;
93
            var trimmed = permission.Trim();
94
            Read = "read".Equals(trimmed,StringComparison.InvariantCultureIgnoreCase);
95
            Write = "write".Equals(trimmed, StringComparison.InvariantCultureIgnoreCase);
96
            //Value = permission;
97
        }
98

    
99
        
100
        public string Value
101
        {
102
            get
103
            {
104
                if (Write)
105
                    return "write";
106
                if (Read)
107
                    return "read";
108
                return null;
109
            }
110
            
111
        }
112

    
113
        public Permission()
114
        {
115
            
116
        }
117

    
118
        public Permission Clone()
119
        {
120
            return new Permission {UserName = UserName, Read = Read};
121
        }
122
    }
123
}