package org.anodyneos.xpImpl.translater; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.anodyneos.commons.xml.sax.ElementProcessor; import org.anodyneos.xpImpl.util.CodeWriter; import org.anodyneos.xpImpl.util.Util; import org.xml.sax.SAXException; class TranslaterProcessor extends ElementProcessor { public static final String URI_XP = "http://www.anodyneos.org/xmlns/xp"; public static final String URI_XP_TAG = "http://www.anodyneos.org/xmlns/xptag"; public static final String URI_NAMESPACES = "http://www.w3.org/2000/xmlns/"; private TranslaterContext ctx; private Map bufferedStartPrefixMappings = new HashMap(); public TranslaterProcessor(TranslaterContext ctx) { super(ctx); this.ctx = ctx; } protected TranslaterContext getTranslaterContext() { return ctx; } public final void startPrefixMapping(java.lang.String prefix, java.lang.String uri) throws SAXException { /* CodeWriter out = getTranslaterContext().getCodeWriter(); out.printIndent().println( "xpCH.startPrefixMapping(" + "\"" + prefix + "\"" + ",\"" + uri + "\"" + ");" ); */ ctx.bufferStartPrefixMapping(prefix, uri); } // XpContentHandler takes care of this for us... /* public void endPrefixMapping(java.lang.String prefix) throws SAXException { CodeWriter out = getTranslaterContext().getCodeWriter(); out.printIndent().println( "xpCH.endPrefixMapping(" + "\"" + prefix + "\"" + ");" ); } */ public int outputBufferedMappingsAsPhantoms() { int count = 0; CodeWriter out = ctx.getCodeWriter(); Map prefixMappings = ctx.getBufferedStartPrefixMappings(); for (Iterator it = prefixMappings.keySet().iterator(); it.hasNext();) { String prefix = (String) it.next(); String url = (String) prefixMappings.get(prefix); out.printIndent().println( "xpCH.pushPhantomPrefixMapping(" + Util.escapeStringQuoted(prefix) + "," + Util.escapeStringQuoted(url) + ");"); count++; } ctx.clearBufferedStartPrefixMappings(); return count; } }