package net.rrm.ehour.ui.common.report.excel; import net.rrm.ehour.ui.common.session.EhourWebSession; import org.apache.poi.ss.usermodel.*; import java.util.Currency; import java.util.Locale; public enum ExcelStyle { NORMAL_FONT, BOLD_FONT { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { font.setBoldweight(Font.BOLDWEIGHT_BOLD); } }, DATE { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("d-mmm-yy")); } }, BOLD_DATE { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BOLD_FONT.apply(workbook, cellStyle, font); DATE.apply(workbook, cellStyle, font); } }, DIGIT { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { cellStyle.setDataFormat((short) 2); } }, CURRENCY { private short dataFormat = -1; @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { if (dataFormat == -1) { init(workbook); } cellStyle.setDataFormat(dataFormat); } private void init(Workbook workbook) { Locale currencyLocale = EhourWebSession.getEhourConfig().getCurrency(); Currency currency = Currency.getInstance(currencyLocale); String currencySymbol = currency.getSymbol(currencyLocale); String format = "$#,##0.00;[Red]($#,##0.00)".replace("$", currencySymbol); DataFormat dataFormat = workbook.createDataFormat(); this.dataFormat = dataFormat.getFormat(format); } }, BORDER_SOUTH { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { cellStyle.setBorderBottom(CellStyle.BORDER_MEDIUM); cellStyle.setBottomBorderColor(IndexedColors.BLACK.index); } }, BORDER_NORTH_THIN { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { cellStyle.setBorderTop(CellStyle.BORDER_THIN); cellStyle.setTopBorderColor(IndexedColors.BLACK.index); } }, DATE_BORDER_NORTH_THIN { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BORDER_NORTH_THIN.apply(workbook, cellStyle, font); DATE.apply(workbook, cellStyle, font); } }, DIGIT_BORDER_NORTH_THIN { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BORDER_NORTH_THIN.apply(workbook, cellStyle, font); DIGIT.apply(workbook, cellStyle, font); } }, BOLD_BORDER_SOUTH { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BORDER_SOUTH.apply(workbook, cellStyle, font); DIGIT.apply(workbook, cellStyle, font); } }, BORDER_NORTH { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM); cellStyle.setTopBorderColor(IndexedColors.BLACK.index); } }, BOLD_BORDER_NORTH { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BORDER_NORTH.apply(workbook, cellStyle, font); BOLD_FONT.apply(workbook, cellStyle, font); } }, DIGIT_BOLD_BORDER_NORTH { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BORDER_NORTH.apply(workbook, cellStyle, font); BOLD_FONT.apply(workbook, cellStyle, font); DIGIT.apply(workbook, cellStyle, font); } }, HEADER { @Override public void apply(Workbook workbook, CellStyle cellStyle, Font font) { BOLD_FONT.apply(workbook, cellStyle, font); BORDER_SOUTH.apply(workbook, cellStyle, font); cellStyle.setFillForegroundColor(IndexedColors.BLUE.index); cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); } }; public void apply(Workbook workbook, CellStyle cellStyle, Font font) { } }