Package honeycrm.client.mvp.presenters

Source Code of honeycrm.client.mvp.presenters.CsvImportPresenter$Display

package honeycrm.client.mvp.presenters;

import honeycrm.client.csv.CsvImporter;
import honeycrm.client.dto.Dto;
import honeycrm.client.mvp.events.UpdateEvent;
import honeycrm.client.services.CreateServiceAsync;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;

public class CsvImportPresenter implements Presenter {
  public interface Display {
    HasClickHandlers getCancelBtn();
    HasClickHandlers getImportBtn();
    HasText getStatus();
    HasText getHeader();
    HasValue<String> getTextArea();
    Widget asWidget();
    void center();
    void hide();
  }

  private final CreateServiceAsync createService;
  private final SimpleEventBus eventBus;
  private final Display view;
  private final String module;
 
  public CsvImportPresenter(final CreateServiceAsync createService, final SimpleEventBus eventBus, final Display view, final String module) {
    this.createService = createService;
    this.eventBus = eventBus;
    this.view = view;
    this.module = module;
    bind();
  }

  private void bind() {
    view.getCancelBtn().addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        view.hide();
      }
    });
    view.getImportBtn().addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        importDto(getDtoArrayFromText(view.getTextArea().getValue()), 0);
      }
    });
  }

  public Dto[] getDtoArrayFromText(final String text) {
    final CsvImporter importer = CsvImporter.get(module);
    return importer.parse(text);
  }
 
  public void importDto(final Dto[] dtos, final int currentIndex) {
    if (0 == currentIndex) {
      view.getStatus().setText("Status: Started Import");
    }
   
    createService.create(dtos[currentIndex], new AsyncCallback<Long>() {
      @Override
      public void onSuccess(Long result) {
        view.getStatus().setText("Status: Imported " + String.valueOf(currentIndex) + " / " + dtos.length);

        final boolean isImportDone = currentIndex == dtos.length - 1;

        if (isImportDone) {
          view.getStatus().setText("Status: Import completed");
          eventBus.fireEvent(new UpdateEvent(module));
        } else {
          importDto(dtos, 1 + currentIndex);
        }
      }

      @Override
      public void onFailure(Throwable caught) {
        view.getStatus().setText("Status: Import failed.");
      }
    });
  }

  @Override
  public void go(HasWidgets container) {
    container.add(view.asWidget());
    view.center();
  }
}
TOP

Related Classes of honeycrm.client.mvp.presenters.CsvImportPresenter$Display

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.