Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package bean; import com.liferay.faces.portal.context.LiferayFacesContext; import com.liferay.portal.theme.ThemeDisplay; import java.io.File; import java.io.FileOutputStream; import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; //import model.ClassDmSummary; //import class_summary.ClassSummary; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Font; /** * * @author misteam */ @ManagedBean @SessionScoped public class ClassDmData0 implements Serializable { /** * Creates a new instance of ClassDmData0 */ public ClassDmData0() { } /* * properties */ @ManagedProperty(value = "#{customEntityManagerFactory}") private CustomEntityManagerFactory customEntityManagerFactory; @ManagedProperty(value = "#{accountsWithSubsidiaryData}") private AccountsWithSubsidiaryData accountsWithSubsidiaryData; @ManagedProperty(value = "#{printController}") private PrintController printController; @ManagedProperty(value = "#{customDate}") private CustomDate customDate; @ManagedProperty(value = "#{exportData}") private ExportData exportData; @ManagedProperty(value = "#{dataConvert}") private DataConvert dataConvert; private List<List<Object[]>> classDmSummary; private List<Object[]> classDmSummaryPrint; /* * getter setter */ public CustomEntityManagerFactory getCustomEntityManagerFactory() { return customEntityManagerFactory == null ? customEntityManagerFactory = new CustomEntityManagerFactory() : customEntityManagerFactory; } public void setCustomEntityManagerFactory(CustomEntityManagerFactory customEntityManagerFactory) { this.customEntityManagerFactory = customEntityManagerFactory; } public AccountsWithSubsidiaryData getAccountsWithSubsidiaryData() { return accountsWithSubsidiaryData == null ? accountsWithSubsidiaryData = new AccountsWithSubsidiaryData() : accountsWithSubsidiaryData; } public void setAccountsWithSubsidiaryData(AccountsWithSubsidiaryData accountsWithSubsidiaryData) { this.accountsWithSubsidiaryData = accountsWithSubsidiaryData; } public PrintController getPrintController() { return printController == null ? printController = new PrintController() : printController; } public void setPrintController(PrintController printController) { this.printController = printController; } public CustomDate getCustomDate() { return customDate == null ? customDate = new CustomDate() : customDate; } public void setCustomDate(CustomDate customDate) { this.customDate = customDate; } public ExportData getExportData() { return exportData == null ? exportData = new ExportData() : exportData; } public void setExportData(ExportData exportData) { this.exportData = exportData; } public DataConvert getDataConvert() { return dataConvert == null ? dataConvert = new DataConvert() : dataConvert; } public void setDataConvert(DataConvert dataConvert) { this.dataConvert = dataConvert; } public List<List<Object[]>> getClassDmSummary() { return classDmSummary == null ? classDmSummary = new ArrayList<>() : classDmSummary; } public void setClassDmSummary(List<List<Object[]>> classDmSummary) { this.classDmSummary = classDmSummary; } public List<Object[]> getClassDmSummaryPrint() { return classDmSummaryPrint == null ? classDmSummaryPrint = new ArrayList<>() : classDmSummaryPrint; } public void setClassDmSummaryPrint(List<Object[]> classDmSummaryPrint) { this.classDmSummaryPrint = classDmSummaryPrint; } /* * methods */ public void init() { String query; if (FacesContext.getCurrentInstance().isPostback() == false) { beanclear(); getAccountsWithSubsidiaryData().beanclear(); } // query = "SELECT coa.accountCode FROM CoopFinChartOfAccounts coa WHERE coa.accountCode LIKE :accountCode AND coa.level = 5 ORDER BY coa.accountCode"; // getAccountsWithSubsidiaryData().setAccountCodes(getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory().createEntityManager().createQuery(query).setParameter("accountCode", "231215%").getResultList()); query = "SELECT coa.accountCode FROM CoopFinChartOfAccounts coa WHERE (coa.accountCode = :accountCode0 OR coa.accountCode = :accountCode1) AND coa.level = 5 ORDER BY coa.accountCode"; getAccountsWithSubsidiaryData() .setAccountCodes(getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory() .createEntityManager().createQuery(query).setParameter("accountCode0", "231203030") .setParameter("accountCode1", "231203060").getResultList()); getAccountsWithSubsidiaryData().setAccountCodesInclude(null); for (int i = 0; i < getAccountsWithSubsidiaryData().getAccountCodes().size(); i++) { getAccountsWithSubsidiaryData().getAccountCodesInclude().add(i, false); } } public void beanclear() { FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("classDmData0", null); } public String queryGenerator(String accountCodeParam, String selectedBatchParam) { String query; query = "SELECT x.row_number, " + "x.slNo, " + "x.acctno, " + "x.accountCode, " + "x.acctName, " + "x.balance, " + "x.acctStatus, " + "x.acctCreateDate, " + "x.postDate " + "FROM (SELECT row_number() OVER () AS row_number, " + "cls.slNo, " + "cls.acctno, " + "cls.accountCode, " + "cls.acctName, " + "cls.balance, " + "cls.acctStatus, " + "cls.acctCreateDate, " + "cls.postDate " + "FROM (SELECT DISTINCT ON (apd.acctno) " + "dms.dm_statement_recno AS slNo, " //"sl.dm_sl_no AS slNo, " + "apd.acctno AS acctno, " + "apd.account_code AS accountCode, " + "cls.acct_name AS acctName, " + "dms.balance AS balance, " //"sl.balance AS balance, " + "apd.acct_status AS acctStatus, " + "apd.acct_create_date AS acctCreateDate, " + "dms.statement_date AS postDate, " //"sl.post_date AS postDate, " + "cls.pdform AS pdform " + "FROM coop_fin_acct_profile_dtl apd " + "JOIN coop_fin_class_dm cls ON apd.acctno::text = cls.acctno::text " + "JOIN coop_fin_dm_statement dms ON cls.acctno::text = dms.acctno::text "; //"JOIN coop_fin_dm_sl sl ON cls.acctno::text = sl.acctno::text "; if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() != null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() != null) { query += "WHERE apd.acct_create_date BETWEEN '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "yyyy-MM-dd") + "' AND '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getAcctCreateDateTo(), "yyyy-MM-dd") + "' "; } else if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() != null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() == null) { query += "WHERE apd.acct_create_date BETWEEN '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "yyyy-MM-dd") + "' AND '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } else if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() == null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() == null) { query += "WHERE apd.acct_create_date BETWEEN '1900-01-01' AND '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } if (getAccountsWithSubsidiaryData().getReportDate() == null) { query += "AND dms.statement_date <= '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } else { query += "AND dms.statement_date <= '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getReportDate(), "yyyy-MM-dd") + "' "; } query += "AND apd.account_code = '" + accountCodeParam + "' "; if (getAccountsWithSubsidiaryData().getAmountFilter() != null && getAccountsWithSubsidiaryData().getAmountFilter().compareTo(BigDecimal.ZERO) == 1) { query += "AND dms.balance <= " + getAccountsWithSubsidiaryData().getAmountFilter(); } // new code below // query += "AND (apd.acct_status <> 'C') " // + "OR (apd.acct_status = 'C' " // + "AND sl.balance <> 0) "; // new code above query += " ORDER BY apd.acctno, dms.statement_date DESC, dms.dm_statement_recno DESC) cls " + "WHERE (cls.acctStatus = 'A') " + "OR (cls.acctStatus = 'C' " + "AND cls.balance <> 0) " + "OR (cls.acctStatus = 'O' " + "AND cls.balance <> 0) " + "ORDER BY cls.acctno) x "; if (!selectedBatchParam.equals("ALL")) { query += "WHERE x. row_number " + selectedBatchParam; } return query; } public void runReport() { getAccountsWithSubsidiaryData().setSelectedAccountCode(""); getAccountsWithSubsidiaryData().setAccountCodesFiltered(null); getAccountsWithSubsidiaryData().setNoOfRows(null); getAccountsWithSubsidiaryData().setGrandTotal(BigDecimal.ZERO); if (getAccountsWithSubsidiaryData().getAccountCodesInclude().contains(true)) { for (int i = 0; i < getAccountsWithSubsidiaryData().getAccountCodesInclude().size(); i++) { if (getAccountsWithSubsidiaryData().getAccountCodesInclude().get(i)) { getAccountsWithSubsidiaryData().getAccountCodesFiltered() .add(getAccountsWithSubsidiaryData().getAccountCodes().get(i)); } } } else { getAccountsWithSubsidiaryData() .setAccountCodesFiltered(getAccountsWithSubsidiaryData().getAccountCodes()); } computeTotal(); for (int i = 0; i < getAccountsWithSubsidiaryData().getAccountCodesFiltered().size(); i++) { getClassDmSummary().add(i, getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory().createEntityManager() .createNativeQuery(queryGenerator( getAccountsWithSubsidiaryData().getAccountCodesFiltered().get(i), "ALL")) .getResultList()); } getAccountsWithSubsidiaryData().setRunComplete(true); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Run complete", "")); } public void accountCodeMe() { getAccountsWithSubsidiaryData().setSubtotalPrint(BigDecimal.ZERO); setClassDmSummaryPrint(getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory() .createEntityManager() .createNativeQuery(queryGenerator(getAccountsWithSubsidiaryData().getSelectedAccountCode(), "ALL")) .getResultList()); getAccountsWithSubsidiaryData().setNoOfRowsPrint(getClassDmSummaryPrint().size()); for (int i = 0; i < getClassDmSummaryPrint().size(); i++) { getAccountsWithSubsidiaryData().setSubtotalPrint(getAccountsWithSubsidiaryData().getSubtotalPrint() .add(((BigDecimal) getClassDmSummaryPrint().get(i)[5]))); } getPrintController().method0(getClassDmSummaryPrint().size()); } public void batchMe() { try { setClassDmSummaryPrint(getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory() .createEntityManager() .createNativeQuery(queryGenerator(getAccountsWithSubsidiaryData().getSelectedAccountCode(), getPrintController().getSelectedBatch())) .getResultList()); } catch (Exception e) { } } public void computeTotal() { String query; for (int i = 0; i < getAccountsWithSubsidiaryData().getAccountCodesFiltered().size(); i++) { query = "FROM (SELECT DISTINCT ON (apd.acctno) " + "dms.dm_statement_recno AS slNo, " //"sl.dm_sl_no AS slNo, " + "apd.acctno AS acctno, " + "apd.account_code AS accountCode, " + "cls.acct_name AS acctName, " + "dms.balance AS balance, " //"sl.balance AS balance, " + "apd.acct_status AS acctStatus, " + "apd.acct_create_date AS acctCreateDate, " + "dms.statement_date AS postDate, " //"sl.post_date AS postDate, " + "cls.pdform AS pdform " + "FROM coop_fin_acct_profile_dtl apd " + "JOIN coop_fin_class_dm cls ON apd.acctno::text = cls.acctno::text " + "JOIN coop_fin_dm_statement dms ON cls.acctno::text = dms.acctno::text "; //"JOIN coop_fin_dm_sl sl ON cls.acctno::text = sl.acctno::text "; if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() != null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() != null) { query += "WHERE apd.acct_create_date BETWEEN '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "yyyy-MM-dd") + "' AND '" + getCustomDate().formatDate( getAccountsWithSubsidiaryData().getAcctCreateDateTo(), "yyyy-MM-dd") + "' "; } else if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() != null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() == null) { query += "WHERE apd.acct_create_date BETWEEN '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "yyyy-MM-dd") + "' AND '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } else if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() == null && getAccountsWithSubsidiaryData().getAcctCreateDateTo() == null) { query += "WHERE apd.acct_create_date BETWEEN '1900-01-01' AND '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } if (getAccountsWithSubsidiaryData().getReportDate() == null) { query += "AND dms.statement_date <= '" + getCustomDate().formatDate(getCustomDate().getCurrentDate(), "yyyy-MM-dd") + "' "; } else { query += "AND dms.statement_date <= '" + getCustomDate().formatDate(getAccountsWithSubsidiaryData().getReportDate(), "yyyy-MM-dd") + "' "; } query += "AND apd.account_code = '" + getAccountsWithSubsidiaryData().getAccountCodesFiltered().get(i) + "' "; if (getAccountsWithSubsidiaryData().getAmountFilter() != null && getAccountsWithSubsidiaryData().getAmountFilter().compareTo(BigDecimal.ZERO) == 1) { query += "AND dms.balance <= " + getAccountsWithSubsidiaryData().getAmountFilter(); } // new code below // query += "AND (apd.acct_status <> 'C') " // + "OR (apd.acct_status = 'C' " // + "AND sl.balance <> 0) "; // new code above query += " ORDER BY apd.acctno, dms.statement_date DESC, dms.dm_statement_recno DESC) cls " + "WHERE (cls.acctStatus = 'A') " + "OR (cls.acctStatus = 'C' " + "AND cls.balance <> 0) " + "OR (cls.acctStatus = 'O' " + "AND cls.balance <> 0) "; // + "ORDER BY cls.acctno"; getAccountsWithSubsidiaryData().getNoOfRows().add(i, (Long) getCustomEntityManagerFactory().getFinancialDbEntityManagerFactory() .createEntityManager().createNativeQuery("SELECT COUNT(cls) " + query).getResultList() .get(0)); getAccountsWithSubsidiaryData().getSubtotal().add(i, (BigDecimal) getCustomEntityManagerFactory() .getFinancialDbEntityManagerFactory().createEntityManager() .createNativeQuery("SELECT COALESCE(SUM(cls.balance), 0) " + query).getResultList().get(0)); getAccountsWithSubsidiaryData().setGrandTotal(getAccountsWithSubsidiaryData().getGrandTotal() .add(getAccountsWithSubsidiaryData().getSubtotal().get(i))); } } public void export0() { Integer columnNo; HSSFWorkbook workbook; HSSFSheet sheet; HSSFRow headerRow, dataRow, totalRow = null; HSSFCell cell; HSSFCellStyle cellStyle, boldStyle; HSSFFont font; ThemeDisplay themeDisplay = LiferayFacesContext.getInstance().getThemeDisplay(); getExportData().createFolder(null, themeDisplay, "Planong Damayan Report", "DESCRIPTION"); if (getExportData().getFilename() == null || getExportData().getFilename().length() == 0) { getExportData().setFilename("Default(" + new Date() + ")"); } getExportData().setFilename(getExportData().getFilename().replace(":", "")); try { getExportData().setFilename(getExportData().getFilename().concat(".xls")); workbook = new HSSFWorkbook(); cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00")); font = workbook.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); boldStyle = workbook.createCellStyle(); boldStyle.setFont(font); for (int i = 0; i < getAccountsWithSubsidiaryData().getAccountCodesFiltered().size(); i++) { try { sheet = workbook.createSheet(getDataConvert() .accountCodeConvert(getAccountsWithSubsidiaryData().getAccountCodesFiltered().get(i))); } catch (Exception e) { sheet = workbook.createSheet(getAccountsWithSubsidiaryData().getAccountCodesFiltered().get(i)); } headerRow = sheet.createRow((short) 0); columnNo = 0; cell = headerRow.createCell(columnNo++); cell.setCellValue(getDataConvert() .accountCodeConvert(getAccountsWithSubsidiaryData().getAccountCodesFiltered().get(i))); cell.setCellStyle(boldStyle); try { headerRow = sheet.createRow(headerRow.getRowNum() + 1); columnNo = 0; cell = headerRow.createCell(columnNo++); cell.setCellValue("As of " + getCustomDate() .formatDate(getAccountsWithSubsidiaryData().getReportDate(), "MM-dd-YYYY")); cell.setCellStyle(boldStyle); } catch (Exception e) { getAccountsWithSubsidiaryData().setReportDate(getCustomDate().getCurrentDate()); cell.setCellValue("As of " + getCustomDate() .formatDate(getAccountsWithSubsidiaryData().getReportDate(), "MM-dd-YYYY")); cell.setCellStyle(boldStyle); } if (getAccountsWithSubsidiaryData().getAcctCreateDateFrom() != null || getAccountsWithSubsidiaryData().getAcctCreateDateTo() != null) { headerRow = sheet.createRow(headerRow.getRowNum() + 1); columnNo = 0; cell = headerRow.createCell(columnNo++); cell.setCellValue(getAccountsWithSubsidiaryData().getAcctCreateDateTo() != null ? "Account Created Date: " + getCustomDate() .formatDate( getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "MM-dd-YYYY") .concat(" - ") .concat(getCustomDate().formatDate( getAccountsWithSubsidiaryData().getAcctCreateDateTo(), "MM-dd-YYYY")) : "Account Created Date: " + getCustomDate().formatDate( getAccountsWithSubsidiaryData().getAcctCreateDateFrom(), "MM-dd-YYYY")); cell.setCellStyle(boldStyle); } if ((getAccountsWithSubsidiaryData().getAmountFilter() != null && getAccountsWithSubsidiaryData().getAmountFilter().compareTo(BigDecimal.ZERO) == 1)) { headerRow = sheet.createRow(headerRow.getRowNum() + 1); columnNo = 0; cell = headerRow.createCell(columnNo++); cell.setCellValue("Amount Range: " + getDataConvert() .numericConvert(getAccountsWithSubsidiaryData().getAmountFilter().doubleValue())); cell.setCellStyle(boldStyle); } headerRow = sheet.createRow(headerRow.getRowNum() + 1); headerRow = sheet.createRow(headerRow.getRowNum() + 1); columnNo = 0; cell = headerRow.createCell(columnNo++); cell.setCellValue("Account No."); cell.setCellStyle(boldStyle); cell = headerRow.createCell(columnNo++); cell.setCellValue("Name"); cell.setCellStyle(boldStyle); cell = headerRow.createCell(columnNo++); cell.setCellValue("Account Status"); cell.setCellStyle(boldStyle); cell = headerRow.createCell(columnNo++); cell.setCellValue("Balance"); cell.setCellStyle(boldStyle); for (int ii = 0; ii < getClassDmSummary().get(i).size(); ii++) { columnNo = 0; dataRow = sheet.createRow(headerRow.getRowNum() + ii + 1); dataRow.createCell(columnNo++).setCellValue(getClassDmSummary().get(i).get(ii)[2].toString()); dataRow.createCell(columnNo++).setCellValue(getClassDmSummary().get(i).get(ii)[4].toString()); dataRow.createCell(columnNo++).setCellValue(getDataConvert() .acctStatusConvert(getClassDmSummary().get(i).get(ii)[6].toString().charAt(0))); cell = dataRow.createCell(columnNo++); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(((BigDecimal) getClassDmSummary().get(i).get(ii)[5]).doubleValue()); cell.setCellStyle(cellStyle); totalRow = sheet.createRow((short) dataRow.getRowNum() + 2); } if (getClassDmSummary().get(i).size() > 0) { cell = totalRow.createCell(1); cell.setCellValue("TOTAL"); cell.setCellStyle(boldStyle); cell = totalRow.createCell(2); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(getAccountsWithSubsidiaryData().getSubtotal().get(i).doubleValue()); cell.setCellStyle(cellStyle); } } FileOutputStream fileOutputStream = new FileOutputStream(getExportData().getFilename()); workbook.write(fileOutputStream); fileOutputStream.close(); getExportData().fileUploadByDL(getExportData().getFilename(), "Planong Damayan Report", themeDisplay, null); File file = new File(getExportData().getFilename()); if (file.exists()) { file.delete(); } } catch (Exception e) { System.out.print("classDmData0().export0() " + e); FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "An error occurred while generating excel file."); FacesContext.getCurrentInstance().addMessage(null, message); } } }