package org.sigmah.client.ui.presenter.contact.export; /* * #%L * Sigmah * %% * Copyright (C) 2010 - 2016 URD * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.form.ComboBox; import com.extjs.gxt.ui.client.widget.form.DateField; import com.extjs.gxt.ui.client.widget.form.Radio; import com.google.inject.ImplementedBy; import com.google.inject.Inject; import com.google.inject.Singleton; import org.sigmah.client.dispatch.CommandResultHandler; import org.sigmah.client.i18n.I18N; import org.sigmah.client.inject.Injector; import org.sigmah.client.page.Page; import org.sigmah.client.page.PageRequest; import org.sigmah.client.page.RequestParameter; import org.sigmah.client.ui.notif.N10N; import org.sigmah.client.ui.presenter.base.AbstractPagePresenter; import org.sigmah.client.ui.view.base.ViewPopupInterface; import org.sigmah.client.ui.view.contact.export.ExportContactsView; import org.sigmah.client.util.ClientUtils; import org.sigmah.shared.command.GetGlobalContactExports; import org.sigmah.shared.command.result.ListResult; import org.sigmah.shared.dto.GlobalContactExportDTO; import org.sigmah.shared.servlet.ServletConstants.Servlet; import org.sigmah.shared.servlet.ServletConstants.ServletMethod; import org.sigmah.shared.servlet.ServletUrlBuilder; import org.sigmah.shared.util.ExportUtils.ExportDataVersion; @Singleton public class ExportContactsPresenter extends AbstractPagePresenter<ExportContactsPresenter.View> { @ImplementedBy(ExportContactsView.class) public static interface View extends ViewPopupInterface { Button getSettingsButton(); Button getExportButton(); Button getSearchButton(); DateField getFromDate(); DateField getToDate(); ListStore<GlobalContactExportDTO> getPeriodsStore(); ComboBox<GlobalContactExportDTO> getPeriods(); Radio getLiveChoice(); Radio getBackupChoice(); } @Inject protected ExportContactsPresenter(View view, Injector injector) { super(view, injector); } @Override public void onBind() { // Search view.getSearchButton().addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { if (view.getFromDate().isValid() && view.getToDate().isValid()) { view.getPeriods().setEmptyText(""); dispatch.execute(new GetGlobalContactExports(view.getFromDate().getValue(), view.getToDate().getValue(), I18N.CONSTANTS.savedDateExportFormat()), new CommandResultHandler<ListResult<GlobalContactExportDTO>>() { @Override public void onCommandFailure(Throwable caught) { view.getPeriods().setEmptyText(I18N.CONSTANTS.adminChoiceProblem()); } @Override public void onCommandSuccess(ListResult<GlobalContactExportDTO> result) { view.getPeriodsStore().removeAll(); if (result != null) { if (result.getList().size() > 0) { view.getPeriods().setEmptyText(I18N.CONSTANTS.createProjectTypeFundingSelect()); view.getPeriodsStore().add(result.getList()); view.getPeriodsStore().commitChanges(); view.getPeriods().setEnabled(true); } else { N10N.warn("No Backup Export Found"); } } } }); } } }); // Export view.getExportButton().addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { final ServletUrlBuilder urlBuilder = new ServletUrlBuilder(injector.getAuthenticationProvider(), injector.getPageManager(), Servlet.EXPORT, ServletMethod.EXPORT_CONTACT_GLOBAL); urlBuilder.addParameter(RequestParameter.ID, auth().getOrganizationId()); if (view.getLiveChoice().getValue()) { urlBuilder.addParameter(RequestParameter.VERSION, ExportDataVersion.LIVE_DATA); ClientUtils.launchDownload(urlBuilder.toString()); view.hide(); } else { if (view.getPeriods().getValue() != null) { urlBuilder.addParameter(RequestParameter.VERSION, ExportDataVersion.BACKED_UP_DATA); urlBuilder.addParameter(RequestParameter.GLOBAL_EXPORT_ID, view.getPeriods().getValue().getId()); ClientUtils.launchDownload(urlBuilder.toString()); view.hide(); } else { N10N.warn("No Selected Backup Export"); } } } }); // Change Setting view.getSettingsButton().addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { eventBus.navigate(Page.CONTACT_EXPORTS_SETTING); }; }); } @Override public Page getPage() { return Page.CONTACT_EXPORTS; } @Override public void onPageRequest(PageRequest request) { // view.cleanForm(); setPageTitle(I18N.CONSTANTS.contactsExport()); } }