Package ui.repeaterediting

Source Code of ui.repeaterediting.Controller$CartItem

/*
* Copyright 2004-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* $Header:$
*/
package ui.repeaterediting;

import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;

import org.apache.beehive.controls.api.bean.Control;
import org.apache.beehive.netui.pageflow.annotations.Jpf;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.Forward;
import org.apache.beehive.netui.pageflow.FormData;
import org.apache.beehive.samples.controls.pets.Pets;
import org.apache.beehive.samples.netui.beans.PetType;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
*/
@Jpf.Controller(
    messageBundles={
        @Jpf.MessageBundle(bundlePath="org.apache.beehive.samples.netui.resources.repeaterediting.messages")
    },
    forwards=@Jpf.Forward(name="success", path="index.jsp")
)
public class Controller
    extends PageFlowController {

    private static final double GIFT_WRAP_PRICE = 4.95;

    @Control()
    private Pets _petControl;

    private CartForm _cartForm;

    @Jpf.Action(
        forwards=
            @Jpf.Forward(name="success", path="index.jsp",
                actionOutputs=@Jpf.ActionOutput(name="totalPrice", type=java.lang.Double.class))
    )
    public Forward begin() {
        PetType[] pets = _petControl.getPetList();
        CartItem[] items = new CartItem[pets.length];
        for(int i = 0; i < items.length; i++) {
            items[i] = new PetCartItem(pets[i]);
            items[i].setQuantity(1);
            items[i].setGiftWrap(false);
        }

        _cartForm = new CartForm(items);

        Forward forward = new Forward("success");
        forward.addOutputForm(_cartForm);
        forward.addActionOutput("totalPrice", calculatePrice(_cartForm.getItems()));
        return forward;
    }

    @Jpf.Action(
        useFormBean="_cartForm",
        validationErrorForward=@Jpf.Forward(name="failure", navigateTo=Jpf.NavigateTo.currentPage)
    )
    public Forward update(CartForm cart) {
        Forward forward = new Forward("success");
        forward.addOutputForm(cart);
        forward.addActionOutput("totalPrice", calculatePrice(cart.getItems()));
        return forward;
    }

    private double calculatePrice(CartItem[] items) {
        double price = 0.0;
        for(CartItem item : items) {
            price += item.getQuantity() * item.getPrice();
            if(item.isGiftWrap())
                price += GIFT_WRAP_PRICE;
        }
        return price;
    }

    public static class CartForm
        extends FormData
        implements Serializable {

        private CartItem[] _items;

        public CartForm() {}

        public CartForm(CartItem[] items) {
            _items = items;
        }

        public CartItem[] getItems() {
            return _items;
        }

        public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
            ActionErrors errors = new ActionErrors();

            for(int i = 0; i < _items.length; i++) {
                CartItem item = _items[i];
                if(item.getQuantity() <= 0) {
                    errors.add("invalidQuantity" + i, new ActionMessage("invalidquantity", item.getQuantity()));
                }
            }

            return errors;
        }
    }

    public static abstract class CartItem
        implements Serializable {

        private int _quantity;
        private boolean _giftWrap;

        public int getQuantity() {
            return _quantity;
        }

        public void setQuantity(int quantity) {
            _quantity = quantity;
        }

        public boolean isGiftWrap() {
            return _giftWrap;
        }

        public void setGiftWrap(boolean giftWrap) {
            _giftWrap = giftWrap;
        }

        public abstract double getPrice();
    }

    public static class PetCartItem
        extends CartItem {

        private PetType _pet;

        public PetCartItem(PetType pet) {
            _pet = pet;
        }

        public int getPetId() {
            assert _pet != null;
            return _pet.getPetId();
        }

        public String getName() {
            assert _pet != null;
            return _pet.getName();
        }

        public double getPrice() {
            assert _pet != null;
            return _pet.getPrice();
        }

        public String getDescription() {
            assert _pet != null;
            return _pet.getDescription();
        }
    }
}
TOP

Related Classes of ui.repeaterediting.Controller$CartItem

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.