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: 991323 $
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 byte dataCoding = (byte) 0;
040        private String encoding = "ISO-8859-1";
041        private Integer enquireLinkTimer = new Integer(5000);
042        private Integer transactionTimer = new Integer(10000);
043        private byte registeredDelivery = SMSCDeliveryReceipt.SUCCESS_FAILURE
044                .value();
045        private String serviceType = "CMT";
046        private String sourceAddr = "1616";
047        private String destAddr = "1717";
048        private byte sourceAddrTon = TypeOfNumber.UNKNOWN.value();
049        private byte destAddrTon = TypeOfNumber.UNKNOWN.value();
050        private byte sourceAddrNpi = NumberingPlanIndicator.UNKNOWN.value();
051        private byte destAddrNpi = NumberingPlanIndicator.UNKNOWN.value();
052        private byte protocolId = (byte) 0;
053        private byte priorityFlag = (byte) 1;
054        private byte replaceIfPresentFlag = (byte) 0;
055        private byte typeOfNumber = TypeOfNumber.UNKNOWN.value();
056        private byte numberingPlanIndicator = NumberingPlanIndicator.UNKNOWN.value();
057        private boolean usingSSL;
058        private long initialReconnectDelay = 5000;
059        private long reconnectDelay = 5000;
060    
061        /**
062         * A POJO which contains all necessary configuration parameters for the SMPP connection
063         * 
064         * @param uri the full URI of the endpoint
065         */
066        public void configureFromURI(URI uri) {
067            setSystemId(uri.getUserInfo());
068            setHost(uri.getHost());
069            setPort(uri.getPort());
070            if (uri.getScheme().startsWith("smpps")) {
071                setUsingSSL(true);
072            }
073        }
074    
075        public SmppConfiguration copy() {
076            try {
077                return (SmppConfiguration) clone();
078            } catch (CloneNotSupportedException e) {
079                throw new RuntimeCamelException(e);
080            }
081        }
082    
083        public String getHost() {
084            return host;
085        }
086    
087        public void setHost(String host) {
088            this.host = host;
089        }
090    
091        public Integer getPort() {
092            return port;
093        }
094    
095        public void setPort(Integer port) {
096            this.port = port;
097        }
098    
099        public String getSystemId() {
100            return systemId;
101        }
102    
103        public void setSystemId(String systemId) {
104            this.systemId = systemId;
105        }
106    
107        public String getPassword() {
108            return password;
109        }
110        
111        public byte getDataCoding() {
112            return dataCoding;
113        }
114    
115        public void setDataCoding(byte dataCoding) {
116            this.dataCoding = dataCoding;
117        }
118        
119        public String getEncoding() {
120            return encoding;
121        }
122    
123        public void setEncoding(String encoding) {
124            this.encoding = encoding;
125        }
126    
127        public void setPassword(String password) {
128            this.password = password;
129        }
130    
131        public Integer getEnquireLinkTimer() {
132            return enquireLinkTimer;
133        }
134    
135        public void setEnquireLinkTimer(Integer enquireLinkTimer) {
136            this.enquireLinkTimer = enquireLinkTimer;
137        }
138    
139        public Integer getTransactionTimer() {
140            return transactionTimer;
141        }
142    
143        public void setTransactionTimer(Integer transactionTimer) {
144            this.transactionTimer = transactionTimer;
145        }
146    
147        public String getSystemType() {
148            return systemType;
149        }
150    
151        public void setSystemType(String systemType) {
152            this.systemType = systemType;
153        }
154    
155        public byte getRegisteredDelivery() {
156            return registeredDelivery;
157        }
158    
159        public void setRegisteredDelivery(byte registeredDelivery) {
160            this.registeredDelivery = registeredDelivery;
161        }
162    
163        public String getServiceType() {
164            return serviceType;
165        }
166    
167        public void setServiceType(String serviceType) {
168            this.serviceType = serviceType;
169        }
170    
171        public byte getSourceAddrTon() {
172            return sourceAddrTon;
173        }
174    
175        public void setSourceAddrTon(byte sourceAddrTon) {
176            this.sourceAddrTon = sourceAddrTon;
177        }
178    
179        public byte getDestAddrTon() {
180            return destAddrTon;
181        }
182    
183        public void setDestAddrTon(byte destAddrTon) {
184            this.destAddrTon = destAddrTon;
185        }
186    
187        public byte getSourceAddrNpi() {
188            return sourceAddrNpi;
189        }
190    
191        public void setSourceAddrNpi(byte sourceAddrNpi) {
192            this.sourceAddrNpi = sourceAddrNpi;
193        }
194    
195        public byte getDestAddrNpi() {
196            return destAddrNpi;
197        }
198    
199        public void setDestAddrNpi(byte destAddrNpi) {
200            this.destAddrNpi = destAddrNpi;
201        }
202    
203        public byte getProtocolId() {
204            return protocolId;
205        }
206    
207        public void setProtocolId(byte protocolId) {
208            this.protocolId = protocolId;
209        }
210    
211        public byte getPriorityFlag() {
212            return priorityFlag;
213        }
214    
215        public void setPriorityFlag(byte priorityFlag) {
216            this.priorityFlag = priorityFlag;
217        }
218    
219        public byte getReplaceIfPresentFlag() {
220            return replaceIfPresentFlag;
221        }
222    
223        public void setReplaceIfPresentFlag(byte replaceIfPresentFlag) {
224            this.replaceIfPresentFlag = replaceIfPresentFlag;
225        }
226    
227        public String getSourceAddr() {
228            return sourceAddr;
229        }
230    
231        public void setSourceAddr(String sourceAddr) {
232            this.sourceAddr = sourceAddr;
233        }
234    
235        public String getDestAddr() {
236            return destAddr;
237        }
238    
239        public void setDestAddr(String destAddr) {
240            this.destAddr = destAddr;
241        }
242        
243        public byte getTypeOfNumber() {
244            return typeOfNumber;
245        }
246    
247        public void setTypeOfNumber(byte typeOfNumber) {
248            this.typeOfNumber = typeOfNumber;
249        }
250    
251        public byte getNumberingPlanIndicator() {
252            return numberingPlanIndicator;
253        }
254    
255        public void setNumberingPlanIndicator(byte numberingPlanIndicator) {
256            this.numberingPlanIndicator = numberingPlanIndicator;
257        }
258    
259        public boolean getUsingSSL() {
260            return usingSSL;
261        }
262        
263        public void setUsingSSL(boolean usingSSL) {
264            this.usingSSL = usingSSL;
265        }
266        
267        public long getInitialReconnectDelay() {
268            return initialReconnectDelay;
269        }
270    
271        public void setInitialReconnectDelay(long initialReconnectDelay) {
272            this.initialReconnectDelay = initialReconnectDelay;
273        }
274    
275        public long getReconnectDelay() {
276            return reconnectDelay;
277        }
278    
279        public void setReconnectDelay(long reconnectDelay) {
280            this.reconnectDelay = reconnectDelay;
281        }
282    
283        @Override
284        public String toString() {
285            return "SmppConfiguration[usingSSL=" + usingSSL 
286                + ", enquireLinkTimer=" + enquireLinkTimer
287                + ", host=" + host 
288                + ", password=" + password 
289                + ", port=" + port 
290                + ", systemId=" + systemId 
291                + ", systemType=" + systemType
292                + ", dataCoding=" + dataCoding
293                + ", encoding=" + encoding
294                + ", transactionTimer=" + transactionTimer
295                + ", registeredDelivery=" + registeredDelivery
296                + ", serviceType=" + serviceType 
297                + ", sourceAddrTon=" + sourceAddrTon 
298                + ", destAddrTon=" + destAddrTon
299                + ", sourceAddrNpi=" + sourceAddrNpi 
300                + ", destAddrNpi=" + destAddrNpi 
301                + ", protocolId=" + protocolId
302                + ", priorityFlag=" + priorityFlag 
303                + ", replaceIfPresentFlag=" + replaceIfPresentFlag 
304                + ", sourceAddr=" + sourceAddr 
305                + ", destAddr=" + destAddr 
306                + ", typeOfNumber=" + typeOfNumber 
307                + ", numberingPlanIndicator=" + numberingPlanIndicator
308                + ", initialReconnectDelay=" + initialReconnectDelay
309                + ", reconnectDelay=" + reconnectDelay
310                + "]";
311        }
312    }