Search in sources :

Example 11 with Router

use of org.jumpmind.symmetric.model.Router in project symmetric-ds by JumpMind.

the class RouterServiceTest method testProducesCommonBatchesMultipleTablesTwoChannelsMultipleRouters.

@Test
public void testProducesCommonBatchesMultipleTablesTwoChannelsMultipleRouters() {
    List<TriggerRouter> triggerRouters = new ArrayList<TriggerRouter>();
    triggerRouters.add(new TriggerRouter(new Trigger("a", CHANNEL_2_TEST.getChannelId()), new Router("test1", SOURCE_NODE_GROUP, TARGET_NODE_GROUP, "default")));
    triggerRouters.add(new TriggerRouter(new Trigger("b", "anotherchannel"), new Router("test2", SOURCE_NODE_GROUP, TARGET_NODE_GROUP, "column")));
    assertTrue(routerService.producesCommonBatches(CHANNEL_2_TEST, SOURCE_NODE_GROUP, triggerRouters));
}
Also used : Trigger(org.jumpmind.symmetric.model.Trigger) ArrayList(java.util.ArrayList) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) Router(org.jumpmind.symmetric.model.Router) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) Test(org.junit.Test)

Example 12 with Router

use of org.jumpmind.symmetric.model.Router in project symmetric-ds by JumpMind.

the class DataExtractorService method lookupAndOrderColumnsAccordingToTriggerHistory.

protected Table lookupAndOrderColumnsAccordingToTriggerHistory(String routerId, TriggerHistory triggerHistory, Node sourceNode, Node targetNode, boolean setTargetTableName, boolean useDatabaseDefinition) {
    String catalogName = triggerHistory.getSourceCatalogName();
    String schemaName = triggerHistory.getSourceSchemaName();
    String tableName = triggerHistory.getSourceTableName();
    Table table = null;
    if (useDatabaseDefinition) {
        table = platform.getTableFromCache(catalogName, schemaName, tableName, false);
        if (table != null && table.getColumnCount() < triggerHistory.getParsedColumnNames().length) {
            /*
                 * If the column count is less than what trigger history reports, then
                 * chances are the table cache is out of date.
                 */
            table = platform.getTableFromCache(catalogName, schemaName, tableName, true);
        }
        if (table != null) {
            table = table.copyAndFilterColumns(triggerHistory.getParsedColumnNames(), triggerHistory.getParsedPkColumnNames(), true);
        } else {
            throw new SymmetricException("Could not find the following table.  It might have been dropped: %s", Table.getFullyQualifiedTableName(catalogName, schemaName, tableName));
        }
    } else {
        table = new Table(tableName);
        table.addColumns(triggerHistory.getParsedColumnNames());
        table.setPrimaryKeys(triggerHistory.getParsedPkColumnNames());
    }
    Router router = triggerRouterService.getRouterById(routerId, false);
    if (router != null && setTargetTableName) {
        if (router.isUseSourceCatalogSchema()) {
            table.setCatalog(catalogName);
            table.setSchema(schemaName);
        } else {
            table.setCatalog(null);
            table.setSchema(null);
        }
        if (StringUtils.equals(Constants.NONE_TOKEN, router.getTargetCatalogName())) {
            table.setCatalog(null);
        } else if (StringUtils.isNotBlank(router.getTargetCatalogName())) {
            table.setCatalog(replaceVariables(sourceNode, targetNode, router.getTargetCatalogName()));
        }
        if (StringUtils.equals(Constants.NONE_TOKEN, router.getTargetSchemaName())) {
            table.setSchema(null);
        } else if (StringUtils.isNotBlank(router.getTargetSchemaName())) {
            table.setSchema(replaceVariables(sourceNode, targetNode, router.getTargetSchemaName()));
        }
        if (StringUtils.isNotBlank(router.getTargetTableName())) {
            table.setName(router.getTargetTableName());
        }
    }
    return table;
}
Also used : TransformTable(org.jumpmind.symmetric.io.data.transform.TransformTable) Table(org.jumpmind.db.model.Table) SymmetricException(org.jumpmind.symmetric.SymmetricException) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) Router(org.jumpmind.symmetric.model.Router) AbstractFileParsingRouter(org.jumpmind.symmetric.route.AbstractFileParsingRouter)

Example 13 with Router

use of org.jumpmind.symmetric.model.Router in project symmetric-ds by JumpMind.

the class AbstractDataExtractorServiceTest method setupForTest.

@Before
public void setupForTest() {
    ITriggerRouterService triggerRouterService = getTriggerRouterService();
    TriggerRouter triggerRouter = triggerRouterService.findTriggerRouterById(TEST_TABLE, TestConstants.ROUTER_ID_ROOT_2_TEST);
    if (triggerRouter == null) {
        triggerRouter = new TriggerRouter(new Trigger(TEST_TABLE, TestConstants.TEST_CHANNEL_ID), new Router(TestConstants.ROUTER_ID_ROOT_2_TEST, TestConstants.ROOT_2_TEST));
        triggerRouterService.saveTriggerRouter(triggerRouter);
        triggerRouterService.syncTriggers();
        getDbDialect().truncateTable(TEST_TABLE);
    }
    resetBatches();
}
Also used : Trigger(org.jumpmind.symmetric.model.Trigger) ITriggerRouterService(org.jumpmind.symmetric.service.ITriggerRouterService) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) Router(org.jumpmind.symmetric.model.Router) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) Before(org.junit.Before)

