Ignore:
Timestamp:
11/27/06 12:23:38 (5 years ago)
Author:
sys
Message:

Chargement des xsl à la demande

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslMonoTemplate.java

    r7478 r7519  
    3939package com.scenari.m.co.donnee; 
    4040 
    41 import java.io.StringReader; 
    4241import java.io.StringWriter; 
    43 import java.io.Writer; 
    4442 
    4543import javax.xml.transform.Transformer; 
    46 import javax.xml.transform.TransformerFactory; 
    47 import javax.xml.transform.dom.DOMResult; 
    4844import javax.xml.transform.dom.DOMSource; 
    49 import javax.xml.transform.sax.SAXSource; 
    5045import javax.xml.transform.stream.StreamResult; 
    5146 
    52 import org.w3c.dom.Document; 
    5347import org.w3c.dom.Element; 
    54 import org.w3c.dom.Node; 
    55 import org.xml.sax.InputSource; 
    56 import org.xml.sax.XMLReader; 
    5748 
    58 import com.scenari.m.co.agent.IWAgent; 
    5949import com.scenari.m.co.composant.IHComposantType; 
    6050import com.scenari.m.co.composant.IWComposant; 
    61 import com.scenari.m.co.dialog.IHDialog; 
    6251import com.scenari.s.co.source.IHAliasResolver; 
    6352import com.scenari.s.co.source.IHSource; 
    64 import com.scenari.s.fw.log.HLogMgr; 
    6553import com.scenari.s.fw.log.HTrace; 
    6654import com.scenari.s.fw.log.HTraceMgr; 
    67 import com.scenari.s.fw.util.xml.HPoolXmlReader; 
    6855import com.scenari.s.fw.utils.HPoolBuffer; 
    69 import com.scenari.xsldom.xalan.processor.TransformerFactoryImpl; 
    7056 
    7157/** 
     
    7561 *  
    7662 */ 
    77 public class WDonneeXslMonoTemplate extends WDonneeXsl implements Cloneable { 
     63public class WDonneeXslMonoTemplate extends WDonneeXslDouble implements Cloneable { 
    7864 
    7965        public static HTrace sTraceXslMonoTemplate = HTraceMgr.hRegister(WDonneeXslMonoTemplate.class.getName(), "Affiche le XSL produit par le premier xsl d'une donnée de type 'xsl-monotemplate'."); 
     
    9682         *  
    9783         *  
    98          * @see com.scenari.m.co.donnee.IData#getLevel() 
    99          */ 
    100         public final int getLevel() { 
    101                 return IAgentData.LEVEL_DYNAMIQUE; 
    102         } 
    103  
    104         /** 
    105          *  
    106          *  
    107          * @see com.scenari.m.co.donnee.IData#getString(com.scenari.m.co.dialog.IHDialog, 
    108          *      java.lang.Object, java.lang.Object) 
    109          */ 
    110         public final String getString(IHDialog pDialog, Object pOwner, Object pArguments) throws Exception { 
    111                 StringWriter vWriter = HPoolBuffer.get().hGetStringWriter(); 
    112                 xGetValue(pDialog, (IWAgent) pOwner, pArguments, new StreamResult(vWriter)); 
    113                 String vResult = vWriter.getBuffer().substring(0); 
    114                 HPoolBuffer.get().hFreeStringWriter(vWriter); 
    115                 return vResult; 
    116         } 
    117          
    118     public final Node getNode(IHDialog pDialog, Object pOwner, Object pArguments) throws java.lang.Exception { 
    119         Document vDoc = HDonneeUtils.hCreateDoc(); 
    120         xGetValue(pDialog, (IWAgent) pOwner, pArguments, new DOMResult(vDoc)); 
    121         return vDoc; 
    122     } 
    123  
    124         /** 
    125          *  
    126          *  
    127          * @see com.scenari.m.co.donnee.IData#writeValue(java.io.Writer, 
    128          *      com.scenari.m.co.dialog.IHDialog, java.lang.Object, 
    129          *      java.lang.Object) 
    130          */ 
    131         public final void writeValue(Writer pWriter, IHDialog pDialog, Object pOwner, Object pArguments) throws Exception { 
    132                 xGetValue(pDialog, (IWAgent) pOwner, pArguments, new StreamResult(pWriter)); 
    133         } 
    134  
    135         /** 
    136          *  
    137          *  
    13884         * @see com.scenari.m.co.donnee.IAgentData#wSetComposant(com.scenari.m.co.composant.IWComposant, 
    13985         *      org.w3c.dom.Element, IHSource) 
     
    14490                IHComposantType vCompType = pComposant.hGetComposantType(); 
    14591 
    146                 Transformer vTransformer = fTemplate.newTransformer(); 
     92                Transformer vTransformer = xGetTemplate(pComposant.hGetComposantType()).newTransformer(); 
    14793 
    14894                IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); 
     
    213159 
    214160        } 
    215  
    216         /** 
    217          * Crée un templates 
    218          */ 
    219         public final void xLoadTemplates(IWComposant pComposant, String pSource) throws Exception { 
    220  
    221                 if (pSource != null && !pSource.equals("")) { 
    222                         XMLReader vXmlReader = HPoolXmlReader.hGet().hGetXmlReader(true, false); 
    223                         try { 
    224                                 // On prépare... 
    225                                 TransformerFactory vTransFact = new TransformerFactoryImpl(); 
    226  
    227                                 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); 
    228                                 vResolver.hSetAliasResolver((IHAliasResolver) pComposant); 
    229  
    230                                 vTransFact.setURIResolver(vResolver); 
    231                                 SAXSource vSource = null; 
    232  
    233                                 vXmlReader.setEntityResolver(vResolver); 
    234                                 InputSource vInputSource = new InputSource(new StringReader(pSource.trim())); 
    235                                 vInputSource.setSystemId(vResolver.hGetSystemId()); 
    236                                 vSource = new SAXSource(vXmlReader, vInputSource); 
    237  
    238                                 // On cree le template 
    239                                 fTemplate = vTransFact.newTemplates(vSource); 
    240  
    241                         } catch (Exception e) { 
    242                                 fTemplate = null; 
    243                                 throw (Exception) HLogMgr.hAddMessage(e, "Echec à la compilation d'un template XSL de '" + pComposant.toString() + "':\n" + pSource); 
    244                         } finally { 
    245                                 HPoolXmlReader.hGet().hFreeXmlReader(vXmlReader); 
    246                         } 
    247                 } 
    248         } 
    249161} 
Note: See TracChangeset for help on using the changeset viewer.