Package org.apache.myfaces.examples.common

Source Code of org.apache.myfaces.examples.common.CarConfigurator$Color

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.
*/
package org.apache.myfaces.examples.common;

import org.apache.myfaces.examples.util.LocalizedSelectItem;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
* @author Thomas Spiegl (latest modification by $Author: paulsp $)
* @version $Revision: 520433 $ $Date: 2007-03-20 16:37:23 +0100 (Di, 20 Mär 2007) $
*/
public class CarConfigurator
        implements Serializable
{

    /**
     * serial id for serialisation
     */
    private static final long serialVersionUID = 1L;
    private static List _cars;
    private static List _colors;
    private static List _extrasList;
    private static HashMap _priceList = new HashMap();
    private static HashMap _priceFactorColors = new HashMap();
    private static HashMap _priceListExtras = new HashMap();
    static
    {
        _cars = new ArrayList();
        _colors = new ArrayList();
        _extrasList = new ArrayList();

        _cars.add(new SelectItem("c1", "Audee X6", null));
        _cars.add(new SelectItem("c2", "PMW 321u", null));
        _cars.add(new SelectItem("c3", "Masta ZX7", null));
        _cars.add(new SelectItem("c4", "Renolt ESP", null));
        _cars.add(new SelectItem("c5", "WV Lumpo", null));
        _cars.add(new SelectItem("c6", "James Blond Car", null));
        _cars.add(new SelectItem("c7", "Neko Bus", null));

        _colors.add(new LocalizedSelectItem(new Color("color_black"),"color_black"));
        _colors.add(new LocalizedSelectItem(new Color("color_blue"),"color_blue"));
        _colors.add(new LocalizedSelectItem(new Color("color_marine"),"color_marine"));
        _colors.add(new LocalizedSelectItem(new Color("color_red"),"color_red"));

        _extrasList.add(new LocalizedSelectItem("extra_aircond"));
        _extrasList.add(new LocalizedSelectItem("extra_sideab"));
        _extrasList.add(new LocalizedSelectItem("extra_mirrowheat"));
        _extrasList.add(new LocalizedSelectItem("extra_leaderseat"));

        _priceList.put("c1", new BigDecimal(30000));
        _priceList.put("c2", new BigDecimal(32000));
        _priceList.put("c3", new BigDecimal(20000));
        _priceList.put("c4", new BigDecimal(25000));
        _priceList.put("c5", new BigDecimal(10000));
        _priceList.put("c6", new BigDecimal(100000000));
        _priceList.put("c7", new BigDecimal(1000000000));

        _priceFactorColors.put("color_black", new BigDecimal(1.15));
        _priceFactorColors.put("color_blue", new BigDecimal(1.10));
        _priceFactorColors.put("color_marine", new BigDecimal(1.05));
        _priceFactorColors.put("color_red", new BigDecimal(1.0));

        _priceListExtras.put("extra_aircond", new BigDecimal(510));
        _priceListExtras.put("extra_sideab", new BigDecimal(1220));
        _priceListExtras.put("extra_mirrowheat", new BigDecimal(1230));
        _priceListExtras.put("extra_leaderseat", new BigDecimal(840));
    }


    private BigDecimal _price = new BigDecimal(0);
    private String[] _extras;
    private String _discount = "0";
    private String _discount2 = "0";
    private String _bandName;
    private String _car;
    private Color _color = new Color("color_blue");
    private List _interiorColors = null;
    private boolean _salesTax = false;
    private Long _doors = new Long(4);

    public CarConfigurator()
    {
    }


    public Long getDoors()
    {
        return _doors;
    }


    public void setDoors(Long doors)
    {
        this._doors = doors;
    }


    public List getCars()
    {
        return _cars;
    }

    public List getColors()
    {
        return _colors;
    }

    public List getExtrasList()
    {
        return _extrasList;
    }

    public String getCar()
    {
        return _car;
    }

    public void setCar(String car)
    {
        _car = car;
    }

    public Color getColor()
    {
        return _color;
    }

    public void setColor(Color color)
    {
        _color = color;
    }

    public List getInteriorColors()
    {
        return _interiorColors;
    }

    public void setInteriorColors(List interiorColors)
    {
        _interiorColors = interiorColors;
    }

    public BigDecimal getPrice()
    {
        return _price;
    }

    public void setPrice(BigDecimal price)
    {
        _price = price;
    }

    public String[] getExtras()
    {
        return _extras;
    }

    public void setExtras(String[] extras)
    {
        _extras = extras;
    }

    public String getDiscount()
    {
        return _discount;
    }

    public void setDiscount(String discount)
    {
        _discount = discount;
    }

    public String getDiscount2()
    {
        return _discount2;
    }

    public void setDiscount2(String discount2)
    {
        _discount2 = discount2;
    }

    public String getBandName()
    {
        return _bandName;
    }

    public void setBandName(String bandName)
    {
        _bandName = bandName;
    }

    public boolean isSalesTax()
    {
        return _salesTax;
    }

    public void setSalesTax(boolean salesTax)
    {
        _salesTax = salesTax;
    }

    public String calcPrice()
    {
        String car = getCar();
        Color color = getColor();
        if (car == null ||
            color == null)
        {
            _price = new BigDecimal(0);
            return "ok";
        }

        BigDecimal carprice = (BigDecimal)_priceList.get(car);
        BigDecimal colorfactor = (BigDecimal)_priceFactorColors.get(color.getColor());
        if (carprice == null ||
            colorfactor == null)
        {
            _price = new BigDecimal(0);
            return "ok";
        }
        _price = carprice.multiply(colorfactor);

        String[] extras = getExtras();
        if (extras != null)
        {
            for (int i = 0; i < extras.length; i++)
            {
                String extra = extras[i];
                _price = _price.add((BigDecimal)_priceListExtras.get(extra));
            }
        }

        if (_discount != null)
        {
            try
            {
                int i = Integer.parseInt(_discount);
                switch (i)
                {
                    case 0: break;
                    case 1: _price = _price.multiply(new BigDecimal(0.95)); break;
                    case 2: _price = _price.multiply(new BigDecimal(0.91)); break;
                }
            }
            catch (NumberFormatException e)
            {
            }
        }

        if (_discount2 != null)
        {
            try
            {
                int i = Integer.parseInt(_discount2);
                switch (i)
                {
                    case 1: _price = _price.multiply(new BigDecimal(0.85)); break;
                    case 2: _price = _price.multiply(new BigDecimal(0.80)); break;
                    case 3: _price = _price.multiply(new BigDecimal(0.6)); break;
                }
            }
            catch (NumberFormatException e)
            {
            }
        }

        if (_salesTax)
        {
            _price = _price.multiply(new BigDecimal(1.2));
        }

        return "ok";
    }


    public void validateCar(FacesContext context, UIComponent component, Object value) throws ValidatorException
    {
        if (value instanceof String && value.equals("c6"))
        {
            throw new ValidatorException(new FacesMessage("Are you kidding?", "You cannot buy a James Blond car!"));
        }
    }

    public Converter getColorConverter()
    {
        return new ColorConverter();
    }

    public static class ColorConverter implements Converter
    {

        public Object getAsObject(FacesContext facesContext, UIComponent component, String string) throws ConverterException
        {
            if(string==null)
                return null;

            return new Color(string);
        }

        public String getAsString(FacesContext facesContext, UIComponent component, Object object) throws ConverterException
        {
            if(object instanceof Color)
            {
                return ((Color) object).getColor();
            }

            return null;
        }
    }

    public static class Color implements Serializable
    {
        private String color;

        public Color(String color)
        {
            this.color = color;
        }

        public String getColor()
        {
            return color;
        }

        public void setColor(String color)
        {
            this.color = color;
        }

        public boolean equals(Object cmp)
        {
            if(!(cmp instanceof Color))
                return false;

            String cmpColor = ((Color) cmp).getColor();

            if(this.color == null && cmpColor!=null)
                return false;

            return this.color.equals(cmpColor);
        }
    }

}
TOP

Related Classes of org.apache.myfaces.examples.common.CarConfigurator$Color

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.