View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  /***
18   * User: Clinton Begin
19   * Date: Jul 13, 2003
20   * Time: 7:21:30 PM
21   */
22  package com.ibatis.jpetstore.persistence.sqlmapdao;
23  
24  import com.ibatis.dao.client.DaoException;
25  import com.ibatis.dao.client.DaoManager;
26  import com.ibatis.jpetstore.domain.Sequence;
27  import com.ibatis.jpetstore.persistence.iface.SequenceDao;
28  
29  public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {
30  
31    public SequenceSqlMapDao(DaoManager daoManager) {
32      super(daoManager);
33    }
34  
35    /***
36     * This is a generic sequence ID generator that is based on a database
37     * table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
38     * <p/>
39     * This approach should work with any database.
40     *
41     * @param name The name of the sequence.
42     * @return The Next ID
43     * @
44     */
45    public synchronized int getNextId(String name) {
46      Sequence sequence = new Sequence(name, -1);
47  
48      sequence = (Sequence) queryForObject("getSequence", sequence);
49      if (sequence == null) {
50        throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
51      }
52      Object parameterObject = new Sequence(name, sequence.getNextId() + 1);
53      update("updateSequence", parameterObject);
54  
55      return sequence.getNextId();
56    }
57  
58  }