1 30 31 32 package org.hsqldb; 33 34 import org.hsqldb.HsqlNameManager.HsqlName; 35 36 43 public class NumberSequence { 44 45 HsqlName name; 46 47 private long startValue; 49 50 private long currValue; 52 53 private long lastValue; 55 private long increment; 56 private int dataType; 57 58 61 public NumberSequence(HsqlName name, long value, long increment, 62 int type) { 63 64 this.name = name; 65 startValue = currValue = lastValue = value; 66 this.increment = increment; 67 dataType = type; 68 } 69 70 73 synchronized long getValue() { 74 75 long value = currValue; 76 77 currValue += increment; 78 79 return value; 80 } 81 82 85 synchronized long getValue(long value) { 86 87 if (value >= currValue) { 88 currValue = value; 89 currValue += increment; 90 91 return value; 92 } else { 93 return value; 94 } 95 } 96 97 98 Object getValueObject() { 99 100 long value = currValue; 101 102 currValue += increment; 103 104 Object result; 105 106 if (dataType == Types.INTEGER) { 107 result = new Integer ((int) value); 108 } else { 109 result = new Long (value); 110 } 111 112 return result; 113 } 114 115 118 void reset() { 119 120 lastValue = currValue = startValue; 122 } 123 124 127 public long peek() { 128 return currValue; 129 } 130 131 134 boolean wasUsed() { 135 return lastValue != currValue; 136 } 137 138 141 void resetWasUsed() { 142 lastValue = currValue; 143 } 144 145 148 public void reset(long value) { 149 startValue = currValue = lastValue = value; 150 } 151 152 void reset(long value, long increment) { 153 154 reset(value); 155 156 this.increment = increment; 157 } 158 159 int getType() { 160 return dataType; 161 } 162 163 public HsqlName getName() { 164 return name; 165 } 166 167 public String getSchemaName() { 168 return name.schema.name; 169 } 170 171 long getIncrement() { 172 return increment; 173 } 174 } 175 | Popular Tags |