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    }