View Javadoc

1   /*
2    * Copyright (C) 2007 Alf Mikula
3    * 
4    * This file is part of PromoteGo.
5    *
6    * PromoteGo is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * PromoteGo is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with PromoteGo.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.promotego.dao.hibernate;
20  
21  import java.util.List;
22  
23  import org.promotego.beans.Address;
24  import org.promotego.dao.interfaces.AddressDao;
25  import org.springframework.orm.hibernate3.HibernateTemplate;
26  import org.springframework.transaction.annotation.Transactional;
27  
28  public class HibernateAddressDao extends HibernateDaoSupport<Address> implements AddressDao
29  {
30      public String getFindAllQuery() { return "From Address"; }
31      public String getIdQuery() { return "From Address where id=?"; }
32      public String getCountQuery() { return "Select count(*) from Address"; }
33      
34      @Transactional
35      public Address getByName(String name, Long userId)
36      {
37          HibernateTemplate ht = getHibernateTemplate();
38          
39          @SuppressWarnings("unchecked")
40          List<Address> results = (List<Address>)ht.find("From Address where name=? and userId=?", new Object[] { name, userId });
41          
42          // TODO add constraint
43          assert results.size() < 2 : "Unique address name per user constraint violated";
44          
45          if (results.size() == 0)
46          {
47              return null;
48          }
49          else
50          {
51              return results.get(0);
52          }
53      }
54  }