package is.idega.idegaweb.egov.bpm.media;
import is.idega.idegaweb.egov.bpm.IWBundleStarter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import com.idega.block.process.presentation.beans.CasesSearchResultsHolder;
import com.idega.core.file.util.MimeTypeUtil;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.io.DownloadWriter;
import com.idega.io.MediaWritable;
import com.idega.io.MemoryFileBuffer;
import com.idega.presentation.IWContext;
import com.idega.util.FileUtil;
import com.idega.util.expression.ELUtil;
public class CasesSearchResultsExporter extends DownloadWriter implements MediaWritable {
public static final String ID_PARAMETER = "casesSearchResultsExportId",
ALL_CASES_DATA = "allCasesExportedId",
EXPORT_CONTACTS = "is-export-contacts",
SHOW_USER_COMPANY = "show-company";
private MemoryFileBuffer memory;
@Override
public String getMimeType() {
return MimeTypeUtil.MIME_TYPE_EXCEL_2;
}
@Override
public void init(HttpServletRequest req, IWContext iwc) {
String fileName = null;
IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc);
CasesSearchResultsHolder searchResultHolder = ELUtil.getInstance().getBean(
CasesSearchResultsHolder.SPRING_BEAN_IDENTIFIER);
boolean exportContacts = "y".equals(iwc.getParameter(EXPORT_CONTACTS));
boolean showCompany = "y".equals(iwc.getParameter(SHOW_USER_COMPANY));
if (iwc.isParameterSet(ID_PARAMETER)) {
String id = iwc.getParameter(ID_PARAMETER);
memory = searchResultHolder.getExportedSearchResults(id, exportContacts, showCompany);
fileName = iwrb.getLocalizedString("exported_search_results_in_excel_file_name", "Exported search results");
} else if (iwc.isParameterSet(ALL_CASES_DATA)) {
String instanceId = iwc.getParameter(ALL_CASES_DATA);
memory = searchResultHolder.getExportedCases(instanceId, exportContacts, showCompany);
fileName = iwrb.getLocalizedString("exported_all_cases_data", "Exported cases");
} else
return;
memory.setMimeType(MimeTypeUtil.MIME_TYPE_EXCEL_2);
setAsDownload(iwc, fileName.concat(".xls"), memory.length());
}
@Override
public void writeTo(OutputStream streamOut) throws IOException {
InputStream streamIn = new ByteArrayInputStream(memory.buffer());
FileUtil.streamToOutputStream(streamIn, streamOut);
streamOut.flush();
streamOut.close();
streamIn.close();
}
}