1 25 package org.ofbiz.webapp.view; 26 27 import java.io.FileNotFoundException ; 28 import java.io.IOException ; 29 import javax.servlet.ServletContext ; 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 33 import jimm.datavision.Report; 34 import jimm.datavision.UserCancellationException; 35 36 import org.ofbiz.base.util.Debug; 37 import org.ofbiz.webapp.control.ContextFilter; 38 import org.ofbiz.entity.GenericDelegator; 39 import org.ofbiz.entity.jdbc.ConnectionFactory; 40 41 48 public class DataVisionViewHandler implements ViewHandler { 49 50 public static final String module = DataVisionViewHandler.class.getName(); 51 52 protected ServletContext context; 53 54 public void init(ServletContext context) throws ViewHandlerException { 55 this.context = context; 56 } 57 58 public void render(String name, String page, String info, String contentType, String encoding, HttpServletRequest request, HttpServletResponse response) throws ViewHandlerException { 59 62 if (request == null) { 63 throw new ViewHandlerException("The HttpServletRequest object was null, how did that happen?"); 64 } 65 if (page == null || page.length() == 0) { 66 throw new ViewHandlerException("View page was null or empty, but must be specified"); 67 } 68 if (info == null || info.length() == 0) { 69 throw new ViewHandlerException("View fnfo string was null or empty, but must be used to specify an Entity that is mapped to the Entity Engine datasource that the report will use."); 70 } 71 72 request.setAttribute(ContextFilter.FORWARDED_FROM_SERVLET, new Boolean (true)); 74 75 GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator"); 76 77 if (delegator == null) { 78 throw new ViewHandlerException("The delegator object was null, how did that happen?"); 79 } 80 81 try { 82 String datasourceName = delegator.getEntityHelperName(info); 83 84 Report report = new Report(); 85 report.setDatabaseConnection(ConnectionFactory.getConnection(datasourceName)); 86 87 94 95 Debug.logInfo("before reading file", module); 96 report.readFile(context.getRealPath(page)); 98 103 104 Debug.logInfo("before set layout engine", module); 105 report.setLayoutEngine(new jimm.datavision.layout.HTMLLE(response.getWriter())); 106 Debug.logInfo("before run report", module); 107 report.runReport(); Debug.logInfo("after run report, end", module); 109 } catch (UserCancellationException e) { 110 throw new ViewHandlerException("User cancelled report", e); 111 } catch (FileNotFoundException e) { 112 throw new ViewHandlerException("Report file not found [" + page + "]", e); 113 } catch (IOException ie) { 116 throw new ViewHandlerException("IO Error in region", ie); 117 } catch (java.sql.SQLException e) { 118 throw new ViewHandlerException("Database error while running report", e); 119 } catch (Exception e) { 120 throw new ViewHandlerException("Error in report", e); 121 } 124 } 125 } 126 | Popular Tags |