package org.akaza.openclinica.control;
import org.akaza.openclinica.exception.OpenClinicaSystemException;
import org.jmesa.core.CoreContext;
import org.jmesa.facade.TableFacadeImpl;
import org.jmesa.limit.ExportType;
import org.jmesa.view.View;
import org.jmesa.view.csv.CsvViewExporter;
import org.jmesa.view.excel.ExcelViewExporter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OCTableFacadeImpl extends TableFacadeImpl {
private final HttpServletResponse response;
private final HttpServletRequest request;
private final String fileName;
public OCTableFacadeImpl(String id, HttpServletRequest request, HttpServletResponse response, String fileName) {
super(id, request);
this.response = response;
this.fileName = fileName + System.currentTimeMillis();
this.request = request;
}
@Override
protected View getExportView(ExportType exportType) {
if (exportType == ExportType.PDF) {
return new XmlView(getTable(), getCoreContext());
} else {
return super.getExportView(exportType);
}
}
@Override
protected void renderExport(ExportType exportType, View view) {
try {
CoreContext cc = getCoreContext();
if (exportType == ExportType.CSV) {
// new OCCsvViewExporter(view, cc, response, fileName).export();
new CsvViewExporter(view, cc, response, fileName + ".txt").export();
} else if (exportType == ExportType.EXCEL) {
new ExcelViewExporter(view, cc, response, fileName + ".xls").export();
} else if (exportType == ExportType.PDF) {
new XmlViewExporter(view, cc, request, response).export();
} else {
super.renderExport(exportType, view);
}
} catch (Exception e) {
throw new OpenClinicaSystemException(e);
// logger.error("Not able to perform the " + exportType + " export.");
}
}
}