| 1 19 package org.openbravo.erpCommon.utility; 20 21 import java.util.Iterator ; 22 23 import net.sf.jasperreports.engine.JRException; 24 import net.sf.jasperreports.engine.design.JRDesignBand; 25 import net.sf.jasperreports.engine.design.JRDesignExpression; 26 import net.sf.jasperreports.engine.design.JRDesignExpressionChunk; 27 import net.sf.jasperreports.engine.design.JRDesignField; 28 import net.sf.jasperreports.engine.design.JRDesignStaticText; 29 import net.sf.jasperreports.engine.design.JRDesignTextField; 30 import net.sf.jasperreports.engine.design.JasperDesign; 31 32 public class ReportDesignBO { 33 private int px = 0; 34 35 private int pageWidth = 0; 36 37 private JasperDesign jasperDesign; 38 39 private GridReportVO gridReportVO; 40 41 public ReportDesignBO(JasperDesign jasperDesign, GridReportVO gridReportVO) { 42 super(); 43 this.jasperDesign = jasperDesign; 44 this.gridReportVO = gridReportVO; 45 this.pageWidth = jasperDesign.getPageWidth() 46 - jasperDesign.getLeftMargin() - jasperDesign.getRightMargin(); 47 } 48 49 private void addField(GridColumnVO columnVO) throws JRException { 50 addFieldHeader(columnVO); 51 addFieldValue(columnVO); 52 px += calcPorc(columnVO.getWidth()); 53 } 54 55 private void addFieldHeader(GridColumnVO columnVO) { 56 JRDesignBand bHeader = (JRDesignBand) jasperDesign.getColumnHeader(); 57 JRDesignStaticText text = new JRDesignStaticText(); 58 text.setText(columnVO.getTitle()); 59 text.setWidth(calcPorc(columnVO.getWidth())); 60 text.setHeight(bHeader.getHeight()); 61 text.setX(px); 62 text.setFontName(gridReportVO.getHeaderBandStyle().getFontName()); 64 text.setFontSize(gridReportVO.getHeaderBandStyle().getFontSize()); 65 text.setForecolor(gridReportVO.getHeaderBandStyle().getForeColor()); 66 text.setBold(gridReportVO.getHeaderBandStyle().isBold()); 67 text.setItalic(gridReportVO.getHeaderBandStyle().isItalic()); 68 text.setUnderline(gridReportVO.getHeaderBandStyle().isUnderline()); 69 bHeader.addElement(text); 70 } 71 72 private void addFieldValue(GridColumnVO columnVO) throws JRException { 73 JRDesignBand bDetalle = (JRDesignBand) jasperDesign.getDetail(); 74 75 JRDesignField f = new JRDesignField(); 76 f.setName(columnVO.getDbName()); 77 f.setValueClass(columnVO.getFieldClass()); 78 jasperDesign.addField(f); 79 80 JRDesignExpressionChunk chunk = new JRDesignExpressionChunk(); 81 chunk.setText(columnVO.getDbName()); 82 chunk.setType(JRDesignExpressionChunk.TYPE_FIELD); 83 JRDesignExpression expression = new JRDesignExpression(); 84 expression.addChunk(chunk); 85 expression.setValueClass(columnVO.getFieldClass()); 86 JRDesignTextField textField = new JRDesignTextField(); 87 textField.setWidth(calcPorc(columnVO.getWidth())); 88 textField.setHeight(bDetalle.getHeight()); 89 textField.setX(px); 90 textField.setExpression(expression); 91 textField.setBlankWhenNull(true); 92 textField.setFontName(gridReportVO.getDetailBandStyle().getFontName()); 93 textField.setFontSize(gridReportVO.getDetailBandStyle().getFontSize()); 94 textField.setForecolor(gridReportVO.getDetailBandStyle().getForeColor()); 95 textField.setBold(gridReportVO.getDetailBandStyle().isBold()); 96 textField.setItalic(gridReportVO.getDetailBandStyle().isItalic()); 97 textField.setUnderline(gridReportVO.getDetailBandStyle().isUnderline()); 98 99 bDetalle.addElement(textField); 100 } 101 102 private int calcPorc(int width) { 103 if (gridReportVO.getPagination()){ 104 return width; 105 } else { 106 return width * pageWidth / gridReportVO.getTotalWidth(); 107 } 108 } 109 110 public void define() throws JRException { 111 defineTitle(gridReportVO.getTitle()); 112 Iterator it = gridReportVO.getColumns().iterator(); 113 while (it.hasNext()) { 115 addField((GridColumnVO) it.next()); 116 } 117 } 118 119 private void defineTitle(String title) throws JRException { 120 JRDesignBand bTitulo = (JRDesignBand) jasperDesign.getTitle(); 121 JRDesignStaticText text = (JRDesignStaticText) bTitulo 122 .getElementByKey("staticTitle"); 123 text.setText(title); 124 } 125 126 } 127 | Popular Tags |