cz.muni.fi.pa036.betting.web.UserActionBean.java Source code

Java tutorial

Introduction

Here is the source code for cz.muni.fi.pa036.betting.web.UserActionBean.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa036.betting.web;

import cz.muni.fi.pa036.betting.model.Contact;
import cz.muni.fi.pa036.betting.model.User;
import cz.muni.fi.pa036.betting.service.ContactService;
import cz.muni.fi.pa036.betting.service.UserService;
import static cz.muni.fi.pa036.betting.web.EventActionBean.log;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Set;
import net.sourceforge.stripes.action.Before;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.RedirectResolution;
import net.sourceforge.stripes.action.Resolution;
import net.sourceforge.stripes.action.UrlBinding;
import net.sourceforge.stripes.controller.LifecycleStage;
import net.sourceforge.stripes.integration.spring.SpringBean;
import net.sourceforge.stripes.validation.SimpleError;
import net.sourceforge.stripes.validation.Validate;
import net.sourceforge.stripes.validation.ValidateNestedProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.DigestUtils;

/**
 *
 * @author Martin Malik <374128@mail.muni.cz>
 */
@UrlBinding("/user/{$event}/{user.id}")
public class UserActionBean extends BaseActionBean {

    final static Logger log = LoggerFactory.getLogger(UserActionBean.class);

    @SpringBean
    private UserService userService;

    @SpringBean
    private ContactService contactService;

    @ValidateNestedProperties(value = {
            @Validate(on = { "addAction" }, field = "login", maxlength = 100, required = true),
            @Validate(on = { "addAction",
                    "changeUserInformation" }, field = "password", maxlength = 100, required = true),
            @Validate(on = { "addAction" }, field = "name", maxlength = 255, required = true),
            @Validate(on = { "addAction" }, field = "surname", maxlength = 255, required = true),
            @Validate(on = { "addAction" }, field = "dateofbirth", required = true),
            @Validate(on = { "changeUserInformation" }, field = "email", maxlength = 255, required = true), })

    private User user;
    private String password;
    private String email;
    private String actualEmail;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getActualEmail() {
        return actualEmail;
    }

    public void setActualEmail(String actualEmail) {
        this.actualEmail = actualEmail;
    }

    public String actualEmail() {
        Set<Contact> contacts = user.getContacts();
        Contact email = new Contact();

        for (Contact c : contacts) {
            if (c.getType().equals("email")) {
                email = c;
                break;
            }
        }

        Contact contact = contactService.findById(email.getId());
        if (contact == null) {
            return "";
        } else {
            return contact.getValue();
        }

    }

    @Before(stages = LifecycleStage.BindingAndValidation)
    public void loadUserFromDatabase() {
        user = getLoggedUser();
        actualEmail = actualEmail();
    }

    @DefaultHandler
    public Resolution account() {
        log.debug("account()");
        return new ForwardResolution("/user/account.jsp");
    }

    public Resolution changeUserInformation() throws UnsupportedEncodingException {
        log.debug("changeUserInformation()");

        user.setPassword(DigestUtils.md5DigestAsHex(getPassword().getBytes("UTF-8")));

        Contact contact = new Contact();
        contact.setType("email");
        contact.setValue(email);
        contactService.save(contact);

        Set<Contact> contacts = new HashSet<Contact>();
        contacts.add(contact);
        user.setContacts(contacts);

        userService.save(user);
        System.out.println("------user ------" + user);
        return new ForwardResolution("/index.jsp");
    }

    public Resolution add() {
        log.debug("add()");
        return new ForwardResolution("/user/add.jsp");
    }

    public Resolution addAction() {
        log.debug("addAction()");
        userService.save(user);
        return new RedirectResolution("/index.jsp");
    }
}