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 $Revision: 954316 $
030     * @author muellerc
031     */
032    public class SmppConfiguration implements Cloneable {
033    
034        private String host = "localhost";
035        private Integer port = new Integer(2775);
036        private String systemId = "smppclient";
037        private String password = "password";
038        private String systemType = "cp";
039        private String encoding = "ISO-8859-1";
040        private Integer enquireLinkTimer = new Integer(5000);
041        private Integer transactionTimer = new Integer(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 String getEncoding() {
111            return encoding;
112        }
113    
114        public void setEncoding(String encoding) {
115            this.encoding = encoding;
116        }
117    
118        public void setPassword(String password) {
119            this.password = password;
120        }
121    
122        public Integer getEnquireLinkTimer() {
123            return enquireLinkTimer;
124        }
125    
126        public void setEnquireLinkTimer(Integer enquireLinkTimer) {
127            this.enquireLinkTimer = enquireLinkTimer;
128        }
129    
130        public Integer getTransactionTimer() {
131            return transactionTimer;
132        }
133    
134        public void setTransactionTimer(Integer transactionTimer) {
135            this.transactionTimer = transactionTimer;
136        }
137    
138        public String getSystemType() {
139            return systemType;
140        }
141    
142        public void setSystemType(String systemType) {
143            this.systemType = systemType;
144        }
145    
146        public byte getRegisteredDelivery() {
147            return registeredDelivery;
148        }
149    
150        public void setRegisteredDelivery(byte registeredDelivery) {
151            this.registeredDelivery = registeredDelivery;
152        }
153    
154        public String getServiceType() {
155            return serviceType;
156        }
157    
158        public void setServiceType(String serviceType) {
159            this.serviceType = serviceType;
160        }
161    
162        public byte getSourceAddrTon() {
163            return sourceAddrTon;
164        }
165    
166        public void setSourceAddrTon(byte sourceAddrTon) {
167            this.sourceAddrTon = sourceAddrTon;
168        }
169    
170        public byte getDestAddrTon() {
171            return destAddrTon;
172        }
173    
174        public void setDestAddrTon(byte destAddrTon) {
175            this.destAddrTon = destAddrTon;
176        }
177    
178        public byte getSourceAddrNpi() {
179            return sourceAddrNpi;
180        }
181    
182        public void setSourceAddrNpi(byte sourceAddrNpi) {
183            this.sourceAddrNpi = sourceAddrNpi;
184        }
185    
186        public byte getDestAddrNpi() {
187            return destAddrNpi;
188        }
189    
190        public void setDestAddrNpi(byte destAddrNpi) {
191            this.destAddrNpi = destAddrNpi;
192        }
193    
194        public byte getProtocolId() {
195            return protocolId;
196        }
197    
198        public void setProtocolId(byte protocolId) {
199            this.protocolId = protocolId;
200        }
201    
202        public byte getPriorityFlag() {
203            return priorityFlag;
204        }
205    
206        public void setPriorityFlag(byte priorityFlag) {
207            this.priorityFlag = priorityFlag;
208        }
209    
210        public byte getReplaceIfPresentFlag() {
211            return replaceIfPresentFlag;
212        }
213    
214        public void setReplaceIfPresentFlag(byte replaceIfPresentFlag) {
215            this.replaceIfPresentFlag = replaceIfPresentFlag;
216        }
217    
218        public String getSourceAddr() {
219            return sourceAddr;
220        }
221    
222        public void setSourceAddr(String sourceAddr) {
223            this.sourceAddr = sourceAddr;
224        }
225    
226        public String getDestAddr() {
227            return destAddr;
228        }
229    
230        public void setDestAddr(String destAddr) {
231            this.destAddr = destAddr;
232        }
233        
234        public byte getTypeOfNumber() {
235            return typeOfNumber;
236        }
237    
238        public void setTypeOfNumber(byte typeOfNumber) {
239            this.typeOfNumber = typeOfNumber;
240        }
241    
242        public byte getNumberingPlanIndicator() {
243            return numberingPlanIndicator;
244        }
245    
246        public void setNumberingPlanIndicator(byte numberingPlanIndicator) {
247            this.numberingPlanIndicator = numberingPlanIndicator;
248        }
249    
250        public boolean getUsingSSL() {
251            return usingSSL;
252        }
253        
254        public void setUsingSSL(boolean usingSSL) {
255            this.usingSSL = usingSSL;
256        }
257        
258        public long getInitialReconnectDelay() {
259            return initialReconnectDelay;
260        }
261    
262        public void setInitialReconnectDelay(long initialReconnectDelay) {
263            this.initialReconnectDelay = initialReconnectDelay;
264        }
265    
266        public long getReconnectDelay() {
267            return reconnectDelay;
268        }
269    
270        public void setReconnectDelay(long reconnectDelay) {
271            this.reconnectDelay = reconnectDelay;
272        }
273    
274        @Override
275        public String toString() {
276            return "SmppConfiguration[usingSSL=" + usingSSL 
277                + ", enquireLinkTimer=" + enquireLinkTimer
278                + ", host=" + host 
279                + ", password=" + password 
280                + ", port=" + port 
281                + ", systemId=" + systemId 
282                + ", systemType=" + systemType 
283                + ", transactionTimer=" + transactionTimer
284                + ", registeredDelivery=" + registeredDelivery
285                + ", serviceType=" + serviceType 
286                + ", sourceAddrTon=" + sourceAddrTon 
287                + ", destAddrTon=" + destAddrTon
288                + ", sourceAddrNpi=" + sourceAddrNpi 
289                + ", destAddrNpi=" + destAddrNpi 
290                + ", protocolId=" + protocolId
291                + ", priorityFlag=" + priorityFlag 
292                + ", replaceIfPresentFlag=" + replaceIfPresentFlag 
293                + ", sourceAddr=" + sourceAddr 
294                + ", destAddr=" + destAddr 
295                + ", typeOfNumber=" + typeOfNumber 
296                + ", numberingPlanIndicator=" + numberingPlanIndicator
297                + ", initialReconnectDelay=" + initialReconnectDelay
298                + ", reconnectDelay=" + reconnectDelay
299                + "]";
300        }
301    }