com.hypersocket.auth.AuthenticationModuleRepositoryImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.hypersocket.auth.AuthenticationModuleRepositoryImpl.java

Source

/*******************************************************************************
 * Copyright (c) 2013 Hypersocket Limited.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 ******************************************************************************/
package com.hypersocket.auth;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import com.hypersocket.repository.AbstractEntityRepositoryImpl;
import com.hypersocket.repository.DeletedDetachedCriteria;
import com.hypersocket.repository.DetachedCriteriaConfiguration;
import com.hypersocket.repository.DistinctRootEntity;

@Repository
public class AuthenticationModuleRepositoryImpl extends AbstractEntityRepositoryImpl<AuthenticationModule, Long>
        implements AuthenticationModuleRepository {

    @Override
    public List<AuthenticationModule> getModulesForScheme(AuthenticationScheme scheme) {
        return allEntities(AuthenticationModule.class, new SchemeRestriction(scheme));
    }

    class SchemeRestriction implements DetachedCriteriaConfiguration {

        AuthenticationScheme scheme;

        SchemeRestriction(AuthenticationScheme scheme) {
            this.scheme = scheme;
        }

        @Override
        public void configure(DetachedCriteria criteria) {
            criteria.add(Restrictions.eq("scheme", scheme));

        }
    }

    public AuthenticationScheme getSchemeByResourceKey(String resourceKey) {
        return get("resourceKey", resourceKey, AuthenticationScheme.class);
    }

    public List<AuthenticationScheme> getAuthenticationSchemes() {

        return allEntities(AuthenticationScheme.class, new DeletedDetachedCriteria(false),
                new DistinctRootEntity());

    }

    public List<AuthenticationModule> getAuthenticationModules() {
        return allEntities(AuthenticationModule.class, new DeletedDetachedCriteria(false),
                new DistinctRootEntity());
    }

    public List<AuthenticationModule> getAuthenticationModulesByScheme(
            final AuthenticationScheme authenticationScheme) {
        return allEntities(AuthenticationModule.class, new DeletedDetachedCriteria(false), new DistinctRootEntity(),
                new DetachedCriteriaConfiguration() {

                    @Override
                    public void configure(DetachedCriteria criteria) {
                        criteria.add(Restrictions.eq("scheme", authenticationScheme));
                        criteria.addOrder(Order.asc("idx"));
                    }
                });
    }

    @Override
    public AuthenticationModule getModuleById(Long id) {
        return get("id", id, AuthenticationModule.class);
    }

    @Override
    public void updateSchemeModules(List<AuthenticationModule> moduleList) {
        for (AuthenticationModule module : moduleList) {
            saveEntity(module);
        }
    }

    public AuthenticationModule createAuthenticationModule(AuthenticationModule authenticationModule) {
        saveEntity(authenticationModule);

        return authenticationModule;
    }

    public AuthenticationModule updateAuthenticationModule(AuthenticationModule authenticationModule) {
        saveEntity(authenticationModule);
        return getModuleById(authenticationModule.getId());
    }

    public void deleteModule(AuthenticationModule authenticationModule) {
        authenticationModule.setDeleted(true);
        saveEntity(authenticationModule);
    }

    @Override
    protected Class<AuthenticationModule> getEntityClass() {
        return AuthenticationModule.class;
    }
}