Skip to content

Commit 8fb547f

Browse files
committed
bindings/jdbc: add schema args to reference genome methods
1 parent 91098a9 commit 8fb547f

2 files changed

Lines changed: 53 additions & 23 deletions

File tree

bindings/jdbc/genomicsqlite-jdbc/src/main/java/net/mlin/genomicsqlite/GenomicSQLite.java

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,37 +70,62 @@ public static String createGenomicRangeIndexSQL(
7070
return createGenomicRangeIndexSQL(conn, tableName, rid, beginPosition, endPosition, -1);
7171
}
7272

73-
public static String putReferenceAssemblySQL(Connection conn, String assembly)
73+
public static String putReferenceAssemblySQL(Connection conn, String assembly, String schema)
7474
throws SQLException {
75-
PreparedStatement stmt = conn.prepareStatement("SELECT put_genomic_reference_assembly_sql(?)");
75+
PreparedStatement stmt =
76+
conn.prepareStatement("SELECT put_genomic_reference_assembly_sql(?,?)");
7677
stmt.setString(1, assembly);
78+
if (schema != null) {
79+
stmt.setString(2, schema);
80+
}
7781
ResultSet row = stmt.executeQuery();
7882
row.next();
7983
return row.getString(1);
8084
}
8185

86+
public static String putReferenceAssemblySQL(Connection conn, String assembly)
87+
throws SQLException {
88+
return putReferenceAssemblySQL(conn, assembly, null);
89+
}
90+
8291
public static String putReferenceSequenceSQL(
8392
Connection conn,
8493
String name,
8594
long length,
8695
String assembly,
8796
String refget_id,
8897
String meta_json,
89-
long rid)
98+
long rid,
99+
String schema)
90100
throws SQLException {
91101
PreparedStatement stmt =
92-
conn.prepareStatement("SELECT put_genomic_reference_sequence_sql(?,?,?,?,?,?)");
102+
conn.prepareStatement("SELECT put_genomic_reference_sequence_sql(?,?,?,?,?,?,?)");
93103
stmt.setString(1, name);
94104
stmt.setLong(2, length);
95105
stmt.setString(3, assembly);
96106
stmt.setString(4, refget_id);
97107
stmt.setString(5, meta_json);
98108
stmt.setLong(6, rid);
109+
if (schema != null) {
110+
stmt.setString(7, schema);
111+
}
99112
ResultSet row = stmt.executeQuery();
100113
row.next();
101114
return row.getString(1);
102115
}
103116

