Coverage report

  %line %branch
org.apache.torque.oid.AutoIncrementIdGenerator
15% 
89% 

 1  
 package org.apache.torque.oid;
 2  
 
 3  
 /*
 4  
  * Copyright 2001-2004 The Apache Software Foundation.
 5  
  *
 6  
  * Licensed under the Apache License, Version 2.0 (the "License")
 7  
  * you may not use this file except in compliance with the License.
 8  
  * You may obtain a copy of the License at
 9  
  *
 10  
  *     http://www.apache.org/licenses/LICENSE-2.0
 11  
  *
 12  
  * Unless required by applicable law or agreed to in writing, software
 13  
  * distributed under the License is distributed on an "AS IS" BASIS,
 14  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15  
  * See the License for the specific language governing permissions and
 16  
  * limitations under the License.
 17  
  */
 18  
 
 19  
 import java.math.BigDecimal;
 20  
 import java.sql.Connection;
 21  
 import org.apache.torque.adapter.DB;
 22  
 import com.workingdogs.village.QueryDataSet;
 23  
 import com.workingdogs.village.Record;
 24  
 import com.workingdogs.village.Value;
 25  
 
 26  
 /**
 27  
  * This generator works with databases that have an sql syntax that
 28  
  * allows the retrieval of the last id used to insert a row for a
 29  
  * Connection.
 30  
  *
 31  
  * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
 32  
  * @version $Id: AutoIncrementIdGenerator.java,v 1.5.4.2 2004/05/20 04:36:07 seade Exp $
 33  
  */
 34  
 public class AutoIncrementIdGenerator implements IdGenerator
 35  
 {
 36  
     /** the adapter that knows the correct sql syntax */
 37  
     private DB dbAdapter;
 38  
 
 39  
     /**
 40  
      * Creates an IdGenerator which will work with the specified database.
 41  
      *
 42  
      * @param adapter the adapter that knows the correct sql syntax.
 43  
      */
 44  
     public AutoIncrementIdGenerator(DB adapter)
 45  27
     {
 46  27
         dbAdapter = adapter;
 47  27
     }
 48  
 
 49  
     /**
 50  
      * Returns the last ID used by this connection.
 51  
      *
 52  
      * @param connection A Connection.
 53  
      * @param keyInfo an Object that contains additional info.
 54  
      * @return An int with the value for the id.
 55  
      * @exception Exception Database error.
 56  
      */
 57  
     public int getIdAsInt(Connection connection, Object keyInfo)
 58  
         throws Exception
 59  
     {
 60  0
         return getIdAsVillageValue(connection, keyInfo).asInt();
 61  
     }
 62  
 
 63  
     /**
 64  
      * Returns the last ID used by this connection.
 65  
      *
 66  
      * @param connection A Connection.
 67  
      * @param keyInfo an Object that contains additional info.
 68  
      * @return A long with the value for the id.
 69  
      * @exception Exception Database error.
 70  
      */
 71  
     public long getIdAsLong(Connection connection, Object keyInfo)
 72  
         throws Exception
 73  
     {
 74  0
         return getIdAsVillageValue(connection, keyInfo).asLong();
 75  
     }
 76  
 
 77  
     /**
 78  
      * Returns the last ID used by this connection.
 79  
      *
 80  
      * @param connection A Connection.
 81  
      * @param keyInfo an Object that contains additional info.
 82  
      * @return A BigDecimal with the last value auto-incremented as a
 83  
      * result of an insert.
 84  
      * @exception Exception Database error.
 85  
      */
 86  
     public BigDecimal getIdAsBigDecimal(Connection connection, Object keyInfo)
 87  
         throws Exception
 88  
     {
 89  0
         return getIdAsVillageValue(connection, keyInfo).asBigDecimal();
 90  
     }
 91  
 
 92  
 
 93  
     /**
 94  
      * Returns the last ID used by this connection.
 95  
      *
 96  
      * @param connection A Connection.
 97  
      * @param keyInfo an Object that contains additional info.
 98  
      * @return A String with the last value auto-incremented as a
 99  
      * result of an insert.
 100  
      * @exception Exception Database error.
 101  
      */
 102  
     public String getIdAsString(Connection connection, Object keyInfo)
 103  
         throws Exception
 104  
     {
 105  0
         return getIdAsVillageValue(connection, keyInfo).asString();
 106  
     }
 107  
 
 108  
     /**
 109  
      * A flag to determine the timing of the id generation
 110  
      *
 111  
      * @return a <code>boolean</code> value
 112  
      */
 113  
     public boolean isPriorToInsert()
 114  
     {
 115  0
         return false;
 116  
     }
 117  
 
 118  
     /**
 119  
      * A flag to determine the timing of the id generation
 120  
      *
 121  
      * @return a <code>boolean</code> value
 122  
      */
 123  
     public boolean isPostInsert()
 124  
     {
 125  0
         return true;
 126  
     }
 127  
 
 128  
     /**
 129  
      * A flag to determine whether a Connection is required to
 130  
      * generate an id.
 131  
      *
 132  
      * @return a <code>boolean</code> value
 133  
      */
 134  
     public final boolean isConnectionRequired()
 135  
     {
 136  0
         return true;
 137  
     }
 138  
 
 139  
     /**
 140  
      * Returns the last ID used by this connection.
 141  
      *
 142  
      * @param connection A Connection.
 143  
      * @param keyInfo an Object that contains additional info.
 144  
      * @return A Village Value with the last value auto-incremented as a
 145  
      * result of an insert.
 146  
      * @exception Exception Database error.
 147  
      */
 148  
     private Value getIdAsVillageValue(Connection connection, Object keyInfo)
 149  
         throws Exception
 150  
     {
 151  0
         String idSQL = dbAdapter.getIDMethodSQL(keyInfo);
 152  0
         Value id = null;
 153  0
         QueryDataSet qds = null;
 154  
         try
 155  
         {
 156  0
             qds = new QueryDataSet(connection, idSQL);
 157  0
             qds.fetchRecords(1);
 158  0
             Record rec = qds.getRecord(0);
 159  0
             id = rec.getValue(1);
 160  
         }
 161  
         finally
 162  
         {
 163  0
             if (qds != null)
 164  
             {
 165  0
                 qds.close();
 166  
             }
 167  
         }
 168  0
         return id;
 169  
     }
 170  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.