Fix a few cases of mixed line-endings
[mono.git] / mcs / class / System.Messaging / System.Messaging / MessageQueueCriteria.cs
1 //\r
2 // System.Messaging\r
3 //\r
4 // Authors:\r
5 //      Peter Van Isacker (sclytrack@planetinternet.be)\r
6 //      Rafael Teixeira   (rafaelteixeirabr@hotmail.com)\r
7 //\r
8 // (C) 2003 Peter Van Isacker, Rafael Teixeira\r
9 //\r
10 \r
11 //\r
12 // Permission is hereby granted, free of charge, to any person obtaining\r
13 // a copy of this software and associated documentation files (the\r
14 // "Software"), to deal in the Software without restriction, including\r
15 // without limitation the rights to use, copy, modify, merge, publish,\r
16 // distribute, sublicense, and/or sell copies of the Software, and to\r
17 // permit persons to whom the Software is furnished to do so, subject to\r
18 // the following conditions:\r
19 // \r
20 // The above copyright notice and this permission notice shall be\r
21 // included in all copies or substantial portions of the Software.\r
22 // \r
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
30 //\r
31 using System;\r
32 \r
33 namespace System.Messaging \r
34 {\r
35         public class MessageQueueCriteria \r
36         {\r
37                 public MessageQueueCriteria()\r
38                 {\r
39                         ClearAll();\r
40                 }\r
41                 \r
42                 private bool setCategory;\r
43                 private Guid category;\r
44                 public Guid Category \r
45                 {\r
46                         get \r
47                         { \r
48                                 if (!setCategory) \r
49                                         throw new InvalidOperationException();\r
50                                 return category;\r
51                         }\r
52                         set \r
53                         { \r
54                                 category = value; \r
55                                 setCategory = true; \r
56                         }\r
57                 }\r
58                 \r
59                 private bool setCreatedAfter;\r
60                 private DateTime createdAfter;\r
61                 public DateTime CreatedAfter \r
62                 {\r
63                         get \r
64                         { \r
65                                 if (!setCreatedAfter) \r
66                                         throw new InvalidOperationException();\r
67                                 return createdAfter;\r
68                         }\r
69                         set \r
70                         { \r
71                                 createdAfter = value; \r
72                                 setCreatedAfter = true; \r
73                         }\r
74                 }\r
75                 \r
76                 private bool setCreatedBefore;\r
77                 private DateTime createdBefore;\r
78                 public DateTime CreatedBefore \r
79                 {\r
80                         get \r
81                         { \r
82                                 if (!setCreatedBefore) \r
83                                         throw new InvalidOperationException();\r
84                                 return createdBefore;\r
85                         }\r
86                         set \r
87                         { \r
88                                 createdBefore = value; \r
89                                 setCreatedBefore = true; \r
90                         }\r
91                 }\r
92                 \r
93                 private bool setLabel;\r
94                 private string label; \r
95                 public string Label \r
96                 {\r
97                         get \r
98                         { \r
99                                 if (!setLabel) \r
100                                         throw new InvalidOperationException();\r
101                                 return label;\r
102                         }\r
103                         set \r
104                         { \r
105                                 label = value; \r
106                                 setLabel = true; \r
107                         }\r
108                 }\r
109                 \r
110                 [MonoTODO]\r
111                 private bool invalidMachineName(string name)\r
112                 {\r
113                         return false;\r
114                 }\r
115                 \r
116                 private bool setMachineName;\r
117                 private string machineName; \r
118                 public string MachineName \r
119                 {\r
120                         get \r
121                         { \r
122                                 if (!setMachineName) \r
123                                         throw new InvalidOperationException();\r
124                                 return machineName;\r
125                         }\r
126                         set \r
127                         { \r
128                                 if (invalidMachineName(value)) \r
129                                         throw new InvalidOperationException();\r
130                                 machineName = value; \r
131                                 setMachineName = true; \r
132                         }\r
133                 }\r
134                 \r
135                 private bool setModifiedAfter;\r
136                 private DateTime modifiedAfter; \r
137                 public DateTime ModifiedAfter \r
138                 {\r
139                         get \r
140                         { \r
141                                 if (!setModifiedAfter) \r
142                                         throw new InvalidOperationException();\r
143                                 return modifiedAfter;\r
144                         }\r
145                         set \r
146                         { \r
147                                 modifiedAfter = value; \r
148                                 setModifiedAfter = true; \r
149                         }\r
150                 }\r
151                 \r
152                 private bool setModifiedBefore;\r
153                 private DateTime modifiedBefore; \r
154                 public DateTime ModifiedBefore \r
155                 {\r
156                         get \r
157                         { \r
158                                 if (!setModifiedBefore) \r
159                                         throw new InvalidOperationException();\r
160                                 return modifiedBefore;\r
161                         }\r
162                         set \r
163                         { \r
164                                 modifiedBefore = value; \r
165                                 setModifiedBefore = true; \r
166                         }\r
167                 }\r
168                 \r
169                 public void ClearAll()\r
170                 {\r
171                         setCategory = false;\r
172                         setCreatedAfter = false;\r
173                         setCreatedBefore = false;\r
174                         setLabel = false;\r
175                         setMachineName = false;\r
176                         setModifiedAfter = false;\r
177                         setModifiedBefore = false;\r
178                 }\r
179                 \r
180                 // To be called by the MessageQueue.GetPublicQueues(MessageQueueCriteria criteria) method\r
181                 internal bool Match(\r
182                         Guid category,\r
183                         DateTime created,\r
184                         string label,\r
185                         string machineName,\r
186                         DateTime modified)\r
187                 {\r
188                         if (setCategory && this.category != category)\r
189                                 return false;\r
190                         if (setCreatedAfter && created < createdAfter)\r
191                                 return false;\r
192                         if (setCreatedBefore && created > createdBefore)\r
193                                 return false;\r
194                         if (setLabel && this.label != label)\r
195                                 return false;                   \r
196                         if (setMachineName && this.machineName != machineName)\r
197                                 return false;                   \r
198                         if (setModifiedAfter && modified < modifiedAfter)\r
199                                 return false;\r
200                         if (setModifiedBefore && modified > modifiedBefore)\r
201                                 return false;\r
202                         return true;\r
203                 }       \r
204                 \r
205         }\r
206 }\r