001/*******************************************************************************
002 * Copyright 2018 The MIT Internet Trust Consortium
003 *
004 * Portions copyright 2011-2013 The MITRE Corporation
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 *   http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 *******************************************************************************/
018package org.mitre.openid.connect.repository.impl;
019
020import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
021
022import java.util.Collection;
023
024import javax.persistence.EntityManager;
025import javax.persistence.PersistenceContext;
026import javax.persistence.TypedQuery;
027
028import org.mitre.openid.connect.model.WhitelistedSite;
029import org.mitre.openid.connect.repository.WhitelistedSiteRepository;
030import org.mitre.util.jpa.JpaUtil;
031import org.springframework.stereotype.Repository;
032import org.springframework.transaction.annotation.Transactional;
033
034/**
035 * JPA WhitelistedSite repository implementation
036 *
037 * @author Michael Joseph Walsh, aanganes
038 *
039 */
040@Repository
041public class JpaWhitelistedSiteRepository implements WhitelistedSiteRepository {
042
043        @PersistenceContext(unitName="defaultPersistenceUnit")
044        private EntityManager manager;
045
046        @Override
047        @Transactional(value="defaultTransactionManager")
048        public Collection<WhitelistedSite> getAll() {
049                TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_ALL, WhitelistedSite.class);
050                return query.getResultList();
051        }
052
053        @Override
054        @Transactional(value="defaultTransactionManager")
055        public WhitelistedSite getById(Long id) {
056                return manager.find(WhitelistedSite.class, id);
057        }
058
059        @Override
060        @Transactional(value="defaultTransactionManager")
061        public void remove(WhitelistedSite whitelistedSite) {
062                WhitelistedSite found = manager.find(WhitelistedSite.class, whitelistedSite.getId());
063
064                if (found != null) {
065                        manager.remove(found);
066                } else {
067                        throw new IllegalArgumentException();
068                }
069        }
070
071        @Override
072        @Transactional(value="defaultTransactionManager")
073        public WhitelistedSite save(WhitelistedSite whiteListedSite) {
074                return saveOrUpdate(whiteListedSite.getId(), manager, whiteListedSite);
075        }
076
077        @Override
078        @Transactional(value="defaultTransactionManager")
079        public WhitelistedSite update(WhitelistedSite oldWhitelistedSite, WhitelistedSite whitelistedSite) {
080                // sanity check
081                whitelistedSite.setId(oldWhitelistedSite.getId());
082
083                return saveOrUpdate(oldWhitelistedSite.getId(), manager, whitelistedSite);
084        }
085
086        @Override
087        @Transactional(value="defaultTransactionManager")
088        public WhitelistedSite getByClientId(String clientId) {
089                TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_BY_CLIENT_ID, WhitelistedSite.class);
090                query.setParameter(WhitelistedSite.PARAM_CLIENT_ID, clientId);
091                return JpaUtil.getSingleResult(query.getResultList());
092        }
093
094        @Override
095        @Transactional(value="defaultTransactionManager")
096        public Collection<WhitelistedSite> getByCreator(String creatorId) {
097                TypedQuery<WhitelistedSite> query = manager.createNamedQuery(WhitelistedSite.QUERY_BY_CREATOR, WhitelistedSite.class);
098                query.setParameter(WhitelistedSite.PARAM_USER_ID, creatorId);
099
100                return query.getResultList();
101        }
102}