View Javadoc
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  }