44
44
import io .vertx .sqlclient .PropertyKind ;
45
45
import io .vertx .sqlclient .Row ;
46
46
import io .vertx .sqlclient .RowSet ;
47
+ import io .vertx .sqlclient .Tuple ;
47
48
import io .vertx .sqlclient .desc .ColumnDescriptor ;
48
49
import io .vertx .sqlclient .impl .RowBase ;
49
50
56
57
*/
57
58
public class ResultSetAdaptor implements ResultSet {
58
59
59
- private final Iterator <Row > iterator ;
60
+ private final Iterator <? extends Row > iterator ;
60
61
61
62
private final List <ColumnDescriptor > columnDescriptors ;
62
63
private final List <String > columnNames ;
63
64
private Row row ;
64
65
private boolean wasNull ;
65
66
67
+ public ResultSetAdaptor (Object id , Class <?> idClass , String columnName ) {
68
+ requireNonNull ( id );
69
+ this .iterator = List .of ( new RowAdaptor ( id , idClass , columnName ) ).iterator ();
70
+ this .columnNames = columnName == null ? emptyList () : List .of ( columnName );
71
+ this .columnDescriptors = List .of ( toColumnDescriptor ( idClass , columnName ) );
72
+ }
73
+
74
+ private static class RowAdaptor implements Row {
75
+ private final Object id ;
76
+ private final Class <?> idClass ;
77
+ private final String columnName ;
78
+
79
+ public RowAdaptor (Object id , Class <?> idClass , String columnName ) {
80
+ this .id = id ;
81
+ this .idClass = idClass ;
82
+ this .columnName = columnName ;
83
+ }
84
+
85
+ @ Override
86
+ public Object getValue (String column ) {
87
+ return id ;
88
+ }
89
+
90
+ @ Override
91
+ public String getColumnName (int pos ) {
92
+ return columnName ;
93
+ }
94
+
95
+ @ Override
96
+ public int getColumnIndex (String column ) {
97
+ return 0 ;
98
+ }
99
+
100
+ @ Override
101
+ public Object getValue (int pos ) {
102
+ return id ;
103
+ }
104
+
105
+ @ Override
106
+ public Tuple addValue (Object value ) {
107
+ return null ;
108
+ }
109
+
110
+ @ Override
111
+ public int size () {
112
+ return 1 ;
113
+ }
114
+
115
+ @ Override
116
+ public void clear () {
117
+ }
118
+
119
+ @ Override
120
+ public List <Class <?>> types () {
121
+ return List .of ( idClass );
122
+ }
123
+ }
124
+
66
125
public ResultSetAdaptor (RowSet <Row > rows ) {
67
126
requireNonNull ( rows );
68
127
this .iterator = rows .iterator ();
@@ -83,7 +142,11 @@ private ResultSetAdaptor(RowSet<Row> rows, Row row, String idColumnName, Class<?
83
142
requireNonNull ( idColumnName );
84
143
this .iterator = List .of ( row ).iterator ();
85
144
this .columnNames = List .of ( idColumnName );
86
- ColumnDescriptor columnDescriptor = new ColumnDescriptor () {
145
+ this .columnDescriptors = List .of ( toColumnDescriptor ( idClass , idColumnName ) );
146
+ }
147
+
148
+ private static ColumnDescriptor toColumnDescriptor (Class <?> idClass , String idColumnName ) {
149
+ return new ColumnDescriptor () {
87
150
@ Override
88
151
public String name () {
89
152
return idColumnName ;
@@ -104,7 +167,6 @@ public JDBCType jdbcType() {
104
167
return null ;
105
168
}
106
169
};
107
- this .columnDescriptors = List .of ( columnDescriptor );
108
170
}
109
171
110
172
private static class RowFromId extends RowBase {
0 commit comments