com.dp2345.controller.mall.member.ProfileController.java Source code

Java tutorial

Introduction

Here is the source code for com.dp2345.controller.mall.member.ProfileController.java

Source

/*
 * Copyright 2013-2015 cetvision.com. All rights reserved.
 * Support: http://www.cetvision.com
 * License: http://www.cetvision.com/license
 */
package com.dp2345.controller.mall.member;

import java.text.ParseException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.dp2345.CommonAttributes;
import com.dp2345.Setting;
import com.dp2345.controller.mall.BaseController;
import com.dp2345.entity.Area;
import com.dp2345.entity.Member;
import com.dp2345.entity.MemberAttribute;
import com.dp2345.entity.Member.Gender;
import com.dp2345.entity.MemberAttribute.Type;
import com.dp2345.service.AreaService;
import com.dp2345.service.MemberAttributeService;
import com.dp2345.service.MemberService;
import com.dp2345.util.SettingUtils;

/**
 * Controller -  - 
 * 
 * @author CETVISION CORP
 * @version 2.0.3
 */
@Controller("shopMemberProfileController")
@RequestMapping("/member/profile")
public class ProfileController extends BaseController {

    @Resource(name = "memberServiceImpl")
    private MemberService memberService;
    @Resource(name = "memberAttributeServiceImpl")
    private MemberAttributeService memberAttributeService;
    @Resource(name = "areaServiceImpl")
    private AreaService areaService;

    /**
     * E-mail?
     */
    @RequestMapping(value = "/check_email", method = RequestMethod.GET)
    public @ResponseBody boolean checkEmail(String email) {
        if (StringUtils.isEmpty(email)) {
            return false;
        }
        Member member = memberService.getCurrent();
        if (memberService.emailUnique(member.getEmail(), email)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 
     */
    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public String edit(ModelMap model) {
        model.addAttribute("genders", Gender.values());
        model.addAttribute("memberAttributes", memberAttributeService.findList());
        return "shop/member/profile/edit";
    }

    /**
     * 
     */
    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public String update(String email, HttpServletRequest request, RedirectAttributes redirectAttributes) {
        if (!isValid(Member.class, "email", email)) {
            return ERROR_VIEW;
        }
        Setting setting = SettingUtils.get();
        Member member = memberService.getCurrent();
        if (!setting.getIsDuplicateEmail() && !memberService.emailUnique(member.getEmail(), email)) {
            return ERROR_VIEW;
        }
        member.setEmail(email);
        List<MemberAttribute> memberAttributes = memberAttributeService.findList();
        for (MemberAttribute memberAttribute : memberAttributes) {
            String parameter = request.getParameter("memberAttribute_" + memberAttribute.getId());
            if (memberAttribute.getType() == Type.name || memberAttribute.getType() == Type.address
                    || memberAttribute.getType() == Type.zipCode || memberAttribute.getType() == Type.phone
                    || memberAttribute.getType() == Type.mobile || memberAttribute.getType() == Type.text
                    || memberAttribute.getType() == Type.select) {
                if (memberAttribute.getIsRequired() && StringUtils.isEmpty(parameter)) {
                    return ERROR_VIEW;
                }
                member.setAttributeValue(memberAttribute, parameter);
            } else if (memberAttribute.getType() == Type.gender) {
                Gender gender = StringUtils.isNotEmpty(parameter) ? Gender.valueOf(parameter) : null;
                if (memberAttribute.getIsRequired() && gender == null) {
                    return ERROR_VIEW;
                }
                member.setGender(gender);
            } else if (memberAttribute.getType() == Type.birth) {
                try {
                    Date birth = StringUtils.isNotEmpty(parameter)
                            ? DateUtils.parseDate(parameter, CommonAttributes.DATE_PATTERNS)
                            : null;
                    if (memberAttribute.getIsRequired() && birth == null) {
                        return ERROR_VIEW;
                    }
                    member.setBirth(birth);
                } catch (ParseException e) {
                    return ERROR_VIEW;
                }
            } else if (memberAttribute.getType() == Type.area) {
                Area area = StringUtils.isNotEmpty(parameter) ? areaService.find(Long.valueOf(parameter)) : null;
                if (area != null) {
                    member.setArea(area);
                } else if (memberAttribute.getIsRequired()) {
                    return ERROR_VIEW;
                }
            } else if (memberAttribute.getType() == Type.checkbox) {
                String[] parameterValues = request.getParameterValues("memberAttribute_" + memberAttribute.getId());
                List<String> options = parameterValues != null ? Arrays.asList(parameterValues) : null;
                if (memberAttribute.getIsRequired() && (options == null || options.isEmpty())) {
                    return ERROR_VIEW;
                }
                member.setAttributeValue(memberAttribute, options);
            }
        }
        memberService.update(member);
        addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
        return "redirect:edit.jhtml";
    }

}