|
16 | 16 | import java.util.List;
|
17 | 17 | import java.util.Map;
|
18 | 18 |
|
19 |
| -//import static com.googlecode.scheme2ddl.TypeNamesUtil.map2TypeForConfig; |
| 19 | +import static com.googlecode.scheme2ddl.TypeNamesUtil.map2TypeForDBMS; |
20 | 20 |
|
21 | 21 | /**
|
22 | 22 | * @author A_Reshetnikov
|
@@ -270,6 +270,69 @@ public String findDbmsJobDDL(String name) {
|
270 | 270 |
|
271 | 271 | return (String) getJdbcTemplate().execute(sql, new CallableStatementCallbackImpl());
|
272 | 272 | }
|
| 273 | + |
| 274 | + public String findRefGroupDDL(String type, final String name) { |
| 275 | + if (isLaunchedByDBA) |
| 276 | + return findPrimaryDDL(map2TypeForDBMS(type), name); |
| 277 | + else |
| 278 | + return (String) getJdbcTemplate().execute(new ConnectionCallback() { |
| 279 | + final String query = |
| 280 | + "SELECT 'begin'" |
| 281 | + + "|| CHR (13) || CHR (10)" |
| 282 | + + "|| '-- dbms_refresh.destroy(name => '''" |
| 283 | + + "|| rname" |
| 284 | + + "|| ''');'" |
| 285 | + + "|| CHR (13) || CHR (10)" |
| 286 | + + "|| ' dbms_refresh.make (name => '''" |
| 287 | + + "|| rname" |
| 288 | + + "|| ''', '" |
| 289 | + + "|| CHR (13) || CHR (10)" |
| 290 | + + "|| ' list => '''" |
| 291 | + + "|| listagg(name, ',') within group (order by name)" |
| 292 | + + "|| ''','" |
| 293 | + + "|| CHR (13) || CHR (10)" |
| 294 | + + "|| ' next_date => '" |
| 295 | + + "|| CASE WHEN MAX(next_date) IS NULL THEN 'NULL' ELSE 'to_date(''' || TO_CHAR (MAX (next_date), 'DD.MM.YYYY HH24:MI:SS') || ''', ''DD.MM.YYYY HH24:MI:SS'')' END" |
| 296 | + + "|| ', '" |
| 297 | + + "|| CHR (13) || CHR (10)" |
| 298 | + + "|| ' interval => '" |
| 299 | + + "|| CASE WHEN MAX(interval) IS NULL THEN 'NULL' ELSE '''' || MAX (REPLACE(interval, '''', '''''')) || '''' END " |
| 300 | + + "|| ');'" |
| 301 | + + "|| CHR (13) || CHR (10)" |
| 302 | + + "|| ' commit;'" |
| 303 | + + "|| CHR (13) || CHR (10)" |
| 304 | + + "|| 'end;'" |
| 305 | + + "|| CHR (13) || CHR (10)" |
| 306 | + + "|| '/'" |
| 307 | + + "|| CHR (13) || CHR (10)" |
| 308 | + + " FROM user_refresh_children " |
| 309 | + + " WHERE rname = UPPER ('"+name+"')" |
| 310 | + + " GROUP BY rname"; |
| 311 | + |
| 312 | + public Object doInConnection(Connection connection) throws SQLException, DataAccessException { |
| 313 | + System.out.println(query); |
| 314 | + applyTransformParameters(connection); |
| 315 | + PreparedStatement ps = connection.prepareStatement(query); |
| 316 | + |
| 317 | + ResultSet rs; |
| 318 | + |
| 319 | + try { |
| 320 | + rs = ps.executeQuery(); |
| 321 | + } catch (SQLException e) { |
| 322 | + log.trace(String.format("Error during select ddl for refresh group (%s)", name)); |
| 323 | + return ""; |
| 324 | + } |
| 325 | + try { |
| 326 | + if (rs.next()) { |
| 327 | + return rs.getString(1); |
| 328 | + } |
| 329 | + } finally { |
| 330 | + rs.close(); |
| 331 | + } |
| 332 | + return null; |
| 333 | + } |
| 334 | + }); |
| 335 | + } |
273 | 336 |
|
274 | 337 | public void applyTransformParameters(Connection connection) throws SQLException {
|
275 | 338 | for (String parameterName : transformParams.keySet()) {
|
|
0 commit comments