1 //
2 // System.Diagnostics.EventLogPermissionEntryCollection.cs
3 //
4 // Authors:
5 //	Jonathan Pryor (jonpryor@vt.edu)
6 //	Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //	Sebastien Pouliot  <sebastien@ximian.com>
8 //
9 // (C) 2002 Jonathan Pryor
10 // (C) 2003 Andreas Nahr
11 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 //
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 //
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 //
32 
33 using System.Collections;
34 using System.Security.Permissions;
35 
36 namespace System.Diagnostics {
37 
38 	[Serializable]
39 	public class EventLogPermissionEntryCollection : CollectionBase {
40 
41 		private EventLogPermission owner;
42 
EventLogPermissionEntryCollection(EventLogPermission owner)43 		internal EventLogPermissionEntryCollection (EventLogPermission owner)
44 		{
45 			this.owner = owner;
46 			ResourcePermissionBaseEntry[] entries = owner.GetEntries ();
47 			if (entries.Length > 0) {
48 				foreach (ResourcePermissionBaseEntry entry in entries) {
49 					EventLogPermissionAccess elpa = (EventLogPermissionAccess) entry.PermissionAccess;
50 					EventLogPermissionEntry elpe = new EventLogPermissionEntry (elpa, entry.PermissionAccessPath [0]);
51 					// we don't want to add them (again) to the base class
52 					InnerList.Add (elpe);
53 				}
54 			}
55 		}
56 
57 		public EventLogPermissionEntry this [int index] {
58 			get { return ((EventLogPermissionEntry) List[index]); }
59 			set { List[index] = value; }
60 		}
61 
Add(EventLogPermissionEntry value)62 		public int Add(EventLogPermissionEntry value)
63 		{
64 			return List.Add (value);
65 		}
66 
AddRange(EventLogPermissionEntry[] value)67 		public void AddRange(EventLogPermissionEntry[] value)
68 		{
69 			foreach (EventLogPermissionEntry entry in value)
70 				List.Add (entry);
71 		}
72 
AddRange(EventLogPermissionEntryCollection value)73 		public void AddRange(EventLogPermissionEntryCollection value)
74 		{
75 			foreach (EventLogPermissionEntry entry in value)
76 				List.Add (entry);
77 		}
78 
Contains(EventLogPermissionEntry value)79 		public bool Contains (EventLogPermissionEntry value)
80 		{
81 			return List.Contains (value);
82 		}
83 
CopyTo(EventLogPermissionEntry[] array, int index)84 		public void CopyTo (EventLogPermissionEntry[] array, int index)
85 		{
86 			List.CopyTo (array, index);
87 		}
88 
IndexOf(EventLogPermissionEntry value)89 		public int IndexOf (EventLogPermissionEntry value)
90 		{
91 			return List.IndexOf (value);
92 		}
93 
Insert(int index, EventLogPermissionEntry value)94 		public void Insert (int index, EventLogPermissionEntry value)
95 		{
96 			List.Insert (index, value);
97 		}
98 
OnClear()99 		protected override void OnClear ()
100 		{
101 			owner.ClearEntries ();
102 		}
103 
OnInsert(int index, object value)104 		protected override void OnInsert (int index, object value)
105 		{
106 			owner.Add (value);
107 		}
108 
OnRemove(int index, object value)109 		protected override void OnRemove (int index, object value)
110 		{
111 			owner.Remove (value);
112 		}
113 
OnSet(int index, object oldValue, object newValue)114 		protected override void OnSet (int index, object oldValue, object newValue)
115 		{
116 			owner.Remove (oldValue);
117 			owner.Add (newValue);
118 		}
119 
Remove(EventLogPermissionEntry value)120 		public void Remove (EventLogPermissionEntry value)
121 		{
122 			List.Remove (value);
123 		}
124 	}
125 }
126 
127