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  }