Search in sources :

Example 26 with Router

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

the class TriggerRouterService method getTriggerRoutersCacheForCurrentNode.

protected TriggerRoutersCache getTriggerRoutersCacheForCurrentNode(boolean refreshCache) {
    String myNodeGroupId = parameterService.getNodeGroupId();
    long triggerRouterCacheTimeoutInMs = parameterService.getLong(ParameterConstants.CACHE_TIMEOUT_TRIGGER_ROUTER_IN_MS);
    TriggerRoutersCache cache = triggerRouterCacheByNodeGroupId == null ? null : triggerRouterCacheByNodeGroupId.get(myNodeGroupId);
    if (cache == null || refreshCache || System.currentTimeMillis() - this.triggerRouterPerNodeCacheTime > triggerRouterCacheTimeoutInMs) {
        synchronized (cacheLock) {
            this.triggerRouterPerNodeCacheTime = System.currentTimeMillis();
            Map<String, TriggerRoutersCache> newTriggerRouterCacheByNodeGroupId = new HashMap<String, TriggerRoutersCache>();
            List<TriggerRouter> triggerRouters = getAllTriggerRoutersForCurrentNode(myNodeGroupId);
            Map<String, List<TriggerRouter>> triggerRoutersByTriggerId = new HashMap<String, List<TriggerRouter>>(triggerRouters.size());
            Map<String, Router> routers = new HashMap<String, Router>(triggerRouters.size());
            for (TriggerRouter triggerRouter : triggerRouters) {
                if (triggerRouter.isEnabled()) {
                    boolean sourceEnabled = groupletService.isSourceEnabled(triggerRouter);
                    if (sourceEnabled) {
                        String triggerId = triggerRouter.getTrigger().getTriggerId();
                        List<TriggerRouter> list = triggerRoutersByTriggerId.get(triggerId);
                        if (list == null) {
                            list = new ArrayList<TriggerRouter>();
                            triggerRoutersByTriggerId.put(triggerId, list);
                        }
                        list.add(triggerRouter);
                        routers.put(triggerRouter.getRouter().getRouterId(), triggerRouter.getRouter());
                    }
                }
            }
            newTriggerRouterCacheByNodeGroupId.put(myNodeGroupId, new TriggerRoutersCache(triggerRoutersByTriggerId, routers));
            this.triggerRouterCacheByNodeGroupId = newTriggerRouterCacheByNodeGroupId;
            cache = triggerRouterCacheByNodeGroupId == null ? null : triggerRouterCacheByNodeGroupId.get(myNodeGroupId);
        }
    }
    return cache;
}
Also used : HashMap(java.util.HashMap) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) ConfigurationChangedDataRouter(org.jumpmind.symmetric.route.ConfigurationChangedDataRouter) FileSyncDataRouter(org.jumpmind.symmetric.route.FileSyncDataRouter) Router(org.jumpmind.symmetric.model.Router) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) List(java.util.List) ArrayList(java.util.ArrayList)

Example 27 with Router

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

the class TriggerRouterService method enhanceTriggerRouters.

private List<TriggerRouter> enhanceTriggerRouters(List<TriggerRouter> triggerRouters) {
    HashMap<String, Router> routersById = new HashMap<String, Router>();
    for (Router router : getRouters()) {
        routersById.put(router.getRouterId().trim().toUpperCase(), router);
    }
    HashMap<String, Trigger> triggersById = new HashMap<String, Trigger>();
    for (Trigger trigger : getTriggers()) {
        triggersById.put(trigger.getTriggerId().trim().toUpperCase(), trigger);
    }
    for (TriggerRouter triggerRouter : triggerRouters) {
        triggerRouter.setTrigger(triggersById.get(triggerRouter.getTrigger().getTriggerId().trim().toUpperCase()));
        triggerRouter.setRouter(routersById.get(triggerRouter.getRouter().getRouterId().trim().toUpperCase()));
    }
    return triggerRouters;
}
Also used : Trigger(org.jumpmind.symmetric.model.Trigger) HashMap(java.util.HashMap) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) TriggerRouter(org.jumpmind.symmetric.model.TriggerRouter) ConfigurationChangedDataRouter(org.jumpmind.symmetric.route.ConfigurationChangedDataRouter) FileSyncDataRouter(org.jumpmind.symmetric.route.FileSyncDataRouter) Router(org.jumpmind.symmetric.model.Router)

Example 28 with Router

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

the class FileTriggerTrackerTest method testTakeFullSnapshotRecursive.

@Test
public void testTakeFullSnapshotRecursive() 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);
    DirectorySnapshot snapshot = new DirectorySnapshot(fileTriggerRouter);
    tracker.takeFullSnapshot(snapshot);
    assertEquals(4, snapshot.size());
}
Also used : 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 29 with Router

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

the class FileTriggerTrackerTest method testTakeFullSnapshotNonRecursive.

@Test
public void testTakeFullSnapshotNonRecursive() throws Exception {
    FileTrigger fileTrigger = new FileTrigger(directory.getAbsolutePath(), false, null, null);
    Router router = new Router();
    FileTriggerRouter fileTriggerRouter = new FileTriggerRouter(fileTrigger, router);
    FileTriggerTracker tracker = new FileTriggerTracker(fileTriggerRouter, null, null, false, null);
    DirectorySnapshot snapshot = new DirectorySnapshot(fileTriggerRouter);
    tracker.takeFullSnapshot(snapshot);
    assertEquals(2, snapshot.size());
}
Also used : 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 30 with Router

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

the class FileTriggerTrackerTest method testTakeFullSnapshotIncludes.

@Test
public void testTakeFullSnapshotIncludes() throws Exception {
    FileTrigger fileTrigger = new FileTrigger(directory.getAbsolutePath(), false, "*.txt", null);
    Router router = new Router();
    FileTriggerRouter fileTriggerRouter = new FileTriggerRouter(fileTrigger, router);
    FileTriggerTracker tracker = new FileTriggerTracker(fileTriggerRouter, null, null, false, null);
    DirectorySnapshot snapshot = new DirectorySnapshot(fileTriggerRouter);
    tracker.takeFullSnapshot(snapshot);
    assertEquals(1, snapshot.size());
    assertEquals(snapshot.get(0).getFileName(), FileSyncUtils.getRelativePath(fileInDirectory1, directory));
}
Also used : 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)

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