Search in sources :

Example 21 with Router

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

the class ColumnMatchDataRouterTest method testExpressionEqualsNull.

@Test
public void testExpressionEqualsNull() {
    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(2, result.size());
    assertEquals(true, result.contains("100"));
    assertEquals(true, result.contains("200"));
}
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 22 with Router

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

the class ColumnMatchDataRouterTest method testExpressionEqualsExternalId.

@Test
public void testExpressionEqualsExternalId() {
    ColumnMatchDataRouter router = new ColumnMatchDataRouter();
    SimpleRouterContext routingContext = new SimpleRouterContext();
    HashSet<Node> nodes = new HashSet<Node>();
    nodes.add(new Node("1000", "client"));
    nodes.add(new Node("100", "client"));
    nodes.add(new Node("10", "client"));
    TriggerHistory triggerHist = new TriggerHistory("mytable", "ID", "ID,STORE_ID,COLUMN2");
    Data data = new Data();
    data.setDataId(1);
    data.setDataEventType(DataEventType.INSERT);
    data.setRowData("1,100,Super Dooper");
    data.setTriggerHistory(triggerHist);
    Table table = new Table();
    NodeChannel nodeChannel = new NodeChannel();
    Router route = new Router();
    route.setRouterExpression("STORE_ID = :EXTERNAL_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 23 with Router

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

the class ColumnMatchDataRouterTest method testExpressionNotContains.

@Test
public void testExpressionNotContains() {
    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"));
    nodes.add(new Node("1000", "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("1000,200");
    data.setTriggerHistory(triggerHist);
    Table table = new Table();
    NodeChannel nodeChannel = new NodeChannel();
    Router route = new Router();
    route.setRouterExpression("EXTERNAL_DATA not contains :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(2, result.size());
    assertEquals(true, result.contains("100"));
    assertEquals(true, result.contains("300"));
}
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 24 with Router

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

the class FileTriggerTrackerTest method testTakeSnapshotRecursiveTestDelete.

@Test
public void testTakeSnapshotRecursiveTestDelete() throws Exception {
    FileTrigger fileTrigger = new FileTrigger(directory.getAbsolutePath(), true, null, null);
    Router router = new Router();
    FileTriggerRouter fileTriggerRouter = new FileTriggerRouter(fileTrigger, router);
    FileTriggerTracker tracker = new FileTriggerTracker(fileTriggerRouter, null, null, false, null);
    tracker.trackChanges();
    FileUtils.deleteQuietly(fileInDirectory1);
    DirectorySnapshot snapshot = tracker.trackChanges();
    assertEquals(1, snapshot.size());
    FileSnapshot change = snapshot.get(0);
    assertEquals(change.getFileName(), FileSyncUtils.getRelativePath(fileInDirectory1, directory));
    assertEquals(change.getLastEventType(), LastEventType.DELETE);
}
Also used : FileSnapshot(org.jumpmind.symmetric.model.FileSnapshot) FileTriggerRouter(org.jumpmind.symmetric.model.FileTriggerRouter) FileTrigger(org.jumpmind.symmetric.model.FileTrigger) FileTriggerRouter(org.jumpmind.symmetric.model.FileTriggerRouter) Router(org.jumpmind.symmetric.model.Router) Test(org.junit.Test)

Example 25 with Router

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

the class LookupTableDataRouter method routeToNodes.

public Set<String> routeToNodes(SimpleRouterContext routingContext, DataMetaData dataMetaData, Set<Node> nodes, boolean initialLoad, boolean initialLoadSelectUsed, TriggerRouter triggerRouter) {
    Set<String> nodeIds = null;
    Router router = dataMetaData.getRouter();
    Map<String, String> params = null;
    params = getParams(router, routingContext);
    Map<String, String> dataMap = getDataMap(dataMetaData, symmetricDialect);
    Map<String, Set<String>> lookupTable = getLookupTable(params, router, routingContext);
    String column = params.get(PARAM_KEY_COLUMN);
    if (dataMap.containsKey(column)) {
        String keyData = dataMap.get(column);
        Set<String> externalIds = lookupTable.get(keyData);
        if (externalIds != null) {
            for (Node node : nodes) {
                if (externalIds.contains(node.getExternalId())) {
                    nodeIds = addNodeId(node.getNodeId(), nodeIds, nodes);
                }
            }
        }
    } else {
        log.error("Could not route data with an id of {} using the {} router because the column {} was not captured for the {} table", new Object[] { dataMetaData.getData().getDataId(), getClass().getSimpleName(), column, dataMetaData.getTable().getName() });
    }
    return nodeIds;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) Node(org.jumpmind.symmetric.model.Node) Router(org.jumpmind.symmetric.model.Router) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter)

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