org.jasig.schedassist.web.security.DelegateCalendarAccountUserDetailsImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.jasig.schedassist.web.security.DelegateCalendarAccountUserDetailsImpl.java

Source

/**
 * Licensed to Jasig under one or more contributor license
 * agreements. See the NOTICE file distributed with this work
 * for additional information regarding copyright ownership.
 * Jasig 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.jasig.schedassist.web.security;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

import org.jasig.schedassist.impl.owner.NotRegisteredException;
import org.jasig.schedassist.model.ICalendarAccount;
import org.jasig.schedassist.model.IDelegateCalendarAccount;
import org.jasig.schedassist.model.IScheduleOwner;
import org.springframework.security.core.GrantedAuthority;

/**
 * {@link CalendarAccountUserDetails} implementation for {@link IDelegateCalendarAccount}s.
 *  
 * @author Nicholas Blair, nblair@doit.wisc.edu
 * @version $Id: DelegateCalendarAccountUserDetailsImpl.java 2306 2010-07-28 17:20:12Z npblair $
 */
public class DelegateCalendarAccountUserDetailsImpl implements CalendarAccountUserDetails {

    /**
     * 
     */
    private static final long serialVersionUID = 53706L;

    private static final String EMPTY = "";

    private final IDelegateCalendarAccount delegateCalendarAccount;
    private IScheduleOwner scheduleOwner;

    /**
     * 
     * @param delegateCalendarAccount
     */
    public DelegateCalendarAccountUserDetailsImpl(IDelegateCalendarAccount delegateCalendarAccount) {
        this(delegateCalendarAccount, null);
    }

    /**
     * @param delegateCalendarAccount
     * @param delegateScheduleOwner
     */
    public DelegateCalendarAccountUserDetailsImpl(IDelegateCalendarAccount delegateCalendarAccount,
            IScheduleOwner delegateScheduleOwner) {
        this.delegateCalendarAccount = delegateCalendarAccount;
        this.scheduleOwner = delegateScheduleOwner;
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#getAuthorities()
     */
    public Collection<GrantedAuthority> getAuthorities() {
        List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
        if (null != this.delegateCalendarAccount && this.delegateCalendarAccount.isEligible()) {
            authorities.add(SecurityConstants.DELEGATE_REGISTER);
        }

        if (null != this.scheduleOwner) {
            authorities.add(SecurityConstants.DELEGATE_OWNER);
            authorities.remove(SecurityConstants.DELEGATE_REGISTER);
        }

        return Collections.unmodifiableList(authorities);
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#getPassword()
     */
    public String getPassword() {
        return EMPTY;
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#getUsername()
     */
    public String getUsername() {
        return this.delegateCalendarAccount.getUsername();
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#isAccountNonExpired()
     */
    public boolean isAccountNonExpired() {
        return true;
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#isAccountNonLocked()
     */
    public boolean isAccountNonLocked() {
        return true;
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#isCredentialsNonExpired()
     */
    public boolean isCredentialsNonExpired() {
        return true;
    }

    /* (non-Javadoc)
     * @see org.springframework.security.userdetails.UserDetails#isEnabled()
     */
    public boolean isEnabled() {
        return null != this.delegateCalendarAccount ? this.delegateCalendarAccount.isEligible() : false;
    }

    /*
     * (non-Javadoc)
     * @see org.jasig.schedassist.web.security.CalendarAccountUserDetails#getActiveDisplayName()
     */
    public String getActiveDisplayName() {
        StringBuilder display = new StringBuilder();
        display.append(this.delegateCalendarAccount.getDisplayName());
        display.append(" (managed by ");
        display.append(this.delegateCalendarAccount.getAccountOwner().getUsername());
        display.append(")");
        return display.toString();

    }

    /*
     * (non-Javadoc)
     * @see org.jasig.schedassist.web.security.CalendarAccountUserDetails#getCalendarAccount()
     */
    @Override
    public ICalendarAccount getCalendarAccount() {
        return getDelegateCalendarAccount();
    }

    /**
     * 
     * @return the {@link IDelegateCalendarAccount}
     */
    public IDelegateCalendarAccount getDelegateCalendarAccount() {
        return this.delegateCalendarAccount;
    }

    /*
     * (non-Javadoc)
     * @see org.jasig.schedassist.web.security.CalendarAccountUserDetails#getScheduleOwner()
     */
    @Override
    public IScheduleOwner getScheduleOwner() throws NotRegisteredException {
        if (null == this.scheduleOwner) {
            throw new NotRegisteredException(this.delegateCalendarAccount + " is not registered");
        } else {
            return this.scheduleOwner;
        }
    }

    /*
     * (non-Javadoc)
     * @see org.jasig.schedassist.web.security.CalendarAccountUserDetails#isDelegate()
     */
    @Override
    public final boolean isDelegate() {
        return true;
    }

    /*
     * (non-Javadoc)
     * @see org.jasig.schedassist.web.security.CalendarAccountUserDetails#updateScheduleOwner(org.jasig.schedassist.model.IScheduleOwner)
     */
    @Override
    public void updateScheduleOwner(IScheduleOwner owner) {
        this.scheduleOwner = owner;
    }
}