1 /* 2 * Copyright (C) 2007-2008 Esmertec AG. 3 * Copyright (C) 2007-2008 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package com.android.mms.dom.smil.parser; 19 20 import android.util.Config; 21 import android.util.Log; 22 23 import org.xml.sax.Attributes; 24 import org.xml.sax.helpers.DefaultHandler; 25 import org.w3c.dom.smil.SMILDocument; 26 import org.w3c.dom.Element; 27 import org.w3c.dom.Node; 28 29 import com.android.mms.dom.smil.SmilDocumentImpl; 30 31 public class SmilContentHandler extends DefaultHandler { 32 private static final String TAG = "SmilContentHandler"; 33 private static final boolean DEBUG = false; 34 private static final boolean LOCAL_LOGV = DEBUG ? Config.LOGD : Config.LOGV; 35 36 private SMILDocument mSmilDocument; 37 private Node mCurrentNode; 38 39 /** 40 * Resets this handler. 41 * 42 */ 43 public void reset() { 44 mSmilDocument = new SmilDocumentImpl(); 45 mCurrentNode = mSmilDocument; 46 } 47 48 /** 49 * Returns the SMILDocument. 50 * @return The SMILDocument instance 51 */ 52 public SMILDocument getSmilDocument() { 53 return mSmilDocument; 54 } 55 56 @Override 57 public void startElement(String uri, String localName, String qName, Attributes attributes) { 58 if (LOCAL_LOGV) { 59 Log.v(TAG, "SmilContentHandler.startElement. Creating element " + localName); 60 } 61 Element element = mSmilDocument.createElement(localName); 62 if (attributes != null) { 63 for (int i = 0; i < attributes.getLength(); i++) { 64 if (LOCAL_LOGV) { 65 Log.v(TAG, "Attribute " + i + 66 " lname = " + attributes.getLocalName(i) + 67 " value = " + attributes.getValue(i)); 68 } 69 element.setAttribute(attributes.getLocalName(i), 70 attributes.getValue(i)); 71 } 72 } 73 if (LOCAL_LOGV) { 74 Log.v(TAG, "Appending " + localName + " to " + mCurrentNode.getNodeName()); 75 } 76 mCurrentNode.appendChild(element); 77 78 mCurrentNode = element; 79 } 80 81 @Override 82 public void endElement(String uri, String localName, String qName) { 83 if (LOCAL_LOGV) { 84 Log.v(TAG, "SmilContentHandler.endElement. localName " + localName); 85 } 86 mCurrentNode = mCurrentNode.getParentNode(); 87 } 88 89 @Override 90 public void characters(char[] ch, int start, int length) { 91 if (LOCAL_LOGV) { 92 Log.v(TAG, "SmilContentHandler.characters. ch = " + new String(ch, start, length)); 93 } 94 } 95 } 96