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.Permission;
24  import org.apache.fulcrum.security.torque.om.TorqueTurbinePermissionPeer;
25  import org.apache.fulcrum.security.torque.peer.TorqueTurbinePeer;
26  import org.apache.fulcrum.security.torque.peer.managers.PeerPermissionManager;
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 TorqueTurbinePermissionManagerImpl extends PeerPermissionManager 
39  {
40      
41      
42  	/** Serial version */
43  	private static final long serialVersionUID = 1L;
44  
45  	/**
46       * @see org.apache.fulcrum.security.torque.TorqueAbstractPermissionManager#doSelectAllPermissions(java.sql.Connection)
47       */
48      @Override
49  	@SuppressWarnings("unchecked")
50  	protected <T extends Permission> List<T> doSelectAllPermissions(Connection con) throws TorqueException
51      {
52          Criteria criteria = new Criteria();
53          
54          if ( (getCustomPeer())) {
55              try
56              {
57              	TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance();
58                  return peerInstance.doSelect( criteria, con );
59              }
60              catch ( DataBackendException e )
61              {
62                  throw new TorqueException( e );
63              }
64          } else {
65              return (List<T>)TorqueTurbinePermissionPeer.doSelect(criteria, con);
66          }
67  
68         
69      }
70  
71      /**
72       * @see org.apache.fulcrum.security.torque.TorqueAbstractPermissionManager#doSelectById(java.lang.Integer, java.sql.Connection)
73       */
74      @Override
75  	@SuppressWarnings("unchecked")
76  	protected <T extends Permission> T doSelectById(Integer id, Connection con) throws NoRowsException, TooManyRowsException, TorqueException
77      {
78          if ( (getCustomPeer())) {
79              try
80              {
81              	TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance();
82                  return peerInstance.retrieveByPK(id, con);
83              }
84              catch ( DataBackendException e )
85              {
86                  throw new TorqueException( e );
87              }
88          } else {
89              return (T) TorqueTurbinePermissionPeer.retrieveByPK(id, con);
90          } 
91      }
92  
93      /**
94       * @see org.apache.fulcrum.security.torque.TorqueAbstractPermissionManager#doSelectByName(java.lang.String, java.sql.Connection)
95       */
96      @Override
97  	@SuppressWarnings("unchecked")
98  	protected <T extends Permission> T doSelectByName(String name, Connection con) throws NoRowsException, TooManyRowsException, TorqueException
99      {
100         Criteria criteria = new Criteria();
101        
102         criteria.setIgnoreCase(true);
103         criteria.setSingleRecord(true);
104         
105         List<T> permissions = null;
106         if ( (getCustomPeer())) {
107             try
108             {
109             	TorqueTurbinePeer<T> peerInstance = (TorqueTurbinePeer<T>)getPeerInstance();
110             	criteria.where(peerInstance.getTableMap().getColumn(getColumnName()), name);
111             	permissions = peerInstance.doSelect( criteria, con );
112                 
113             }
114             catch ( DataBackendException e )
115             {
116                 throw new TorqueException( e );
117             }
118         } else {
119         	 criteria.where(TorqueTurbinePermissionPeer.PERMISSION_NAME, name);
120             permissions = (List<T>) TorqueTurbinePermissionPeer.doSelect(criteria, con);
121         } 
122 
123         if (permissions.isEmpty())
124         {
125             throw new NoRowsException(name);
126         }
127 
128         return permissions.get(0);
129     }
130     
131 }