View Javadoc
1   package org.apache.fulcrum.security.torque.turbine;
2   /*
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *   http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing,
14   * software distributed under the License is distributed on an
15   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16   * KIND, either express or implied.  See the License for the
17   * specific language governing permissions and limitations
18   * under the License.
19   */
20  import java.sql.Connection;
21  import java.util.List;
22  
23  import org.apache.fulcrum.security.entity.Role;
24  import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePeer;
25  import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
26  import org.apache.fulcrum.security.torque.peer.managers.PeerRoleManager;
27  import org.apache.fulcrum.security.util.DataBackendException;
28  import org.apache.torque.NoRowsException;
29  import org.apache.torque.TooManyRowsException;
30  import org.apache.torque.TorqueException;
31  import org.apache.torque.criteria.Criteria;
32  /**
33   * This implementation persists to a database via Torque.
34   *
35   * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
36   * @version $Id:$
37   */
38  public class TorqueTurbineRoleManagerImpl extends PeerRoleManager 
39  {
40  
41  	/** Serial version */
42  	private static final long serialVersionUID = 1L;
43  
44  	/**
45       * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectAllRoles(java.sql.Connection)
46       */
47      @Override
48  	@SuppressWarnings("unchecked")
49  	protected <T extends Role> List<T> doSelectAllRoles(Connection con) throws TorqueException
50      {
51          Criteria criteria = new Criteria();
52  
53          if ( (getCustomPeer())) {
54              try
55              {
56              	TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance();
57              	
58                  return peerInstance.doSelect( criteria, con );
59              }
60              catch ( DataBackendException e )
61              {
62                  throw new TorqueException( e );
63              }
64          } else {
65              return (List<T>)TorqueTurbineRolePeer.doSelect(criteria, con);
66          }
67      }
68  
69      /**
70       * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectById(java.lang.Integer, java.sql.Connection)
71       */
72      @Override
73  	@SuppressWarnings("unchecked")
74  	protected <T extends Role> T doSelectById(Integer id, Connection con) throws NoRowsException, TooManyRowsException, TorqueException
75      {
76          if ( (getCustomPeer())) {
77              try
78              {
79              	TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance();
80              	
81                  return peerInstance.retrieveByPK( id, con );
82              }
83              catch ( DataBackendException e )
84              {
85                  throw new TorqueException( e );
86              }
87          } else {
88              return  (T)  TorqueTurbineRolePeer.retrieveByPK(id, con);
89          }
90      }
91  
92      /**
93       * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectByName(java.lang.String, java.sql.Connection)
94       */
95      @Override
96  	@SuppressWarnings("unchecked")
97  	protected <T extends Role> T doSelectByName(String name, Connection con) throws NoRowsException, TooManyRowsException, TorqueException
98      {
99          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 }