Package com.arcbees.gwtpwebsite.client.editor

Source Code of com.arcbees.gwtpwebsite.client.editor.OrderEditorPresenter$MyView

package com.arcbees.gwtpwebsite.client.editor;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;

import javax.inject.Inject;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;

import com.arcbees.gwtpwebsite.client.editor.components.CreditCardPresenter;
import com.arcbees.gwtpwebsite.client.event.FormUpdatedEvent;
import com.arcbees.gwtpwebsite.shared.domain.Order;
import com.arcbees.gwtpwebsite.shared.domain.Plan;
import com.google.inject.assistedinject.Assisted;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;

public class OrderEditorPresenter extends PresenterWidget<OrderEditorPresenter.MyView> implements OrderEditorUiHandlers {
    interface MyView extends View, HasUiHandlers<OrderEditorUiHandlers> {
        Order flush();

        void initialize(Order order);

        void setConstraintViolations(Iterable<ConstraintViolation<?>> constraintViolations);
    }

    static final Object SLOT_CREDIT_CARD = new Object();

    private final Plan plan;
    private final CreditCardPresenter creditCardPresenter;

    @Inject
    OrderEditorPresenter(EventBus eventBus,
                         MyView view,
                         CreditCardPresenter creditCardPresenter,
                         @Assisted Plan plan) {
        super(eventBus, view);

        this.plan = plan;
        this.creditCardPresenter = creditCardPresenter;

        getView().setUiHandlers(this);
    }

    public Order getOrder() {
        return getView().flush();
    }

    public Boolean isOrderValid() {
        Order order = getView().flush();
        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        Set<ConstraintViolation<Order>> violations = validator.validate(order);
        getView().setConstraintViolations(new ArrayList<ConstraintViolation<?>>(violations));

        boolean isCreditCardValid = creditCardPresenter.validate();
        boolean isOrderValid = violations.isEmpty() || onlyCardTokenIsNull(violations);

        return isOrderValid && isCreditCardValid;
    }

    @Override
    public void onBlur() {
        fireEvent(new FormUpdatedEvent());
    }

    @Override
    protected void onBind() {
        super.onBind();

        getView().initialize(order());
        setInSlot(SLOT_CREDIT_CARD, creditCardPresenter);
    }

    private boolean onlyCardTokenIsNull(Set<ConstraintViolation<Order>> violations) {
        boolean onlyCardTokenIsNull = false;

        if (violations.size() == 1) {
            Iterator<ConstraintViolation<Order>> iterator = violations.iterator();
            ConstraintViolation<Order> violation = iterator.next();

            if (violation.getPropertyPath().toString().equals("cardToken")) {
                onlyCardTokenIsNull = true;
            }
        }

        return onlyCardTokenIsNull;
    }

    private Order order() {
        Order order = new Order();

        order.setPlan(plan);

        return order;
    }
}
TOP

Related Classes of com.arcbees.gwtpwebsite.client.editor.OrderEditorPresenter$MyView

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.