001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.camel.component.smpp;
018
019 import java.net.URI;
020
021 import org.apache.camel.RuntimeCamelException;
022 import org.jsmpp.bean.NumberingPlanIndicator;
023 import org.jsmpp.bean.SMSCDeliveryReceipt;
024 import org.jsmpp.bean.TypeOfNumber;
025
026 /**
027 * Contains the SMPP component configuration properties</a>
028 *
029 * @version
030 */
031 public class SmppConfiguration implements Cloneable {
032
033 private String host = "localhost";
034 private Integer port = new Integer(2775);
035 private String systemId = "smppclient";
036 private String password = "password";
037 private String systemType = "cp";
038 private byte dataCoding = (byte) 0;
039 private String encoding = "ISO-8859-1";
040 private Integer enquireLinkTimer = 5000;
041 private Integer transactionTimer = 10000;
042 private byte registeredDelivery = SMSCDeliveryReceipt.SUCCESS_FAILURE
043 .value();
044 private String serviceType = "CMT";
045 private String sourceAddr = "1616";
046 private String destAddr = "1717";
047 private byte sourceAddrTon = TypeOfNumber.UNKNOWN.value();
048 private byte destAddrTon = TypeOfNumber.UNKNOWN.value();
049 private byte sourceAddrNpi = NumberingPlanIndicator.UNKNOWN.value();
050 private byte destAddrNpi = NumberingPlanIndicator.UNKNOWN.value();
051 private byte protocolId = (byte) 0;
052 private byte priorityFlag = (byte) 1;
053 private byte replaceIfPresentFlag = (byte) 0;
054 private byte typeOfNumber = TypeOfNumber.UNKNOWN.value();
055 private byte numberingPlanIndicator = NumberingPlanIndicator.UNKNOWN.value();
056 private boolean usingSSL;
057 private long initialReconnectDelay = 5000;
058 private long reconnectDelay = 5000;
059
060 /**
061 * A POJO which contains all necessary configuration parameters for the SMPP connection
062 *
063 * @param uri the full URI of the endpoint
064 */
065 public void configureFromURI(URI uri) {
066 setSystemId(uri.getUserInfo());
067 setHost(uri.getHost());
068 setPort(uri.getPort());
069 if (uri.getScheme().startsWith("smpps")) {
070 setUsingSSL(true);
071 }
072 }
073
074 public SmppConfiguration copy() {
075 try {
076 return (SmppConfiguration) clone();
077 } catch (CloneNotSupportedException e) {
078 throw new RuntimeCamelException(e);
079 }
080 }
081
082 public String getHost() {
083 return host;
084 }
085
086 public void setHost(String host) {
087 this.host = host;
088 }
089
090 public Integer getPort() {
091 return port;
092 }
093
094 public void setPort(Integer port) {
095 this.port = port;
096 }
097
098 public String getSystemId() {
099 return systemId;
100 }
101
102 public void setSystemId(String systemId) {
103 this.systemId = systemId;
104 }
105
106 public String getPassword() {
107 return password;
108 }
109
110 public byte getDataCoding() {
111 return dataCoding;
112 }
113
114 public void setDataCoding(byte dataCoding) {
115 this.dataCoding = dataCoding;
116 }
117
118 public String getEncoding() {
119 return encoding;
120 }
121
122 public void setEncoding(String encoding) {
123 this.encoding = encoding;
124 }
125
126 public void setPassword(String password) {
127 this.password = password;
128 }
129
130 public Integer getEnquireLinkTimer() {
131 return enquireLinkTimer;
132 }
133
134 public void setEnquireLinkTimer(Integer enquireLinkTimer) {
135 this.enquireLinkTimer = enquireLinkTimer;
136 }
137
138 public Integer getTransactionTimer() {
139 return transactionTimer;
140 }
141
142 public void setTransactionTimer(Integer transactionTimer) {
143 this.transactionTimer = transactionTimer;
144 }
145
146 public String getSystemType() {
147 return systemType;
148 }
149
150 public void setSystemType(String systemType) {
151 this.systemType = systemType;
152 }
153
154 public byte getRegisteredDelivery() {
155 return registeredDelivery;
156 }
157
158 public void setRegisteredDelivery(byte registeredDelivery) {
159 this.registeredDelivery = registeredDelivery;
160 }
161
162 public String getServiceType() {
163 return serviceType;
164 }
165
166 public void setServiceType(String serviceType) {
167 this.serviceType = serviceType;
168 }
169
170 public byte getSourceAddrTon() {
171 return sourceAddrTon;
172 }
173
174 public void setSourceAddrTon(byte sourceAddrTon) {
175 this.sourceAddrTon = sourceAddrTon;
176 }
177
178 public byte getDestAddrTon() {
179 return destAddrTon;
180 }
181
182 public void setDestAddrTon(byte destAddrTon) {
183 this.destAddrTon = destAddrTon;
184 }
185
186 public byte getSourceAddrNpi() {
187 return sourceAddrNpi;
188 }
189
190 public void setSourceAddrNpi(byte sourceAddrNpi) {
191 this.sourceAddrNpi = sourceAddrNpi;
192 }
193
194 public byte getDestAddrNpi() {
195 return destAddrNpi;
196 }
197
198 public void setDestAddrNpi(byte destAddrNpi) {
199 this.destAddrNpi = destAddrNpi;
200 }
201
202 public byte getProtocolId() {
203 return protocolId;
204 }
205
206 public void setProtocolId(byte protocolId) {
207 this.protocolId = protocolId;
208 }
209
210 public byte getPriorityFlag() {
211 return priorityFlag;
212 }
213
214 public void setPriorityFlag(byte priorityFlag) {
215 this.priorityFlag = priorityFlag;
216 }
217
218 public byte getReplaceIfPresentFlag() {
219 return replaceIfPresentFlag;
220 }
221
222 public void setReplaceIfPresentFlag(byte replaceIfPresentFlag) {
223 this.replaceIfPresentFlag = replaceIfPresentFlag;
224 }
225
226 public String getSourceAddr() {
227 return sourceAddr;
228 }
229
230 public void setSourceAddr(String sourceAddr) {
231 this.sourceAddr = sourceAddr;
232 }
233
234 public String getDestAddr() {
235 return destAddr;
236 }
237
238 public void setDestAddr(String destAddr) {
239 this.destAddr = destAddr;
240 }
241
242 public byte getTypeOfNumber() {
243 return typeOfNumber;
244 }
245
246 public void setTypeOfNumber(byte typeOfNumber) {
247 this.typeOfNumber = typeOfNumber;
248 }
249
250 public byte getNumberingPlanIndicator() {
251 return numberingPlanIndicator;
252 }
253
254 public void setNumberingPlanIndicator(byte numberingPlanIndicator) {
255 this.numberingPlanIndicator = numberingPlanIndicator;
256 }
257
258 public boolean getUsingSSL() {
259 return usingSSL;
260 }
261
262 public void setUsingSSL(boolean usingSSL) {
263 this.usingSSL = usingSSL;
264 }
265
266 public long getInitialReconnectDelay() {
267 return initialReconnectDelay;
268 }
269
270 public void setInitialReconnectDelay(long initialReconnectDelay) {
271 this.initialReconnectDelay = initialReconnectDelay;
272 }
273
274 public long getReconnectDelay() {
275 return reconnectDelay;
276 }
277
278 public void setReconnectDelay(long reconnectDelay) {
279 this.reconnectDelay = reconnectDelay;
280 }
281
282 @Override
283 public String toString() {
284 return "SmppConfiguration[usingSSL=" + usingSSL
285 + ", enquireLinkTimer=" + enquireLinkTimer
286 + ", host=" + host
287 + ", password=" + password
288 + ", port=" + port
289 + ", systemId=" + systemId
290 + ", systemType=" + systemType
291 + ", dataCoding=" + dataCoding
292 + ", encoding=" + encoding
293 + ", transactionTimer=" + transactionTimer
294 + ", registeredDelivery=" + registeredDelivery
295 + ", serviceType=" + serviceType
296 + ", sourceAddrTon=" + sourceAddrTon
297 + ", destAddrTon=" + destAddrTon
298 + ", sourceAddrNpi=" + sourceAddrNpi
299 + ", destAddrNpi=" + destAddrNpi
300 + ", protocolId=" + protocolId
301 + ", priorityFlag=" + priorityFlag
302 + ", replaceIfPresentFlag=" + replaceIfPresentFlag
303 + ", sourceAddr=" + sourceAddr
304 + ", destAddr=" + destAddr
305 + ", typeOfNumber=" + typeOfNumber
306 + ", numberingPlanIndicator=" + numberingPlanIndicator
307 + ", initialReconnectDelay=" + initialReconnectDelay
308 + ", reconnectDelay=" + reconnectDelay
309 + "]";
310 }
311 }