All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.payneteasy.superfly.spring.AccountPolicyFactoryBean Maven / Gradle / Ivy

package com.payneteasy.superfly.spring;

import org.springframework.beans.factory.annotation.Required;

import com.payneteasy.superfly.dao.UserDao;
import com.payneteasy.superfly.password.PasswordGenerator;
import com.payneteasy.superfly.password.UserPasswordEncoder;
import com.payneteasy.superfly.policy.account.AccountPolicy;
import com.payneteasy.superfly.policy.account.none.SimpleAccountPolicy;
import com.payneteasy.superfly.policy.account.pcidss.PCIDSSAccountPolicy;
import com.payneteasy.superfly.resetpassword.ResetPasswordStrategy;

/**
 * Factory bean for {@link AccountPolicy}.
 *
 * @author Roman Puchkovskiy
 */
public class AccountPolicyFactoryBean extends
        AbstractPolicyDependingFactoryBean {

    private UserDao userDao;

    private AccountPolicy accountPolicy;
    private UserPasswordEncoder userPasswordEncoder;
    private PasswordGenerator passwordGenerator;
    private ResetPasswordStrategy resetPasswordStrategy;

    @Required
    public void setResetPasswordStrategy(ResetPasswordStrategy resetPasswordStrategy) {
        this.resetPasswordStrategy = resetPasswordStrategy;
    }

    @Required
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Required
    public void setUserPasswordEncoder(UserPasswordEncoder userPasswordEncoder) {
        this.userPasswordEncoder = userPasswordEncoder;
    }

    @Required
    public void setPasswordGenerator(PasswordGenerator passwordGenerator) {
        this.passwordGenerator = passwordGenerator;
    }

    public AccountPolicy getObject() throws Exception {
        if (accountPolicy == null) {
            Policy policy = findPolicyByIdentifier();
            switch (policy) {
            case NONE:
                SimpleAccountPolicy simpleAccountPolicy = new SimpleAccountPolicy();
                simpleAccountPolicy.setUserDao(userDao);
                accountPolicy = simpleAccountPolicy;
                break;
            case PCIDSS:
                PCIDSSAccountPolicy pcidssAccountPolicy = new PCIDSSAccountPolicy();
                pcidssAccountPolicy.setUserDao(userDao);
                pcidssAccountPolicy.setUserPasswordEncoder(userPasswordEncoder);
                pcidssAccountPolicy.setPasswordGenerator(passwordGenerator);
                pcidssAccountPolicy.setResetPasswordStrategy(resetPasswordStrategy);
                accountPolicy = pcidssAccountPolicy;
                break;
            default:
                throw new IllegalStateException("Unknown policy: " + policy);
            }
        }
        return accountPolicy;
    }

    public Class getObjectType() {
        return AccountPolicy.class;
    }

    public boolean isSingleton() {
        return true;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy