@Override public DataSetDef clone() { RemoteDataSetDef def = new RemoteDataSetDef(); clone(def); def.setQueryTarget(getQueryTarget()); def.setServerTemplateId(getServerTemplateId()); def.setDbSQL(getDbSQL()); def.setDataSource(getDataSource()); return def; }
@Override public void toJson(RemoteDataSetDef dataSetDef, JsonObject json) { // Data source. json.put(DATA_SOURCE, dataSetDef.getDataSource()); // Schema. json.put(DB_SCHEMA, dataSetDef.getDbSchema()); // Query. if (dataSetDef.getDbSQL() != null) { json.put(DB_SQL, dataSetDef.getDbSQL()); } json.put(QUERY_TARGET, dataSetDef.getQueryTarget()); json.put(SERVER_TEMPLATE_ID, dataSetDef.getServerTemplateId()); // All columns flag. json.put(ALL_COLUMNS, dataSetDef.isAllColumnsEnabled()); } }
@Override public RemoteDataSetDef createDataSetDef() { RemoteDataSetDef def = new RemoteDataSetDef(); def.setProvider(this); def.setDataSource("${org.kie.server.persistence.ds}"); return def; }
@Override public void fromJson(RemoteDataSetDef def, JsonObject json) { String queryTarget = json.getString(QUERY_TARGET); String serverTemplateId = json.getString(SERVER_TEMPLATE_ID); String dataSource = json.getString(DATA_SOURCE); String dbSchema = json.getString(DB_SCHEMA); String dbSQL = json.getString(DB_SQL); if (!isBlank(queryTarget)) { def.setQueryTarget(queryTarget); } if (!isBlank(serverTemplateId)) { def.setServerTemplateId(serverTemplateId); } if (!isBlank(dataSource)) { def.setDataSource(dataSource); } if (!isBlank(dbSchema)) { def.setDbSchema(dbSchema); } if (!isBlank(dbSQL)) { def.setDbSQL(dbSQL); } }
@Test public void testFromJson() { RemoteDataSetDef remoteDataSetDef = new RemoteDataSetDef(); JsonObject json = new JsonObject(new JsonFactory()); json.put(RemoteDefJSONMarshaller.DATA_SOURCE, "test"); json.put(RemoteDefJSONMarshaller.DB_SCHEMA, "testDB"); json.put(RemoteDefJSONMarshaller.DB_SQL, "select * from test"); json.put(RemoteDefJSONMarshaller.QUERY_TARGET, "PROCESS"); json.put(RemoteDefJSONMarshaller.SERVER_TEMPLATE_ID, "server1"); RemoteDefJSONMarshaller marhsaller = new RemoteDefJSONMarshaller(); marhsaller.fromJson(remoteDataSetDef, json); assertEquals("test", remoteDataSetDef.getDataSource()); assertEquals("testDB", remoteDataSetDef.getDbSchema()); assertEquals("select * from test", remoteDataSetDef.getDbSQL()); assertEquals("PROCESS", remoteDataSetDef.getQueryTarget()); assertEquals("server1", remoteDataSetDef.getServerTemplateId()); }
QueryDefinition queryDefinition = QueryDefinition.builder() .name(dataSetLookup.getDataSetUUID()) .source(def.getDataSource()) .target(def.getQueryTarget()) .expression(def.getDbSQL()) .build(); kieServerIntegration.broadcastToKieServers(((RemoteDataSetDef) def).getServerTemplateId(), (KieServicesClient client) -> { QueryServicesClient instanceQueryClient = client.getServicesClient(QueryServicesClient.class); if (def.getColumnById(entry.getKey()) == null) { def.addColumn(entry.getKey(), ColumnType.valueOf(entry.getValue()));
getDataSetDef().setAllColumnsEnabled(true); getDataSetDef().setColumns(null); getDataSetDef().setDataSetFilter(null); DataSetDef editCloneWithoutCacheSettings = getDataSetDef().clone(); editCloneWithoutCacheSettings.setCacheEnabled(false); .dataset(dataSetDef.getUUID()) .rowOffset(0) .rowNumber(10) ConsoleDataSetLookup.fromInstance(lookup, getDataSetDef().getServerTemplateId()), editCloneWithoutCacheSettings); editHandler.lookupDataSet(new DataSetReadyCallback() {
protected void replaceQueryInKieServers(DataSetDef def) { if (def instanceof RemoteDataSetDef && ((RemoteDataSetDef) def).getServerTemplateId() != null) { QueryDefinition queryDefinition = QueryDefinition.builder() .name(def.getUUID()) .source(((RemoteDataSetDef) def).getDataSource()) .target(((RemoteDataSetDef) def).getQueryTarget()) .expression(((RemoteDataSetDef) def).getDbSQL()) .build(); kieServerIntegration.broadcastToKieServers(((RemoteDataSetDef) def).getServerTemplateId(), (KieServicesClient client) -> { QueryServicesClient instanceQueryClient = client.getServicesClient(QueryServicesClient.class); QueryDefinition registered = instanceQueryClient.replaceQuery(queryDefinition); return registered; }); LOGGER.info("Data set definition {} ({}) modification event processed", def.getUUID(), def.getName()); } } }
@Test public void testDataSetMetaData() throws Exception { Map<String, String> columns = new HashMap<>(); columns.put("test", "NUMBER"); QueryDefinition definition = QueryDefinition.builder() .name("q1") .columns(columns) .build(); when(dataSetDef.getColumns()).thenReturn(null, new ArrayList<>()); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(queryServicesClient.getQuery(anyString())).thenReturn(definition); kieServerDataSetProvider.getDataSetMetadata(dataSetDef); verify(dataSetDef, times(1)).addColumn(eq("test"), eq(ColumnType.NUMBER)); verify(queryServicesClient).getQuery(anyString()); }
protected ConsoleDataSetLookup adoptLookup(DataSetDef def, DataSetLookup lookup) { ConsoleDataSetLookup dataSetLookup = null; if (!(lookup instanceof ConsoleDataSetLookup)) { if (def instanceof RemoteDataSetDef) { dataSetLookup = (ConsoleDataSetLookup) ConsoleDataSetLookup.fromInstance(lookup, ((RemoteDataSetDef) def).getServerTemplateId()); DataSetFilter filter = def.getDataSetFilter(); if (filter != null) { dataSetLookup.addOperation(filter); } } else { throw new IllegalArgumentException("DataSetLookup is of incorrect type " + lookup.getClass().getName()); } } else { dataSetLookup = (ConsoleDataSetLookup) lookup; } return dataSetLookup; }
@Test public void testAdoptLookup() throws Exception { DataSetLookup dataSetLookup = Mockito.mock(DataSetLookup.class); when(dataSetDef.getDataSetFilter()).thenReturn(Mockito.mock(DataSetFilter.class)); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(dataSetLookup.cloneInstance()).thenReturn(dataSetLookup); ConsoleDataSetLookup adopted = kieServerDataSetProvider.adoptLookup(dataSetDef, dataSetLookup); verify(dataSetDef, times(1)).getServerTemplateId(); assertNotNull(adopted.getOperationList()); assertEquals(1, adopted.getOperationList().size()); }
@Override protected DataSetDef createDataSetDef() { return new RemoteDataSetDef(); }
public RemoteDataSetDefBuilder queryTarget(String queryTarget) { ((RemoteDataSetDef) def).setQueryTarget(queryTarget); return this; }
public RemoteDataSetDefBuilder serverTemplateId(String serverTemplateId) { ((RemoteDataSetDef) def).setServerTemplateId(serverTemplateId); return this; }
protected String extractQueryTarget(DataSetDef dataSetDef) { if (dataSetDef instanceof RemoteDataSetDef && ((RemoteDataSetDef) dataSetDef).getQueryTarget() != null) { return ((RemoteDataSetDef) dataSetDef).getQueryTarget(); } return dataSetDef.getName().contains("-") ? dataSetDef.getName().substring(0, dataSetDef.getName().indexOf("-")) : "CUSTOM"; }
@Override public void fromJson(RemoteDataSetDef def, JsonObject json) { String queryTarget = json.getString(QUERY_TARGET); String serverTemplateId = json.getString(SERVER_TEMPLATE_ID); String dataSource = json.getString(DATA_SOURCE); String dbSchema = json.getString(DB_SCHEMA); String dbSQL = json.getString(DB_SQL); if (!isBlank(queryTarget)) { def.setQueryTarget(queryTarget); } if (!isBlank(serverTemplateId)) { def.setServerTemplateId(serverTemplateId); } if (!isBlank(dataSource)) { def.setDataSource(dataSource); } if (!isBlank(dbSchema)) { def.setDbSchema(dbSchema); } if (!isBlank(dbSQL)) { def.setDbSQL(dbSQL); } }
@Test public void testFromJson() { RemoteDataSetDef remoteDataSetDef = new RemoteDataSetDef(); JsonObject json = new JsonObject(new JsonFactory()); json.put(RemoteDefJSONMarshaller.DATA_SOURCE, "test"); json.put(RemoteDefJSONMarshaller.DB_SCHEMA, "testDB"); json.put(RemoteDefJSONMarshaller.DB_SQL, "select * from test"); json.put(RemoteDefJSONMarshaller.QUERY_TARGET, "PROCESS"); json.put(RemoteDefJSONMarshaller.SERVER_TEMPLATE_ID, "server1"); RemoteDefJSONMarshaller marhsaller = new RemoteDefJSONMarshaller(); marhsaller.fromJson(remoteDataSetDef, json); assertEquals("test", remoteDataSetDef.getDataSource()); assertEquals("testDB", remoteDataSetDef.getDbSchema()); assertEquals("select * from test", remoteDataSetDef.getDbSQL()); assertEquals("PROCESS", remoteDataSetDef.getQueryTarget()); assertEquals("server1", remoteDataSetDef.getServerTemplateId()); }
getDataSetDef().setAllColumnsEnabled(true); getDataSetDef().setColumns(null); getDataSetDef().setDataSetFilter(null); DataSetDef editCloneWithoutCacheSettings = getDataSetDef().clone(); editCloneWithoutCacheSettings.setCacheEnabled(false); .dataset(dataSetDef.getUUID()) .rowOffset(0) .rowNumber(10) ConsoleDataSetLookup.fromInstance(lookup, getDataSetDef().getServerTemplateId()), editCloneWithoutCacheSettings); editHandler.lookupDataSet(new DataSetReadyCallback() {
@Test public void testDataSetMetaData() throws Exception { Map<String, String> columns = new HashMap<>(); columns.put("test", "NUMBER"); QueryDefinition definition = QueryDefinition.builder() .name("q1") .columns(columns) .build(); when(dataSetDef.getColumns()).thenReturn(null, new ArrayList<>()); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(queryServicesClient.getQuery(anyString())).thenReturn(definition); kieServerDataSetProvider.getDataSetMetadata(dataSetDef); verify(dataSetDef, times(1)).addColumn(eq("test"), eq(ColumnType.NUMBER)); verify(queryServicesClient).getQuery(anyString()); }
@Test public void testNoAdoptLookup() throws Exception { ConsoleDataSetLookup dataSetLookup = Mockito.mock(ConsoleDataSetLookup.class); kieServerDataSetProvider.adoptLookup(dataSetDef, dataSetLookup); verify(dataSetDef, times(0)).getServerTemplateId(); }