package commons.exporters.impl; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.List; public abstract class BaseExporter { protected List dataSet; protected abstract List fetchDataToExport(); protected abstract void setFileName(); public abstract List getFullFileName(); protected abstract void exportRecord(T record); protected String baseFolder; protected String zipFileName; protected abstract boolean createFile(); protected abstract void closeFile(); public void setBaseFolder(String baseFolder) { this.baseFolder = baseFolder; } public void setFileName(String zipFileName) { this.zipFileName = zipFileName; } public boolean runExport() { boolean res=true; dataSet = fetchDataToExport(); setFileName(); if (createFile()) { for (T currentRecord:dataSet) { exportRecord(currentRecord); } } else res = false; closeFile(); return res; } protected String formatNum(Float f, int dec) { if (f==null) return "0"; NumberFormat format = DecimalFormat.getInstance(); format.setRoundingMode(RoundingMode.FLOOR); format.setGroupingUsed(false); format.setMinimumFractionDigits(dec); format.setMaximumFractionDigits(dec); return format.format(f).replace(",","").replace(".", ""); } protected String formatNumber(Float f) { if (f==null) return "0"; NumberFormat format = DecimalFormat.getInstance(); format.setRoundingMode(RoundingMode.FLOOR); format.setGroupingUsed(false); format.setMinimumFractionDigits(0); format.setMaximumFractionDigits(0); return format.format(f); } }