117+
public static String putReferenceSequenceSQL(
118+
Connection conn,
119+
String name,
120+
long length,
121+
String assembly,
122+
String refget_id,
123+
String meta_json,
124+
long rid)
125+
throws SQLException {
126+
return putReferenceSequenceSQL(conn, name, length, assembly, refget_id, meta_json, rid, null);
127+
}
128+
104129
public static String putReferenceSequenceSQL(
105130
Connection conn,
106131
String name,
@@ -109,16 +134,7 @@ public static String putReferenceSequenceSQL(
109134
String refget_id,
110135
String meta_json)
111136
throws SQLException {
112-
PreparedStatement stmt =
113-
conn.prepareStatement("SELECT put_genomic_reference_sequence_sql(?,?,?,?,?)");
114-
stmt.setString(1, name);
115-
stmt.setLong(2, length);
116-
if (assembly != null) stmt.setString(3, assembly);
117-
if (refget_id != null) stmt.setString(4, refget_id);
118-
if (meta_json != null) stmt.setString(5, meta_json);
119-
ResultSet row = stmt.executeQuery();
120-
row.next();
121-
return row.getString(1);
137+
return putReferenceSequenceSQL(conn, name, length, assembly, refget_id, meta_json, -1);
122138
}
123139

124140
public static String putReferenceSequenceSQL(
@@ -129,18 +145,22 @@ public static String putReferenceSequenceSQL(
129145

130146
public static String putReferenceSequenceSQL(
131147
Connection conn, String name, long length, String assembly) throws SQLException {
132-
return putReferenceSequenceSQL(conn, name, length, assembly, null, null);
148+
return putReferenceSequenceSQL(conn, name, length, assembly);
133149
}
134150

135151
public static String putReferenceSequenceSQL(Connection conn, String name, long length)
136152
throws SQLException {
137-
return putReferenceSequenceSQL(conn, name, length, null, null, null);
153+
return putReferenceSequenceSQL(conn, name, length, null);
138154
}
139155

140156
public static HashMap<Long, ReferenceSequence> getReferenceSequencesByRid(
141-
Connection conn, String assembly) throws SQLException {
157+
Connection conn, String assembly, String schema) throws SQLException {
142158
String sql =
143-
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id, gri_refseq_meta_json FROM _gri_refseq";
159+
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id, gri_refseq_meta_json FROM ";
160+
if (schema != null && schema.length() > 0) {
161+
sql += schema + ".";
162+
}
163+
sql += "_gri_refseq";
144164
PreparedStatement stmt;
145165
if (assembly != null) {
146166
stmt = conn.prepareStatement(sql + " WHERE gri_assembly = ?");
@@ -164,16 +184,21 @@ public static HashMap<Long, ReferenceSequence> getReferenceSequencesByRid(
164184
return ans;
165185
}
166186

187+
public static HashMap<Long, ReferenceSequence> getReferenceSequencesByRid(
188+
Connection conn, String assembly) throws SQLException {
189+
return getReferenceSequencesByRid(conn, assembly, null);
190+
}
191+
167192
public static HashMap<Long, ReferenceSequence> getReferenceSequencesByRid(Connection conn)
168193
throws SQLException {
169194
return getReferenceSequencesByRid(conn, null);
170195
}
171196

172197
public static HashMap<String, ReferenceSequence> getReferenceSequencesByName(
173-
Connection conn, String assembly) throws SQLException {
198+
Connection conn, String assembly, String schema) throws SQLException {
174199
HashMap<String, ReferenceSequence> ans = new HashMap<String, ReferenceSequence>();
175200
for (HashMap.Entry<Long, ReferenceSequence> entry :
176-
getReferenceSequencesByRid(conn, assembly).entrySet()) {
201+
getReferenceSequencesByRid(conn, assembly, schema).entrySet()) {
177202
ReferenceSequence grs = entry.getValue();
178203
if (ans.containsKey(grs.name)) {
179204
throw new RuntimeException(
@@ -184,6 +209,11 @@ public static HashMap<String, ReferenceSequence> getReferenceSequencesByName(
184209
return ans;
185210
}
186211

212+
public static HashMap<String, ReferenceSequence> getReferenceSequencesByName(
213+
Connection conn, String assembly) throws SQLException {
214+
return getReferenceSequencesByName(conn, assembly, null);
215+
}
216+
187217
public static HashMap<String, ReferenceSequence> getReferenceSequencesByName(Connection conn)
188218
throws SQLException {
189219
return getReferenceSequencesByName(conn, null);

docs/bindings.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ The other routines are much simpler. The binding for each just takes its require
6565
* `SELECT genomicsqlite_attach_sql(dbfilename, schema_name, config_json)` takes the same `config_json` as would Open
6666
* `SELECT genomicsqlite_vacuum_into_sql(destfilename, config_json)`
6767
* `SELECT create_genomic_range_index_sql(tableName, chromosome, beginPosition, endPosition[, floor])`: floor is an integer, others text.
68-
* `SELECT put_reference_assembly_sql(assembly)`
69-
* `SELECT put_reference_sequence_sql(name, length[, assembly, refget_id, meta_json, rid])` length and rid are integers.
68+
* `SELECT put_genomic_reference_assembly_sql(assembly[, schema])`
69+
* `SELECT put_genomic_reference_sequence_sql(name, length[, assembly, refget_id, meta_json, rid, schema])` length and rid are integers.
7070

7171
Optional text arguments can default to NULL, and optional integers can default to -1.
7272

@@ -78,7 +78,7 @@ SELECT
7878
gri_refseq_name, gri_refseq_length,
7979
gri_assembly, gri_refget_id,
8080
gri_refseq_meta_json
81-
FROM _gri_refseq
81+
FROM [schema.]_gri_refseq [WHERE assembly = ?]
8282
```
8383

8484
and loads the results into some linguistically-natural data structure that'll provide quick lookup of those attributes by rid. Then, **Get Reference Sequences by Name** can simply call that and "invert" the results.

0 commit comments

Comments
 (0)