1 package org.davidmoten.rx.jdbc; 2 3 import java.sql.Connection; 4 5 final class TxImpl<T> implements Tx<T> { 6 7 private final TransactedConnection con; 8 private final T value; 9 private final Throwable e; 10 private final boolean completed; 11 private final Database db; 12 13 TxImpl(Connection con, T value, Throwable e, boolean completed, Database db) { 14 this.db = db; 15 if (con instanceof TransactedConnection) { 16 this.con = (TransactedConnection) con; 17 } else { 18 this.con = new TransactedConnection(con); 19 } 20 this.value = value; 21 this.e = e; 22 this.completed = completed; 23 } 24 25 @Override 26 public boolean isValue() { 27 return !completed && e == null; 28 } 29 30 @Override 31 public boolean isComplete() { 32 return completed; 33 } 34 35 @Override 36 public boolean isError() { 37 return e != null; 38 } 39 40 @Override 41 public T value() { 42 return value; 43 } 44 45 @Override 46 public Throwable throwable() { 47 return e; 48 } 49 50 public TransactedConnection connection() { 51 return con; 52 } 53 54 @Override 55 public TransactedSelectBuilder select(String sql) { 56 return db.tx(this).select(sql); 57 } 58 59 @Override 60 public TransactedUpdateBuilder update(String sql) { 61 return db.tx(this).update(sql); 62 } 63 64 @Override 65 public TransactedCallableBuilder call(String sql) { 66 return db.tx(this).call(sql); 67 } 68 69 @Override 70 public String toString() { 71 StringBuilder builder = new StringBuilder(); 72 builder.append("TxImpl [con="); 73 builder.append(con); 74 if (isValue()) { 75 builder.append(", value="); 76 builder.append(value); 77 } else if (isError()) { 78 builder.append(", error="); 79 builder.append(e); 80 } else { 81 builder.append(", completed="); 82 builder.append(completed); 83 } 84 builder.append("]"); 85 return builder.toString(); 86 } 87 88 }