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 testNoAdoptLookup() throws Exception { ConsoleDataSetLookup dataSetLookup = Mockito.mock(ConsoleDataSetLookup.class); kieServerDataSetProvider.adoptLookup(dataSetDef, dataSetLookup); verify(dataSetDef, times(0)).getServerTemplateId(); }
@Test public void testNoAdoptLookup() throws Exception { ConsoleDataSetLookup dataSetLookup = Mockito.mock(ConsoleDataSetLookup.class); kieServerDataSetProvider.adoptLookup(dataSetDef, dataSetLookup); verify(dataSetDef, times(0)).getServerTemplateId(); }
@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()); }
@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()); }
void onDataSetDefRemovedEvent(@Observes DataSetDefRemovedEvent event) { checkNotNull("event", event); DataSetDef def = event.getDataSetDef(); if (def instanceof RemoteDataSetDef) { kieServerIntegration.broadcastToKieServers(((RemoteDataSetDef) def).getServerTemplateId(), (KieServicesClient client) -> { QueryServicesClient instanceQueryClient = client.getServicesClient(QueryServicesClient.class); instanceQueryClient.unregisterQuery(def.getUUID()); return null; }); LOGGER.info("Data set definition {} ({}) deletion event processed", def.getUUID(), def.getName()); } }
@Override public DataSetMetadata getDataSetMetadata(DataSetDef def) throws Exception { List<String> columnNames = new ArrayList<>(); List<ColumnType> columnTypes = new ArrayList<>(); if (def.getColumns() == null && def instanceof RemoteDataSetDef) { final QueryServicesClient queryClient = getClient(((RemoteDataSetDef) def).getServerTemplateId(), QueryServicesClient.class); QueryDefinition definition = queryClient.getQuery(def.getUUID()); if (definition.getColumns() != null) { for (Entry<String, String> entry : definition.getColumns().entrySet()) { if (def.getColumnById(entry.getKey()) == null) { def.addColumn(entry.getKey(), ColumnType.valueOf(entry.getValue())); } } } } List<DataColumnDef> columns = def.getColumns(); for (DataColumnDef column : columns) { columnNames.add(column.getId()); columnTypes.add(column.getColumnType()); } return new DataSetMetadataImpl(def, def.getUUID(), -1, def.getColumns().size(), columnNames, columnTypes, -1); }
@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 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 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()); } } }
@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 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 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()); } }
.build(); kieServerIntegration.broadcastToKieServers(((RemoteDataSetDef) def).getServerTemplateId(), (KieServicesClient client) -> { QueryServicesClient instanceQueryClient = client.getServicesClient(QueryServicesClient.class);
ConsoleDataSetLookup.fromInstance(lookup, getDataSetDef().getServerTemplateId()), editCloneWithoutCacheSettings); editHandler.lookupDataSet(new DataSetReadyCallback() {
ConsoleDataSetLookup.fromInstance(lookup, getDataSetDef().getServerTemplateId()), editCloneWithoutCacheSettings); editHandler.lookupDataSet(new DataSetReadyCallback() {
@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()); }
@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()); }