172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.transaction; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Bundle; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22798098f7dcc1b7f1fbed1727f1e9ee9a9902f24aAlex Yakavenkaimport com.android.internal.telephony.uicc.IccUtils; 23d6f77b1faf5a6a230026815e8b63d50f71c2361fFrederic Predon 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/** 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * A wrapper around the Bundle instances used to start the TransactionService. 2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * It provides high-level APIs to set the information required for the latter to 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * instantiate transactions. 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class TransactionBundle { 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key for the transaction-type. 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Allowed values for this key are: TYPE_PUSH_TRANSACTION, TYPE_RETRIEVE_TRANSACTION, 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * TYPE_SEND_TRANSACTION, and TYPE_READREC_TRANSACTION. 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String TRANSACTION_TYPE = "type"; 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key of the push-data. 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Used when TRANSACTION_TYPE is TYPE_PUSH_TRANSACTION. 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String PUSH_DATA = "mms-push-data"; 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key of the MMSC server URL. 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String MMSC_URL = "mmsc-url"; 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key of the HTTP Proxy address. 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String PROXY_ADDRESS = "proxy-address"; 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key of the HTTP Proxy port. 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String PROXY_PORT = "proxy-port"; 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Key of the URI. 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Indicates the URL of the M-Retrieve.conf in TYPE_RETRIEVE_TRANSACTION, or the 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Uri of the M-Send.req/M-Read-Rec.ind in TYPE_SEND_TRANSACTION and 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * TYPE_READREC_TRANSACTION, respectively. 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String URI = "uri"; 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * This is the real Bundle to be sent to the TransactionService upon calling 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * startService. 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private final Bundle mBundle; 7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Private constructor. 7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * @param transactionType 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private TransactionBundle(int transactionType) { 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle = new Bundle(); 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle.putInt(TRANSACTION_TYPE, transactionType); 8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Constructor of a bundle used for TransactionBundle instances of type 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * TYPE_RETRIEVE_TRANSACTION, TYPE_SEND_TRANSACTION, and TYPE_READREC_TRANSACTION. 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * @param transactionType 8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * @param uri The relevant URI for this transaction. Indicates the URL of the 8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * M-Retrieve.conf in TYPE_RETRIEVE_TRANSACTION, or the Uri of the 8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * M-Send.req/M-Read-Rec.ind in TYPE_SEND_TRANSACTION and 9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * TYPE_READREC_TRANSACTION, respectively. 9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public TransactionBundle(int transactionType, String uri) { 9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project this(transactionType); 9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle.putString(URI, uri); 9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Constructor of a transaction bundle used for incoming bundle instances. 9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * @param bundle The incoming bundle 10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public TransactionBundle(Bundle bundle) { 10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle = bundle; 10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setConnectionSettings(String mmscUrl, 10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project String proxyAddress, 10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project int proxyPort) { 10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle.putString(MMSC_URL, mmscUrl); 11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle.putString(PROXY_ADDRESS, proxyAddress); 11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mBundle.putInt(PROXY_PORT, proxyPort); 11272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setConnectionSettings(TransactionSettings settings) { 11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project setConnectionSettings( 11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project settings.getMmscUrl(), 11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project settings.getProxyAddress(), 11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project settings.getProxyPort()); 11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public Bundle getBundle() { 12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle; 12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getTransactionType() { 12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getInt(TRANSACTION_TYPE); 12772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getUri() { 13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getString(URI); 13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public byte[] getPushData() { 13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getByteArray(PUSH_DATA); 13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getMmscUrl() { 13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getString(MMSC_URL); 13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getProxyAddress() { 14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getString(PROXY_ADDRESS); 14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getProxyPort() { 14672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mBundle.getInt(PROXY_PORT); 14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14836cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor 14936cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor @Override 15036cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor public String toString() { 15136cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor return "transactionType: " + getTransactionType() + 15236cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor " uri: " + getUri() + 153d6f77b1faf5a6a230026815e8b63d50f71c2361fFrederic Predon " pushData: " + IccUtils.bytesToHexString(getPushData()) + 15436cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor " mmscUrl: " + getMmscUrl() + 15536cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor " proxyAddress: " + getProxyAddress() + 15636cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor " proxyPort: " + getProxyPort(); 15736cb4bcc16e6d395e03d365a066bcad78e9d25c4Tom Taylor } 15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 159