1: using System;
2: using System.Collections.Generic;
3: using System.Data;
4: using System.Linq;
5: using System.Text;
6:
7: // I cancelled this part. All NDD related items could be generated by code
8:
9: namespace Ia.Ngn.Cl.Model.NetworkDesignDocument
10: {
11: ////////////////////////////////////////////////////////////////////////////
12:
13: /// <summary publish="true">
14: /// Network Design Document support class for Next Generation Network (NGN) entity model.
15: /// </summary>
16: ///
17: /// <remarks>
18: /// Copyright © 2006-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
19: ///
20: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
21: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
22: ///
23: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
24: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
25: ///
26: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
27: ///
28: /// Copyright notice: This notice may not be removed or altered from any source distribution.
29: /// </remarks>
30:
31: ////////////////////////////////////////////////////////////////////////////
32:
33: /// <summary>
34: ///
35: /// </summary>
36: public class NddPon
37: {
38: private const int FixedLengthOfId = 14;
39:
40: /// <summary/>
41: public NddPon() { }
42:
43: /// <summary/>
44: public string Id { get; set; }
45:
46: /// <summary/>
47: public int Index { get; set; }
48:
49: /// <summary/>
50: public int PonGroupPonIndex { get; set; }
51:
52: /// <summary/>
53: public int Rack { get; set; }
54:
55: /// <summary/>
56: public int Sub { get; set; }
57:
58: /// <summary/>
59: public int CardSlot { get; set; }
60:
61: /// <summary/>
62: public int Port { get; set; }
63:
64: /// <summary/>
65: public int Number { get; set; }
66:
67: /// <summary/>
68: public int ProposedNumber { get; set; }
69:
70: /// <summary/>
71: public string Position { get; set; }
72:
73: /// <summary/>
74: public string Name { get; set; }
75:
76: /// <summary/>
77: public string ProposedName { get; set; }
78:
79: /// <summary/>
80: public long PonGroupId { get; set; }
81:
82: /// <summary/>
83: public virtual ICollection<Ia.Ngn.Cl.Model.NetworkDesignDocument.NddOnt> NddOnts { get; set; }
84:
85: /// <summary/>
86: public string PonId(int oltId, int oltPonIndex)
87: {
88: string id;
89:
90: // "01" to indicate PonGroup 1. This is the case in almost all PONs. I will remove 01 later
91: id = oltId.ToString() + "01" + oltPonIndex.ToString().PadLeft(3, '0');
92:
93: if (id.Length != FixedLengthOfId)
94: {
95: throw new ArgumentOutOfRangeException(@"PonId(): Id length is not " + FixedLengthOfId);
96: }
97:
98: return id;
99: }
100: }
101:
102: ////////////////////////////////////////////////////////////////////////////
103:
104: /// <summary>
105: ///
106: /// </summary>
107: public class NddOnt
108: {
109: /// <summary/>
110: public NddOnt() { }
111:
112: /// <summary/>
113: public string Id { get; set; }
114:
115: /// <summary/>
116: public int Rack { get; set; }
117:
118: /// <summary/>
119: public int Sub { get; set; }
120:
121: /// <summary/>
122: public int CardSlot { get; set; }
123:
124: /// <summary/>
125: public int Port { get; set; }
126:
127: /// <summary/>
128: public int Number { get; set; }
129:
130: /// <summary/>
131: public int InternalNumber { get; set; }
132:
133: /// <summary/>
134: public string Position { get; set; }
135:
136: /// <summary/>
137: public string Ip { get; set; }
138:
139: /// <summary/>
140: public string ImsBasicServiceMgcIp { get; set; }
141:
142: /// <summary/>
143: public virtual Ia.Ngn.Cl.Model.NetworkDesignDocument.NddPon NddPon { get; set; }
144:
145: /// <summary/>
146: public virtual Ia.Ngn.Cl.Model.NetworkDesignDocument.NddAccess NddAccess { get; set; }
147: }
148:
149: ////////////////////////////////////////////////////////////////////////////
150:
151: /// <summary>
152: ///
153: /// </summary>
154: public class NddAccess
155: {
156: /// <summary/>
157: public NddAccess() { }
158:
159: /// <summary/>
160: public string Id { get; set; }
161:
162: /// <summary/>
163: public string Name { get; set; }
164:
165: /// <summary/>
166: public string ProposedName { get; set; }
167:
168: /// <summary/>
169: public int Ont { get; set; }
170:
171: /// <summary/>
172: public int Pon { get; set; }
173:
174: /// <summary/>
175: public int ProposedPon { get; set; }
176:
177: /// <summary/>
178: public string Symbol { get; set; }
179:
180: /// <summary/>
181: public string AccessId(int oltId, int ponNumber, int ontNumber)
182: {
183: return Ia.Ngn.Cl.Model.Business.Access.AccessId(oltId, ponNumber, ontNumber);
184: }
185: }
186:
187: ////////////////////////////////////////////////////////////////////////////
188: ////////////////////////////////////////////////////////////////////////////
189: }