1 16 package org.apache.cocoon.portal.tools.generation; 17 18 import org.apache.avalon.framework.parameters.Parameters; 19 import org.apache.avalon.framework.service.ServiceException; 20 import org.apache.avalon.framework.service.ServiceManager; 21 22 import org.apache.cocoon.ProcessingException; 23 import org.apache.cocoon.environment.SourceResolver; 24 import org.apache.cocoon.generation.ServiceableGenerator; 25 import org.apache.cocoon.portal.tools.PortalToolCatalogue; 26 import org.apache.cocoon.portal.tools.PortalToolManager; 27 import org.apache.cocoon.xml.IncludeXMLConsumer; 28 import org.apache.cocoon.xml.XMLUtils; 29 30 import org.apache.excalibur.source.Source; 31 import org.apache.excalibur.xml.sax.SAXParser; 32 import org.xml.sax.InputSource ; 33 import org.xml.sax.SAXException ; 34 35 import java.io.IOException ; 36 import java.net.MalformedURLException ; 37 import java.util.Iterator ; 38 import java.util.List ; 39 import java.util.Map ; 40 41 45 public class I18nCatalogueGenerator extends ServiceableGenerator { 46 47 private SAXParser parser; 48 private PortalToolManager ptm; 49 private final String CATALOGUE_TAG = "catalogue"; 50 private String lang = ".xml"; 51 52 55 public void generate() 56 throws IOException , SAXException , ProcessingException { 57 this.xmlConsumer.startDocument(); 58 this.xmlConsumer.startElement("", CATALOGUE_TAG, CATALOGUE_TAG, XMLUtils.EMPTY_ATTRIBUTES); 59 List cats = ptm.getI18n(); 60 for(Iterator it = cats.iterator(); it.hasNext();) { 61 PortalToolCatalogue ptc = (PortalToolCatalogue) it.next(); 62 try { 63 Source cat; 64 cat = resolver.resolveURI(ptc.getLocation() + ptc.getName() + lang); 65 IncludeXMLConsumer ixc = new IncludeXMLConsumer(this.xmlConsumer); 66 ixc.setIgnoreRootElement(true); 67 this.parser.parse(new InputSource (cat.getInputStream()), ixc); 68 } catch (MalformedURLException e) { 69 } catch (IOException e) { 71 } 73 } 74 this.xmlConsumer.endElement("", CATALOGUE_TAG, CATALOGUE_TAG); 75 this.xmlConsumer.endDocument(); 76 } 77 78 81 public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) 82 throws ProcessingException, SAXException , IOException { 83 super.setup(resolver, objectModel, src, par); 84 if(src.indexOf("_") != -1) { 85 this.lang = src.substring(src.indexOf("_"), src.length()); 86 this.lang = this.lang.toLowerCase(); 87 } 88 89 } 90 91 94 public void service(ServiceManager manager) throws ServiceException { 95 super.service(manager); 96 this.parser = (SAXParser)this.manager.lookup(SAXParser.ROLE); 97 ptm = (PortalToolManager) this.manager.lookup(PortalToolManager.ROLE); 98 } 99 100 103 public void dispose() { 104 super.dispose(); 105 this.manager.release(this.parser); 106 this.manager.release(this.ptm); 107 } 108 } 109 | Popular Tags |