package com.bluevia.android.messagery.mt.mms.parser; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.xmlpull.v1.XmlSerializer; import com.bluevia.android.commons.Entity; import com.bluevia.android.commons.parser.ISerializer; import com.bluevia.android.commons.parser.SerializeException; import com.bluevia.android.commons.parser.xml.XmlConstants; import com.bluevia.android.messagery.data.AbstractMessage; import com.bluevia.android.messagery.mt.mms.data.MmsMessageReq; import com.bluevia.android.messagery.mt.parser.AbstractXmlMessageSerializer; /** * Xml serializer for MmsMessageReq entities. * * @author Telefonica I+D * */ class XmlMmsMessageSerializer extends AbstractXmlMessageSerializer implements ISerializer { public ByteArrayOutputStream serialize(Entity entity) throws SerializeException { if (!(entity instanceof MmsMessageReq)) { throw new SerializeException("Attempted to parse unsupported entity type"); } return super.serialize(entity); } @Override protected void serializeEntityContents(AbstractMessage message, XmlSerializer serializer) throws SerializeException, IOException { if (!message.isValid()) { throw new SerializeException("Invalid MMS entity"); } // Root tag serializer.setPrefix(XmlConstants.TNS, XmlConstants.NS_MMS_API_URI); serializer.setPrefix(XmlConstants.TNS1, XmlConstants.NS_REST_COMMON_API_URI); serializer.startTag(XmlConstants.NS_MMS_API_URI, XmlConstants.XSD_MMSTEXTTYPE_MMSMESSAGE); // Addresses serializeAddressContents(message, serializer, XmlConstants.NS_MMS_API_URI); // Recepit Type serializeReceiptTypeContents(message, serializer, XmlConstants.NS_MMS_API_URI); //Sender name serializeSenderNameContents(message, serializer, XmlConstants.NS_MMS_API_URI); // Origin Adresses serializeOriginAddressContents(message, serializer, XmlConstants.NS_MMS_API_URI); // Message Contents serializeSubjectContents((MmsMessageReq) message, serializer); // End root tag serializer.endTag(XmlConstants.NS_MMS_API_URI, XmlConstants.XSD_MMSTEXTTYPE_MMSMESSAGE); } /** * This function serializes into the XML the Subject paramter * * @param message the AbstractMessage message * @param serializer the serializer * * @throws SerializeException * @throws IOException */ private void serializeSubjectContents(MmsMessageReq message, XmlSerializer serializer) throws SerializeException, IOException { if ((message.getSubject() != null) && (!(message.getSubject().equals(""))) ) { serializer.startTag(XmlConstants.NS_MMS_API_URI, XmlConstants.XSD_MMSTEXTTYPE_SUBJECT); serializer.text(message.getSubject()); serializer.endTag(XmlConstants.NS_MMS_API_URI, XmlConstants.XSD_MMSTEXTTYPE_SUBJECT); } } }