package com.bluevia.android.messagery.mt.sms.parser.xml;
import java.io.IOException;
import org.xmlpull.v1.XmlSerializer;
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.parser.AbstractXmlMessageSerializer;
import com.bluevia.android.messagery.mt.sms.data.Sms;
/**
* Xml serializer for Sms entities.
*
* @author Telefonica I+D
*
*/
public abstract class AbstractXmlSmsSerializer extends AbstractXmlMessageSerializer implements ISerializer {
@Override
protected void serializeEntityContents(AbstractMessage message, XmlSerializer serializer)
throws SerializeException, IOException {
if (!message.isValid()) {
throw new SerializeException("Invalid SMS entity");
}
// Root tag
serializer.setPrefix(XmlConstants.TNS, XmlConstants.NS_SMS_API_URI);
serializer.setPrefix(XmlConstants.TNS1, XmlConstants.NS_REST_COMMON_API_URI);
serializer.setPrefix(XmlConstants.XSI, XmlConstants.NS_XML_SCHEMA_INSTANCE);
serializer.startTag(XmlConstants.NS_SMS_API_URI, XmlConstants.XSD_SMSTEXTTYPE_SMSTEXT);
serializer.attribute(XmlConstants.NS_XML_SCHEMA_INSTANCE, XmlConstants.XSD_TEXTYPE_SCHEMALOCATION, XmlConstants.SMS_SCHEMALOCATION);
// Message Contents
serializeSmsContents((Sms) message, serializer);
// End root tag
serializer.endTag(XmlConstants.NS_SMS_API_URI, XmlConstants.XSD_SMSTEXTTYPE_SMSTEXT);
}
/**
* Abstract function to serialize each kind of Sms entities
*
* @param message the SMS Message
* @param serializer the serializer
* @throws SerializeException
* @throws IOException
*/
protected abstract void serializeSmsContents(Sms message, XmlSerializer serializer) throws SerializeException, IOException;
}