package org.exoplatform.faq.webui.popup;
import java.io.InputStream;
import org.exoplatform.container.PortalContainer;
import org.exoplatform.download.DownloadService;
import org.exoplatform.download.InputStreamDownloadResource;
import org.exoplatform.faq.service.FAQService;
import org.exoplatform.faq.webui.FAQUtils;
import org.exoplatform.faq.webui.UIAnswersContainer;
import org.exoplatform.faq.webui.UIAnswersPortlet;
import org.exoplatform.faq.webui.ValidatorDataInput;
import org.exoplatform.ks.common.webui.BaseUIForm;
import org.exoplatform.ks.common.webui.UIPopupAction;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIPopupComponent;
import org.exoplatform.webui.core.lifecycle.UIFormLifecycle;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
import org.exoplatform.webui.form.UIFormStringInput;
@ComponentConfig(
lifecycle = UIFormLifecycle.class,
template = "app:/templates/faq/webui/popup/UIExportForm.gtmpl",
events = {
@EventConfig(listeners = UIExportForm.SaveActionListener.class),
@EventConfig(listeners = UIExportForm.CancelActionListener.class)
}
)
public class UIExportForm extends BaseUIForm implements UIPopupComponent {
// private final String TYPE_EXPORT = "ExportType";
private final String FILE_NAME = "FileName";
private String objectId = "";
public void activate() throws Exception {
}
public void deActivate() throws Exception {
}
public UIExportForm() {
addChild(new UIFormStringInput(FILE_NAME, null));
}
public void setObjectId(String objectId) {
this.objectId = objectId;
this.setActions(new String[] { "Save", "Cancel" });
}
static public class SaveActionListener extends EventListener<UIExportForm> {
@SuppressWarnings("unchecked")
public void execute(Event<UIExportForm> event) throws Exception {
UIExportForm exportForm = event.getSource();
String fileName = ((UIFormStringInput) exportForm.getChildById(exportForm.FILE_NAME)).getValue();
UIAnswersPortlet portlet = exportForm.getAncestorOfType(UIAnswersPortlet.class);
if (!ValidatorDataInput.fckContentIsNotEmpty(fileName)) {
exportForm.warning("UIExportForm.msg.nameFileExport");
event.getRequestContext().addUIComponentToUpdateByAjax(portlet);
return;
}
String typeFIle = "";
FAQService service = (FAQService) PortalContainer.getInstance().getComponentInstanceOfType(FAQService.class);
try {
DownloadService dservice = exportForm.getApplicationComponent(DownloadService.class);
InputStreamDownloadResource dresource;
InputStream fileInputStream = service.exportData(exportForm.objectId, true);
dresource = new InputStreamDownloadResource(fileInputStream, "text/xml");
typeFIle = ".zip";
dresource.setDownloadName(fileName + typeFIle);
String downloadLink = dservice.getDownloadLink(dservice.addDownloadResource(dresource));
event.getRequestContext().getJavascriptManager().addJavascript("ajaxRedirect('" + downloadLink + "');");
} catch (Exception e) {
event.getSource().log.debug("Fail to export data: ", e);
FAQUtils.findCateExist(service, portlet.findFirstComponentOfType(UIAnswersContainer.class));
exportForm.warning("UIQuestions.msg.admin-moderator-removed-action");
event.getRequestContext().addUIComponentToUpdateByAjax(portlet);
}
UIPopupAction popupAction = portlet.getChild(UIPopupAction.class);
popupAction.deActivate();
event.getRequestContext().addUIComponentToUpdateByAjax(popupAction);
}
}
static public class CancelActionListener extends EventListener<UIExportForm> {
public void execute(Event<UIExportForm> event) throws Exception {
UIExportForm exportForm = event.getSource();
UIAnswersPortlet portlet = exportForm.getAncestorOfType(UIAnswersPortlet.class);
UIPopupAction popupAction = portlet.getChild(UIPopupAction.class);
popupAction.deActivate();
event.getRequestContext().addUIComponentToUpdateByAjax(popupAction);
}
}
}