1 23 24 package org.continuent.sequoia.controller.requestmanager; 25 26 import java.io.Serializable ; 27 import java.util.HashMap ; 28 import java.util.LinkedList ; 29 import java.util.List ; 30 import java.util.Map ; 31 32 import org.continuent.sequoia.controller.backend.DatabaseBackend; 33 import org.continuent.sequoia.controller.locks.TransactionLogicalLock; 34 35 49 public class TransactionMetaData implements Serializable 50 { 51 private static final long serialVersionUID = -5251053474824677394L; 52 53 private final long transactionId; 54 private long timeout; 55 private String login; 56 private final boolean isPersistentConnection; 57 private final long persistentConnectionId; 58 59 private transient long logId; 60 61 private transient Map locksMap = new HashMap (); 62 private transient boolean altersAggregateList = false; 63 private transient boolean altersDatabaseCatalog = false; 64 private transient boolean altersDatabaseSchema = false; 65 private transient boolean altersMetadataCache = false; 66 private transient boolean altersQueryResultCache = false; 67 private transient boolean altersSomething = false; 68 private transient boolean altersStoredProcedureList = false; 69 private transient boolean altersUserDefinedTypes = false; 70 private transient boolean altersUsers = false; 71 private transient boolean isReadOnly = true; 72 73 84 public TransactionMetaData(long transactionId, long timeout, String login, 85 boolean isPersistentConnection, long persistentConnectionId) 86 { 87 this.transactionId = transactionId; 88 this.timeout = timeout; 89 this.login = login; 90 this.isPersistentConnection = isPersistentConnection; 91 this.persistentConnectionId = persistentConnectionId; 92 } 93 94 101 public synchronized void addAcquiredLock(DatabaseBackend backend, 102 TransactionLogicalLock lock) 103 { 104 LinkedList acquiredLocks = (LinkedList ) locksMap.get(backend); 105 if (acquiredLocks == null) 106 { 107 acquiredLocks = new LinkedList (); 108 locksMap.put(backend, acquiredLocks); 109 } 110 acquiredLocks.add(lock); 111 } 112 113 120 public synchronized void addAcquiredLocks(DatabaseBackend backend, List locks) 121 { 122 LinkedList acquiredLocks = (LinkedList ) locksMap.get(backend); 123 if (acquiredLocks == null) 124 { 125 acquiredLocks = new LinkedList (); 126 locksMap.put(backend, acquiredLocks); 127 } 128 acquiredLocks.addAll(locks); 129 } 130 131 136 public final boolean altersAggregateList() 137 { 138 return altersAggregateList; 139 } 140 141 146 public final boolean altersDatabaseCatalog() 147 { 148 return altersDatabaseCatalog; 149 } 150 151 156 public final boolean altersDatabaseSchema() 157 { 158 return altersDatabaseSchema; 159 } 160 161 166 public final boolean altersMetadataCache() 167 { 168 return altersMetadataCache; 169 } 170 171 176 public final boolean altersQueryResultCache() 177 { 178 return altersQueryResultCache; 179 } 180 181 186 public final boolean altersSomething() 187 { 188 return altersSomething; 189 } 190 191 196 public final boolean altersStoredProcedureList() 197 { 198 return altersStoredProcedureList; 199 } 200 201 206 public final boolean altersUserDefinedTypes() 207 { 208 return altersUserDefinedTypes; 209 } 210 211 216 public final boolean altersUsers() 217 { 218 return altersUsers; 219 } 220 221 228 public List getAcquiredLocks(DatabaseBackend backend) 229 { 230 return (List ) locksMap.get(backend); 231 } 232 233 238 public final long getLogId() 239 { 240 return logId; 241 } 242 243 248 public final void setLogId(long logId) 249 { 250 this.logId = logId; 251 } 252 253 258 public String getLogin() 259 { 260 return login; 261 } 262 263 270 public final long getPersistentConnectionId() 271 { 272 return persistentConnectionId; 273 } 274 275 280 public long getTimeout() 281 { 282 return timeout; 283 } 284 285 290 public long getTransactionId() 291 { 292 return transactionId; 293 } 294 295 301 public boolean isLockedByBackends() 302 { 303 return !locksMap.isEmpty(); 304 } 305 306 313 public final boolean isPersistentConnection() 314 { 315 return isPersistentConnection; 316 } 317 318 323 public final boolean isReadOnly() 324 { 325 return isReadOnly; 326 } 327 328 334 public List removeBackendLocks(DatabaseBackend backend) 335 { 336 return (List ) locksMap.remove(backend); 337 } 338 339 344 public final void setAltersAggregateList(boolean altersAggregateList) 345 { 346 this.altersAggregateList = altersAggregateList; 347 } 348 349 354 public final void setAltersDatabaseCatalog(boolean altersDatabaseCatalog) 355 { 356 this.altersDatabaseCatalog = altersDatabaseCatalog; 357 } 358 359 364 public final void setAltersDatabaseSchema(boolean altersDatabaseSchema) 365 { 366 this.altersDatabaseSchema = altersDatabaseSchema; 367 } 368 369 374 public final void setAltersMetadataCache(boolean altersMetadataCache) 375 { 376 this.altersMetadataCache = altersMetadataCache; 377 } 378 379 384 public final void setAltersQueryResultCache(boolean altersQueryResultCache) 385 { 386 this.altersQueryResultCache = altersQueryResultCache; 387 } 388 389 394 public final void setAltersSomething(boolean altersSomething) 395 { 396 this.altersSomething = altersSomething; 397 } 398 399 404 public final void setAltersStoredProcedureList( 405 boolean altersStoredProcedureList) 406 { 407 this.altersStoredProcedureList = altersStoredProcedureList; 408 } 409 410 415 public final void setAltersUserDefinedTypes(boolean altersUserDefinedTypes) 416 { 417 this.altersUserDefinedTypes = altersUserDefinedTypes; 418 } 419 420 425 public final void setAltersUsers(boolean altersUsers) 426 { 427 this.altersUsers = altersUsers; 428 } 429 430 435 public final void setReadOnly(boolean isReadOnly) 436 { 437 this.isReadOnly = isReadOnly; 438 } 439 440 445 public void setLogin(String login) 446 { 447 this.login = login; 448 } 449 450 455 public void setTimeout(long timeout) 456 { 457 this.timeout = timeout; 458 } 459 460 463 public boolean equals(Object obj) 464 { 465 if (obj instanceof TransactionMetaData) 466 { 467 TransactionMetaData tm = (TransactionMetaData) obj; 468 return tm.getTransactionId() == transactionId; 469 } 470 return false; 471 } 472 473 476 public int hashCode() 477 { 478 return (int) transactionId; 479 } 480 } 481 | Popular Tags |