Example 14 with Router

use of org.jumpmind.symmetric.model.Router in project symmetric-ds by JumpMind.

the class ColumnMatchDataRouterTest method testExpressionExternalData.

@Test
public void testExpressionExternalData() {
    ColumnMatchDataRouter router = new ColumnMatchDataRouter();
    SimpleRouterContext routingContext = new SimpleRouterContext();
    HashSet<Node> nodes = new HashSet<Node>();
    nodes.add(new Node("100", "client"));
    nodes.add(new Node("200", "client"));
    nodes.add(new Node("300", "client"));
    TriggerHistory triggerHist = new TriggerHistory("mytable", "ID", "ID,NODE_ID,COLUMN2");
    Data data = new Data();
    data.setDataId(1);
    data.setDataEventType(DataEventType.INSERT);
    data.setRowData("1,100,Super Dooper");
    data.setExternalData("100");
    data.setTriggerHistory(triggerHist);
    Table table = new Table();
    NodeChannel nodeChannel = new NodeChannel();
    Router route = new Router();
    route.setRouterExpression("EXTERNAL_DATA = :NODE_ID");
    route.setRouterId("route1");
    DataMetaData dataMetaData = new DataMetaData(data, table, route, nodeChannel);
    Set<String> result = router.routeToNodes(routingContext, dataMetaData, nodes, false, false, null);
    assertEquals(1, result.size());
    assertEquals(true, result.contains("100"));
}
Also used : Table(org.jumpmind.db.model.Table) Node(org.jumpmind.symmetric.model.Node) Router(org.jumpmind.symmetric.model.Router) Data(org.jumpmind.symmetric.model.Data) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) TriggerHistory(org.jumpmind.symmetric.model.TriggerHistory) NodeChannel(org.jumpmind.symmetric.model.NodeChannel) HashSet(java.util.HashSet) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) Test(org.junit.Test)

Example 15 with Router

use of org.jumpmind.symmetric.model.Router in project symmetric-ds by JumpMind.

the class ColumnMatchDataRouterTest method testExpressionNotEqualsNull.

@Test
public void testExpressionNotEqualsNull() {
    ColumnMatchDataRouter router = new ColumnMatchDataRouter();
    SimpleRouterContext routingContext = new SimpleRouterContext();
    HashSet<Node> nodes = new HashSet<Node>();
    nodes.add(new Node("100", "client"));
    nodes.add(new Node("200", "client"));
    TriggerHistory triggerHist = new TriggerHistory("mytable", "ID", "ID,NODE_ID,COLUMN2");
    Data data = new Data();
    data.setDataId(1);
    data.setDataEventType(DataEventType.INSERT);
    data.setRowData("1,100,");
    data.setTriggerHistory(triggerHist);
    Table table = new Table();
    NodeChannel nodeChannel = new NodeChannel();
    Router route = new Router();
    route.setRouterExpression("COLUMN2 != NULL");
    route.setRouterId("route1");
    DataMetaData dataMetaData = new DataMetaData(data, table, route, nodeChannel);
    Set<String> result = router.routeToNodes(routingContext, dataMetaData, nodes, false, false, null);
    assertEquals(0, result.size());
}
Also used : Table(org.jumpmind.db.model.Table) Node(org.jumpmind.symmetric.model.Node) Router(org.jumpmind.symmetric.model.Router) Data(org.jumpmind.symmetric.model.Data) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) TriggerHistory(org.jumpmind.symmetric.model.TriggerHistory) NodeChannel(org.jumpmind.symmetric.model.NodeChannel) HashSet(java.util.HashSet) DataMetaData(org.jumpmind.symmetric.model.DataMetaData) Test(org.junit.Test)

Aggregations

Router (org.jumpmind.symmetric.model.Router)37 Test (org.junit.Test)25 TriggerRouter (org.jumpmind.symmetric.model.TriggerRouter)23 Trigger (org.jumpmind.symmetric.model.Trigger)13 Node (org.jumpmind.symmetric.model.Node)12 HashSet (java.util.HashSet)11 Table (org.jumpmind.db.model.Table)10 TriggerHistory (org.jumpmind.symmetric.model.TriggerHistory)10 Data (org.jumpmind.symmetric.model.Data)9 DataMetaData (org.jumpmind.symmetric.model.DataMetaData)9 NodeChannel (org.jumpmind.symmetric.model.NodeChannel)9 ArrayList (java.util.ArrayList)8 ConfigurationChangedDataRouter (org.jumpmind.symmetric.route.ConfigurationChangedDataRouter)7 FileSyncDataRouter (org.jumpmind.symmetric.route.FileSyncDataRouter)7 FileTriggerRouter (org.jumpmind.symmetric.model.FileTriggerRouter)6 FileTrigger (org.jumpmind.symmetric.model.FileTrigger)5 ITriggerRouterService (org.jumpmind.symmetric.service.ITriggerRouterService)5 HashMap (java.util.HashMap)3 ISymmetricDialect (org.jumpmind.symmetric.db.ISymmetricDialect)3 AbstractFileParsingRouter (org.jumpmind.symmetric.route.AbstractFileParsingRouter)3