1 25 package org.ofbiz.webtools.print.rmi; 26 27 import java.io.StringWriter ; 28 import java.io.Writer ; 29 import java.rmi.RemoteException ; 30 import java.rmi.server.RMIClientSocketFactory ; 31 import java.rmi.server.RMIServerSocketFactory ; 32 import java.rmi.server.UnicastRemoteObject ; 33 import java.util.Locale ; 34 import java.util.Map ; 35 36 import org.ofbiz.service.DispatchContext; 37 import org.ofbiz.widget.html.HtmlScreenRenderer; 38 import org.ofbiz.widget.screen.ScreenRenderer; 39 import org.ofbiz.entity.GenericValue; 40 import org.ofbiz.entity.GenericEntityException; 41 import org.ofbiz.base.util.UtilMisc; 42 43 50 51 public class FopPrintRemoteImpl extends UnicastRemoteObject implements FopPrintRemote { 52 53 public static final String module = FopPrintRemoteImpl.class.getName(); 54 55 protected HtmlScreenRenderer htmlScreenRenderer = new HtmlScreenRenderer(); 56 protected DispatchContext dctx = null; 57 protected Locale locale = null; 58 59 public FopPrintRemoteImpl(DispatchContext dctx, Locale locale, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException { 60 super(0, csf, ssf); 61 this.locale = locale; 62 this.dctx = dctx; 63 if (this.locale == null) { 64 this.locale = Locale.getDefault(); 65 } 66 } 67 68 public byte[] getXslFo(String screen, Map parameters) throws RemoteException { 69 GenericValue system = null; 71 try { 72 system = dctx.getDelegator().findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", "system")); 73 } catch (GenericEntityException e) { 74 throw new RemoteException (e.getMessage()); 75 } 76 parameters.put("userLogin", system); 77 if (!parameters.containsKey("locale")) { 78 parameters.put("locale", locale); 79 } 80 81 Writer writer = new StringWriter (); 83 try { 84 ScreenRenderer screens = new ScreenRenderer(writer, null, htmlScreenRenderer); 85 screens.populateContextForService(dctx, parameters); 86 screens.render(screen); 87 } catch (Throwable t) { 88 throw new RemoteException ("Problems rendering FOP XSL-FO", t); 89 } 90 return writer.toString().getBytes(); 91 } 92 } 93 | Popular Tags |