001package org.apache.fulcrum.security.torque.turbine; 002/* 003 * Licensed to the Apache Software Foundation (ASF) under one 004 * or more contributor license agreements. See the NOTICE file 005 * distributed with this work for additional information 006 * regarding copyright ownership. The ASF licenses this file 007 * to you under the Apache License, Version 2.0 (the 008 * "License"); you may not use this file except in compliance 009 * with the License. You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, 014 * software distributed under the License is distributed on an 015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 016 * KIND, either express or implied. See the License for the 017 * specific language governing permissions and limitations 018 * under the License. 019 */ 020import java.sql.Connection; 021import java.util.List; 022 023import org.apache.fulcrum.security.entity.Role; 024import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer; 025import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer; 026import org.apache.fulcrum.security.torque.peer.managers.PeerRoleManager; 027import org.apache.fulcrum.security.util.DataBackendException; 028import org.apache.torque.NoRowsException; 029import org.apache.torque.TooManyRowsException; 030import org.apache.torque.TorqueException; 031import org.apache.torque.criteria.Criteria; 032/** 033 * This implementation persists to a database via Torque. 034 * 035 * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a> 036 * @version $Id:$ 037 */ 038public class TorqueTurbineRoleManagerImpl extends PeerRoleManager 039{ 040 041 /** Serial version */ 042 private static final long serialVersionUID = 1L; 043 044 /** 045 * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectAllRoles(java.sql.Connection) 046 */ 047 @Override 048 @SuppressWarnings("unchecked") 049 protected <T extends Role> List<T> doSelectAllRoles(Connection con) throws TorqueException 050 { 051 Criteria criteria = new Criteria(); 052 053 if ( (getCustomPeer())) { 054 try 055 { 056 TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance(); 057 058 return peerInstance.doSelect( criteria, con ); 059 } 060 catch ( DataBackendException e ) 061 { 062 throw new TorqueException( e ); 063 } 064 } else { 065 return (List<T>)TorqueTurbineRolePeer.doSelect(criteria, con); 066 } 067 } 068 069 /** 070 * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectById(java.lang.Integer, java.sql.Connection) 071 */ 072 @Override 073 @SuppressWarnings("unchecked") 074 protected <T extends Role> T doSelectById(Integer id, Connection con) throws NoRowsException, TooManyRowsException, TorqueException 075 { 076 if ( (getCustomPeer())) { 077 try 078 { 079 TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance(); 080 081 return peerInstance.retrieveByPK( id, con ); 082 } 083 catch ( DataBackendException e ) 084 { 085 throw new TorqueException( e ); 086 } 087 } else { 088 return (T) TorqueTurbineRolePeer.retrieveByPK(id, con); 089 } 090 } 091 092 /** 093 * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectByName(java.lang.String, java.sql.Connection) 094 */ 095 @Override 096 @SuppressWarnings("unchecked") 097 protected <T extends Role> T doSelectByName(String name, Connection con) throws NoRowsException, TooManyRowsException, TorqueException 098 { 099 Criteria criteria = new Criteria(); 100 criteria.setIgnoreCase(true); 101 criteria.setSingleRecord(true); 102 103 List<T> roles = null; 104 if ( (getCustomPeer())) { 105 try 106 { 107 TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance(); 108 109 criteria.where(peerInstance.getTableMap().getColumn(getColumnName()), name); 110 roles = peerInstance.doSelect( criteria, con ); 111 } 112 catch ( DataBackendException e ) 113 { 114 throw new TorqueException( e ); 115 } 116 } else { 117 criteria.where(TorqueTurbineRolePeer.ROLE_NAME, name); 118 roles = (List<T>) TorqueTurbineRolePeer.doSelect(criteria, con); 119 } 120 121 if (roles.isEmpty()) 122 { 123 throw new NoRowsException(name); 124 } 125 return roles.get(0); 126 } 127}