1 /** 2 * Licensed under the Artistic License; you may not use this file 3 * except in compliance with the License. 4 * You may obtain a copy of the License at 5 * 6 * http://displaytag.sourceforge.net/license.html 7 * 8 * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR 9 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 10 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 11 */ 12 13 package org.displaytag.sample.decorators; 14 15 import org.apache.poi.hssf.usermodel.HSSFCell; 16 import org.apache.poi.hssf.usermodel.HSSFRow; 17 import org.apache.poi.hssf.usermodel.HSSFSheet; 18 import org.displaytag.decorator.hssf.DecoratesHssf; 19 20 21 /** 22 * Same idea implemented in HssfTableWriter applied to decorators. 23 * @see org.displaytag.render.HssfTableWriter 24 * @author Jorge L. Barroso 25 * @version $Revision$ ($Author$) 26 */ 27 public class HssfTotalWrapper extends TotalWrapperTemplate implements DecoratesHssf 28 { 29 30 private HSSFSheet sheet; 31 32 private HSSFCell currentCell; 33 34 private HSSFRow currentRow; 35 36 private int colNum; 37 38 protected void writeCityTotal(String city, double total) 39 { 40 this.writeTotal(city, total); 41 } 42 43 private void writeTotal(String value, double total) 44 { 45 if (this.assertRequiredState()) 46 { 47 int rowNum = this.sheet.getLastRowNum(); 48 this.currentRow = this.sheet.createRow(++rowNum); 49 this.colNum = 0; 50 prepareCell(); 51 prepareCell(); 52 prepareCell(); 53 this.currentCell.setCellValue("------------"); 54 55 this.currentRow = this.sheet.createRow(++rowNum); 56 this.colNum = 0; 57 prepareCell(); 58 prepareCell(); 59 this.currentCell.setCellValue(value + " Total:"); 60 prepareCell(); 61 this.currentCell.setCellValue(total); 62 } 63 } 64 65 private void prepareCell() 66 { 67 this.currentCell = this.currentRow.createCell((short) this.colNum++); 68 this.currentCell.setEncoding(HSSFCell.ENCODING_UTF_16); 69 } 70 71 protected void writeGrandTotal(double total) 72 { 73 this.writeTotal("Grand", total); 74 } 75 76 public void setSheet(HSSFSheet sheet) 77 { 78 this.sheet = sheet; 79 } 80 81 /** 82 * Asserts that the sheet property needed have been set by the client. 83 * @return true if the required properties are not null; false otherwise. 84 */ 85 private boolean assertRequiredState() 86 { 87 return this.sheet != null; 88 } 89 }