Changeset 7519
- Timestamp:
- 11/27/06 12:23:38 (5 years ago)
- Location:
- trunk/Jav_CO/com/scenari/m/co/donnee
- Files:
-
- 9 edited
-
WDonneeXsl.java (modified) (7 diffs)
-
WDonneeXslDouble.java (modified) (3 diffs)
-
WDonneeXslDynamique.java (modified) (2 diffs)
-
WDonneeXslMonoTemplate.java (modified) (5 diffs)
-
WDonneeXslOnSrcDynamique.java (modified) (2 diffs)
-
WDonneeXslOnSrcDynamique2.java (modified) (1 diff)
-
WDonneeXslStatique.java (modified) (1 diff)
-
WDonneeXslWebMacro.java (modified) (1 diff)
-
WDonneeXslXPath.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXsl.java
r7478 r7519 79 79 80 80 /** Template Xsl */ 81 protected TemplatesfTemplate = null;81 protected Object fTemplate = null; 82 82 83 83 /** … … 170 170 public void wSetValue(IHComposantType pCompType, String pValue, IHContextDonnee pContextDonnee) throws Exception { 171 171 if (pValue != null) { 172 xLoadTemplates(pCompType, pValue, pContextDonnee.hGetDocSource()); 173 } 174 xInitDonneeFc(pCompType); 172 XMLReader vXmlReader = HPoolXmlReader.hGet().hGetXmlReader(true, false); 173 try { 174 IHSource vDocSource = pContextDonnee.hGetDocSource(); 175 TransformerFactory vTransFact = new TransformerFactoryImpl(); 176 vDocSource.hSetAliasResolver((IHAliasResolver) pCompType); 177 178 vTransFact.setURIResolver(vDocSource); 179 vXmlReader.setEntityResolver(vDocSource); 180 SAXSource vSource = null; 181 InputSource vInputSource = new InputSource(new StringReader(pValue.trim())); 182 vInputSource.setSystemId(vDocSource.hGetSystemId()); 183 vSource = new SAXSource(vXmlReader, vInputSource); 184 fTemplate = vTransFact.newTemplates(vSource); 185 } catch (Exception e) { 186 fTemplate = null; 187 throw (Exception) HLogMgr.hAddMessage(e, "Echec à la compilation d'un template XSL du composant type '" + pCompType + "':\n" + pValue); 188 } finally { 189 HPoolXmlReader.hGet().hFreeXmlReader(vXmlReader); 190 } 191 } 175 192 } 176 193 … … 182 199 */ 183 200 public void wSetValueParRef(IHComposantType pCompType, IHSource pDocSource) throws java.lang.Exception { 184 xLoadTemplates(pCompType, null, pDocSource); 185 xInitDonneeFc(pCompType); 201 fTemplate = pDocSource; 186 202 } 187 203 … … 207 223 protected final void xGetValue(IHDialog pDialog, IWAgent pAgent, Object pArguments, Result pResult) throws Exception { 208 224 209 if (fTemplate != null) { 225 IWComposant vComposant = pAgent.hGetComposant(); 226 Templates vTemplate = xGetTemplate(vComposant.hGetComposantType()); 227 228 if (vTemplate != null) { 210 229 211 230 // On execute la XSL … … 215 234 vTo = System.currentTimeMillis(); 216 235 } 217 IWComposant vComposant = pAgent.hGetComposant(); 218 219 Transformer vTransformer = fTemplate.newTransformer(); 236 237 Transformer vTransformer = vTemplate.newTransformer(); 220 238 221 239 IHSource vResolver = vComposant.hGetUnivers().hGetEspacePublications().hFindSource(null); … … 249 267 250 268 /** 251 * Initialise la donnee lors de sa déclaration dans la feuille de 252 * comportement. 253 * 254 * @param pCompType 255 * com.scenari.m.co.composant.IHComposantType 256 */ 257 protected void xInitDonneeFc(IHComposantType pCompType) throws Exception { 258 } 259 260 /** 261 * Crée un templates. 262 * 263 */ 264 public final void xLoadTemplates(IHComposantType pCompType, String pContent, IHSource pDocSource) throws Exception { 265 XMLReader vXmlReader = HPoolXmlReader.hGet().hGetXmlReader(true, false); 266 try { 267 TransformerFactory vTransFact = new TransformerFactoryImpl(); 268 pDocSource.hSetAliasResolver((IHAliasResolver) pCompType); 269 270 vTransFact.setURIResolver(pDocSource); 271 vXmlReader.setEntityResolver(pDocSource); 272 SAXSource vSource = null; 273 if (pContent == null) { 274 // Le XSL est en ressource associée 275 // On mémorise la source et on cherche si ce template a édja été 276 // calculé. 277 InputStream vStream = pDocSource.hGetInputStream(); 278 if (vStream == null) { throw HLogMgr.hNewException("Le fichier template XSL '" + pDocSource + "' est introuvable."); } 269 * Récupération du template (compilation si nécessaire). 270 * 271 */ 272 protected synchronized Templates xGetTemplate(IHComposantType pCompType) throws Exception { 273 if (fTemplate ==null) return null; 274 if (fTemplate instanceof Templates) { 275 //Template déjà compilé 276 return (Templates) fTemplate; 277 } else { 278 //Template à compiler 279 IHSource vDocSource = (IHSource) fTemplate; 280 XMLReader vXmlReader = HPoolXmlReader.hGet().hGetXmlReader(true, false); 281 try { 282 TransformerFactory vTransFact = new TransformerFactoryImpl(); 283 vDocSource.hSetAliasResolver((IHAliasResolver) pCompType); 284 285 vTransFact.setURIResolver(vDocSource); 286 vXmlReader.setEntityResolver(vDocSource); 287 InputStream vStream = vDocSource.hGetInputStream(); 288 if (vStream == null) { throw HLogMgr.hNewException("Le fichier template XSL '" + vDocSource + "' est introuvable."); } 279 289 InputSource vInputSource = new InputSource(vStream); 280 vInputSource.setSystemId( pDocSource.hGetSystemId());281 vSource = new SAXSource(vXmlReader, vInputSource);290 vInputSource.setSystemId(vDocSource.hGetSystemId()); 291 SAXSource vSource = new SAXSource(vXmlReader, vInputSource); 282 292 try { 283 293 fTemplate = vTransFact.newTemplates(vSource); … … 285 295 vStream.close(); 286 296 } 287 } else { 288 // Le XSL est directement défini dans la feuille de comportement289 InputSource vInputSource = new InputSource(new StringReader(pContent.trim()));290 vInputSource.setSystemId(pDocSource.hGetSystemId());291 vSource = new SAXSource(vXmlReader, vInputSource);292 fTemplate = vTransFact.newTemplates(vSource);297 298 } catch (Exception e) { 299 fTemplate = null; 300 throw (Exception) HLogMgr.hAddMessage(e, "Echec à la compilation d'un template XSL du composant type '" + pCompType + "':\n" + vDocSource.toString()); 301 } finally { 302 HPoolXmlReader.hGet().hFreeXmlReader(vXmlReader); 293 303 } 294 295 } catch (Exception e) { 296 fTemplate = null; 297 throw (Exception) HLogMgr.hAddMessage(e, "Echec à la compilation d'un template XSL du composant type '" + pCompType + "':\n" + ((pContent == null) ? pDocSource.toString() : pContent)); 298 } finally { 299 HPoolXmlReader.hGet().hFreeXmlReader(vXmlReader); 304 return (Templates)fTemplate; 300 305 } 301 306 } -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslDouble.java
r7478 r7519 132 132 * 133 133 */ 134 public finalIAgentData wSetComposant(IWComposant pComposant, Element pNodeRoot, IHSource pSource) throws Exception {134 public IAgentData wSetComposant(IWComposant pComposant, Element pNodeRoot, IHSource pSource) throws Exception { 135 135 136 136 // On execute le XSL 137 Transformer vTransformer = fTemplate.newTransformer();137 Transformer vTransformer = xGetTemplate(pComposant.hGetComposantType()).newTransformer(); 138 138 139 139 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); … … 177 177 * 178 178 */ 179 p ublicfinal void xLoadTemplates(IWComposant pComposant, String pSource) throws Exception {179 protected final void xLoadTemplates(IWComposant pComposant, String pSource) throws Exception { 180 180 181 181 if (pSource != null && !pSource.equals("")) { … … 191 191 vTransFact.setURIResolver(vResolver); 192 192 SAXSource vSource = null; 193 194 // On cree la SaxSource en simulant l'URI dans la feuille de195 // comportement pour permettre l'import d'entités externes.196 // ** mis en commentaire : Pourquoi url de la FC et pas du197 // composant puisqu'one est au niveau statique (sys,198 // 2002/02/06)**199 // String vUri =200 // pComposant.hGetComposantType().hGetPrescrFormation().wGetUriSourceFC();201 // vResolver.hSetUriDocSource(vUri);202 193 vXmlReader.setEntityResolver(vResolver); 203 194 InputSource vInputSource = new InputSource(new StringReader(pSource.trim())); 204 195 vInputSource.setSystemId(vResolver.hGetSystemId()); 205 196 vSource = new SAXSource(vXmlReader, vInputSource); 206 // vSource.setSystemId(vUri); 207 197 208 198 // On cree le template 209 199 fTemplate = vTransFact.newTemplates(vSource); -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslDynamique.java
r7478 r7519 50 50 51 51 import com.scenari.m.co.agent.IWAgent; 52 import com.scenari.m.co.composant.IHComposantType;53 52 import com.scenari.m.co.composant.IWComposant; 54 53 import com.scenari.m.co.dialog.IHDialog; … … 121 120 } 122 121 123 /**124 *125 * Initialise la donnee lors de sa déclaration dans la feuille de comportement.126 *127 * @param pCompType com.scenari.m.co.composant.IHComposantType128 */129 protected final void xInitDonneeFc(IHComposantType pCompType) throws Exception {130 }131 132 122 } -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslMonoTemplate.java
r7478 r7519 39 39 package com.scenari.m.co.donnee; 40 40 41 import java.io.StringReader;42 41 import java.io.StringWriter; 43 import java.io.Writer;44 42 45 43 import javax.xml.transform.Transformer; 46 import javax.xml.transform.TransformerFactory;47 import javax.xml.transform.dom.DOMResult;48 44 import javax.xml.transform.dom.DOMSource; 49 import javax.xml.transform.sax.SAXSource;50 45 import javax.xml.transform.stream.StreamResult; 51 46 52 import org.w3c.dom.Document;53 47 import org.w3c.dom.Element; 54 import org.w3c.dom.Node;55 import org.xml.sax.InputSource;56 import org.xml.sax.XMLReader;57 48 58 import com.scenari.m.co.agent.IWAgent;59 49 import com.scenari.m.co.composant.IHComposantType; 60 50 import com.scenari.m.co.composant.IWComposant; 61 import com.scenari.m.co.dialog.IHDialog;62 51 import com.scenari.s.co.source.IHAliasResolver; 63 52 import com.scenari.s.co.source.IHSource; 64 import com.scenari.s.fw.log.HLogMgr;65 53 import com.scenari.s.fw.log.HTrace; 66 54 import com.scenari.s.fw.log.HTraceMgr; 67 import com.scenari.s.fw.util.xml.HPoolXmlReader;68 55 import com.scenari.s.fw.utils.HPoolBuffer; 69 import com.scenari.xsldom.xalan.processor.TransformerFactoryImpl;70 56 71 57 /** … … 75 61 * 76 62 */ 77 public class WDonneeXslMonoTemplate extends WDonneeXsl implements Cloneable {63 public class WDonneeXslMonoTemplate extends WDonneeXslDouble implements Cloneable { 78 64 79 65 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'."); … … 96 82 * 97 83 * 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 *138 84 * @see com.scenari.m.co.donnee.IAgentData#wSetComposant(com.scenari.m.co.composant.IWComposant, 139 85 * org.w3c.dom.Element, IHSource) … … 144 90 IHComposantType vCompType = pComposant.hGetComposantType(); 145 91 146 Transformer vTransformer = fTemplate.newTransformer();92 Transformer vTransformer = xGetTemplate(pComposant.hGetComposantType()).newTransformer(); 147 93 148 94 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); … … 213 159 214 160 } 215 216 /**217 * Crée un templates218 */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 template239 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 }249 161 } -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslOnSrcDynamique.java
r7458 r7519 43 43 import org.w3c.dom.Element; 44 44 45 import com.scenari.m.co.composant.IHComposantType;46 45 import com.scenari.m.co.composant.IWComposant; 47 46 import com.scenari.m.co.dialog.IHDialog; … … 98 97 } 99 98 100 /**101 * Initialise la donnee lors de sa déclaration dans la feuille de comportement.102 *103 * @param pCompType com.scenari.m.co.composant.IHComposantType104 */105 protected final void xInitDonneeFc(IHComposantType pCompType) throws Exception {106 }107 108 99 } -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslOnSrcDynamique2.java
r7478 r7519 122 122 IWComposant vComposant = vAgent.hGetComposant(); 123 123 124 Transformer vTransformer = fTemplate.newTransformer();124 Transformer vTransformer = xGetTemplate(vComposant.hGetComposantType()).newTransformer(); 125 125 126 126 IHSource vResolver = vComposant.hGetUnivers().hGetEspacePublications().hFindSource(null); -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslStatique.java
r7458 r7519 104 104 105 105 //On execute le XSL 106 Transformer vTransformer = fTemplate.newTransformer();106 Transformer vTransformer = xGetTemplate(pComposant.hGetComposantType()).newTransformer(); 107 107 108 108 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslWebMacro.java
r7458 r7519 109 109 IHComposantType vCompType = pComposant.hGetComposantType(); 110 110 111 Transformer vTransformer = fTemplate.newTransformer();111 Transformer vTransformer = xGetTemplate(vCompType).newTransformer(); 112 112 113 113 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null); -
trunk/Jav_CO/com/scenari/m/co/donnee/WDonneeXslXPath.java
r7458 r7519 107 107 108 108 //On execute le XSL 109 Transformer vTransformer = fTemplate.newTransformer();109 Transformer vTransformer = xGetTemplate(pComposant.hGetComposantType()).newTransformer(); 110 110 111 111 IHSource vResolver = pComposant.hGetUnivers().hGetEspaceSources().hFindSource(null);
Note: See TracChangeset
for help on using the changeset viewer.