private File createFile(FacesContext fc, String type, UIData uiData) { OutputTypeHandler outputHandler = null; String path = CoreUtils.getRealPath(fc, "/export"); File exportDir = new File(path); if (!exportDir.exists()) exportDir.mkdirs(); String pathWithoutExt = path + "/export_" + new Date().getTime(); if (getOutputTypeHandler() != null) outputHandler = getOutputTypeHandler(); else if (DataExporter.EXCEL_TYPE.equals(getType())) { outputHandler = new ExcelOutputHandler(pathWithoutExt + ".xls", fc, uiData.getId()); } else if (DataExporter.CSV_TYPE.equals(getType())) { outputHandler = new CSVOutputHandler(pathWithoutExt + ".csv"); } else if (DataExporter.PDF_TYPE.equals(getType())) { outputHandler = new PDFOutputHandler(pathWithoutExt + ".pdf", uiData.getId()); } else { outputHandler = NoopOutputHandler; } renderToHandler(outputHandler, uiData, fc); setMimeType(outputHandler.getMimeType()); return outputHandler.getFile(); }