All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.marre.sms.nokia.NokiaMultipartMessage Maven / Gradle / Ivy

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is "SMS Library for the Java platform".
 *
 * The Initial Developer of the Original Code is Markus Eriksson.
 * Portions created by the Initial Developer are Copyright (C) 2002
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK ***** */
package org.marre.sms.nokia;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.LinkedList;

import org.marre.sms.SmsPort;
import org.marre.sms.SmsPortAddressedMessage;
import org.marre.sms.SmsUserData;

/**
 * Baseclass for Nokia Multipart Messages
 * 

* Baseclass for messages that rely on the Nokia Multipart Messages * * @author Markus Eriksson * @version $Id$ */ abstract class NokiaMultipartMessage extends SmsPortAddressedMessage { /** * */ private static final long serialVersionUID = 8558015655242719292L; private final LinkedList parts_ = new LinkedList(); /** * Creates a Nokia Multipart Message */ protected NokiaMultipartMessage() { super(SmsPort.NOKIA_MULTIPART_MESSAGE, SmsPort.ZERO); } /** * Adds a part to this multipart message * * @param theItemType * Type * @param data * Content */ protected void addMultipart(NokiaItemType theItemType, byte[] data) { parts_.add(new NokiaPart(theItemType, data)); } /** * Removes all parts from the message */ protected void clear() { parts_.clear(); } public SmsUserData getUserData() { ByteArrayOutputStream baos = new ByteArrayOutputStream(140); // Payload try { // Header or something... baos.write(0x30); // Loop through all multiparts and add them for (NokiaPart part : parts_) { byte[] data = part.getData(); // Type - 1 octet baos.write(part.getItemType().getTypeId()); // Length - 2 octets baos.write((byte) ((data.length >> 8) & 0xff)); baos.write((byte) (data.length & 0xff)); // Data - n octets baos.write(data); } baos.close(); } catch (IOException ex) { throw new RuntimeException(ex); } return new SmsUserData(baos.toByteArray()); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy