Coverage Report - org.apache.ojb.broker.util.sequence.HighLowSequence
 
Classes in this File Line Coverage Branch Coverage Complexity
HighLowSequence
N/A
N/A
1.143
 
 1  
 package org.apache.ojb.broker.util.sequence;
 2  
 
 3  
 /* Copyright 2002-2005 The Apache Software Foundation
 4  
  *
 5  
  * Licensed under the Apache License, Version 2.0 (the "License");
 6  
  * you may not use this file except in compliance with the License.
 7  
  * 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  
 import org.apache.commons.lang.builder.ToStringBuilder;
 19  
 import org.apache.commons.lang.builder.ToStringStyle;
 20  
 
 21  
 import java.io.Serializable;
 22  
 
 23  
 /**
 24  
  * The HighLowSequence is the persistent part of the {@link SequenceManagerHighLowImpl}.
 25  
  * It makes the maximum reserved key persistently available.
 26  
  *
 27  
  * @version $Id: HighLowSequence.java,v 1.1 2007-08-24 22:17:29 ewestfal Exp $
 28  
  */
 29  
 public class HighLowSequence implements Serializable
 30  
 {
 31  
         static final long serialVersionUID = -2174468157880921393L;
 32  
     private String name;
 33  
     private long maxKey;
 34  
     private int grabSize;
 35  
     private Integer version;
 36  
      // This is not stored in the DB
 37  
     protected long curVal = 0;
 38  
 
 39  
     /**
 40  
      * Default constructor for the HighLowSequence object
 41  
      */
 42  
     public HighLowSequence()
 43  
     {
 44  
         // make sure that version column in DB is never 'null'
 45  
         // to avoid problems with
 46  
         this(null, 0, 0, new Integer(0));
 47  
     }
 48  
 
 49  
     public HighLowSequence(String tableName, long maxKey, int grabSize, Integer version)
 50  
     {
 51  
         this.name = tableName;
 52  
         this.maxKey = maxKey;
 53  
         this.grabSize = grabSize;
 54  
         this.version = version;
 55  
     }
 56  
 
 57  
     public HighLowSequence getCopy()
 58  
     {
 59  
         HighLowSequence result = new HighLowSequence(this.name, this.maxKey, this.grabSize, this.version);
 60  
         result.curVal = this.curVal;
 61  
         return result;
 62  
     }
 63  
 
 64  
     public String toString()
 65  
     {
 66  
         ToStringBuilder buf = new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE);
 67  
         buf.append("name", name).
 68  
                 append("grabSize", grabSize).
 69  
                 append("version", version).
 70  
                 append("maxKey", maxKey).
 71  
                 append("currentKey", curVal);
 72  
         return buf.toString();
 73  
     }
 74  
 
 75  
     public Integer getVersion()
 76  
     {
 77  
         return version;
 78  
     }
 79  
 
 80  
     public void setVersion(Integer version)
 81  
     {
 82  
         this.version = version;
 83  
     }
 84  
 
 85  
     /**
 86  
      * Sets the name attribute of the HighLowSequence object
 87  
      *
 88  
      * @param name  The new className value
 89  
      */
 90  
     public void setName(String name)
 91  
     {
 92  
         this.name = name;
 93  
     }
 94  
 
 95  
     /**
 96  
      * Sets the grab size attribute of the HighLowSequence object
 97  
      *
 98  
      * @param grabSize  The new grabSize value
 99  
      */
 100  
     public void setGrabSize(int grabSize)
 101  
     {
 102  
         this.grabSize = grabSize;
 103  
     }
 104  
 
 105  
     /**
 106  
      * Sets the maxKey attribute of the HighLowSequence object
 107  
      *
 108  
      * @param maxKey  The new maxKey value
 109  
      */
 110  
     public void setMaxKey(long maxKey)
 111  
     {
 112  
         this.maxKey = maxKey;
 113  
     }
 114  
 
 115  
     /**
 116  
      * Gets the name attribute of the HighLowSequence object
 117  
      *
 118  
      * @return   The className value
 119  
      */
 120  
     public String getName()
 121  
     {
 122  
         return this.name;
 123  
     }
 124  
 
 125  
     /**
 126  
      * Gets the grabSize attribute of the HighLowSequence object
 127  
      *
 128  
      * @return   The grabSize value
 129  
      */
 130  
     public int getGrabSize()
 131  
     {
 132  
         return this.grabSize;
 133  
     }
 134  
 
 135  
     /**
 136  
      * Gets the next key from this sequence
 137  
      *
 138  
      * @return   The next key or 0 if sequence needs to grab new keyset
 139  
      */
 140  
     public long getNextId()
 141  
     {
 142  
         if (curVal == maxKey)
 143  
         {
 144  
             //no reserved IDs, must be reloaded, reserve new keyset and saved
 145  
             return 0;
 146  
         }
 147  
         else
 148  
         {
 149  
             curVal = curVal + 1;
 150  
             return curVal;
 151  
         }
 152  
     }
 153  
 
 154  
     /**
 155  
      * Gets the maxKey attribute of the HighLowSequence object
 156  
      *
 157  
      * @return   The maxKey value
 158  
      */
 159  
     public long getMaxKey()
 160  
     {
 161  
         return this.maxKey;
 162  
     }
 163  
 
 164  
     /**
 165  
      * Grabs the next key set, the sequence must be saved afterwards!!
 166  
      */
 167  
     public void grabNextKeySet()
 168  
     {
 169  
         curVal = maxKey;
 170  
         maxKey = maxKey + grabSize;
 171  
     }
 172  
 }