Search in sources :

Example 1 with GroupletLink

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

the class GroupletService method getGrouplets.

public List<Grouplet> getGrouplets(boolean refreshCache) {
    long maxCacheTime = parameterService.getLong(ParameterConstants.CACHE_TIMEOUT_GROUPLETS_IN_MS);
    List<Grouplet> all = cache;
    if (all == null || System.currentTimeMillis() - lastCacheTime >= maxCacheTime || lastCacheTime == 0 || refreshCache) {
        ISqlTemplate sqlTemplate = platform.getSqlTemplate();
        final Map<String, Grouplet> groupletMap = new HashMap<String, Grouplet>();
        all = sqlTemplate.query(getSql("selectGroupletSql"), new ISqlRowMapper<Grouplet>() {

            public Grouplet mapRow(Row rs) {
                Grouplet grouplet = new Grouplet();
                grouplet.setGroupletId(rs.getString("grouplet_id"));
                grouplet.setDescription(rs.getString("description"));
                grouplet.setGroupletLinkPolicy(GroupletLinkPolicy.valueOf(rs.getString("grouplet_link_policy")));
                grouplet.setCreateTime(rs.getDateTime("create_time"));
                grouplet.setLastUpdateBy(rs.getString("last_update_by"));
                grouplet.setLastUpdateTime(rs.getDateTime("last_update_time"));
                groupletMap.put(grouplet.getGroupletId(), grouplet);
                return grouplet;
            }
        });
        sqlTemplate.query(getSql("selectGroupletLinkSql"), new ISqlRowMapper<GroupletLink>() {

            public GroupletLink mapRow(Row rs) {
                GroupletLink groupletLink = new GroupletLink();
                String groupletId = rs.getString("grouplet_id");
                Grouplet grouplet = groupletMap.get(groupletId);
                groupletLink.setExternalId(rs.getString("external_id"));
                groupletLink.setCreateTime(rs.getDateTime("create_time"));
                groupletLink.setLastUpdateBy(rs.getString("last_update_by"));
                groupletLink.setLastUpdateTime(rs.getDateTime("last_update_time"));
                if (grouplet != null) {
                    grouplet.getGroupletLinks().add(groupletLink);
                }
                return groupletLink;
            }
        });
        sqlTemplate.query(getSql("selectTriggerRouterGroupletSql"), new ISqlRowMapper<TriggerRouterGrouplet>() {

            public TriggerRouterGrouplet mapRow(Row rs) {
                TriggerRouterGrouplet trGrouplet = new TriggerRouterGrouplet();
                String groupletId = rs.getString("grouplet_id");
                Grouplet grouplet = groupletMap.get(groupletId);
                trGrouplet.setAppliesWhen(AppliesWhen.valueOf(rs.getString("applies_when")));
                trGrouplet.setRouterId(rs.getString("router_id"));
                trGrouplet.setTriggerId(rs.getString("trigger_id"));
                trGrouplet.setCreateTime(rs.getDateTime("create_time"));
                trGrouplet.setLastUpdateBy(rs.getString("last_update_by"));
                trGrouplet.setLastUpdateTime(rs.getDateTime("last_update_time"));
                if (grouplet != null) {
                    grouplet.getTriggerRouterGrouplets().add(trGrouplet);
                }
                return trGrouplet;
            }
        });
        cache = all;
        lastCacheTime = System.currentTimeMillis();
    }
    return all;
}
Also used : HashMap(java.util.HashMap) TriggerRouterGrouplet(org.jumpmind.symmetric.model.TriggerRouterGrouplet) ISqlTemplate(org.jumpmind.db.sql.ISqlTemplate) TriggerRouterGrouplet(org.jumpmind.symmetric.model.TriggerRouterGrouplet) Grouplet(org.jumpmind.symmetric.model.Grouplet) GroupletLink(org.jumpmind.symmetric.model.GroupletLink) Row(org.jumpmind.db.sql.Row) ISqlRowMapper(org.jumpmind.db.sql.ISqlRowMapper)

Example 2 with GroupletLink

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

the class GroupletService method deleteGrouplet.

public void deleteGrouplet(Grouplet grouplet) {
    List<GroupletLink> links = grouplet.getGroupletLinks();
    for (GroupletLink link : links) {
        deleteGroupletLink(grouplet, link);
    }
    List<TriggerRouterGrouplet> triggerRouters = grouplet.getTriggerRouterGrouplets();
    for (TriggerRouterGrouplet triggerRouterGrouplet : triggerRouters) {
        deleteTriggerRouterGrouplet(grouplet, triggerRouterGrouplet);
    }
    ISqlTemplate sqlTemplate = platform.getSqlTemplate();
    sqlTemplate.update(getSql("deleteGroupletSql"), new Object[] { grouplet.getGroupletId() }, new int[] { Types.VARCHAR });
}
Also used : ISqlTemplate(org.jumpmind.db.sql.ISqlTemplate) TriggerRouterGrouplet(org.jumpmind.symmetric.model.TriggerRouterGrouplet) GroupletLink(org.jumpmind.symmetric.model.GroupletLink)

Example 3 with GroupletLink

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

the class GroupletService method isSourceEnabled.

public boolean isSourceEnabled(TriggerRouter triggerRouter) {
    boolean enabled = true;
    Node node = engine.getNodeService().findIdentity();
    if (node == null) {
        enabled = false;
    } else {
        List<Grouplet> grouplets = getGroupletsFor(triggerRouter, AppliesWhen.S, false);
        if (grouplets != null && grouplets.size() > 0) {
            enabled = false;
            for (Grouplet grouplet : grouplets) {
                GroupletLinkPolicy policy = grouplet.getGroupletLinkPolicy();
                List<GroupletLink> links = grouplet.getGroupletLinks();
                boolean foundMatch = false;
                for (GroupletLink groupletLink : links) {
                    if (groupletLink.getExternalId().equals(node.getExternalId())) {
                        foundMatch = true;
                    }
                }
                if ((foundMatch && policy == GroupletLinkPolicy.I) || (!foundMatch && policy == GroupletLinkPolicy.E)) {
                    enabled = true;
                }
            }
        }
    }
    return enabled;
}
Also used : TriggerRouterGrouplet(org.jumpmind.symmetric.model.TriggerRouterGrouplet) Grouplet(org.jumpmind.symmetric.model.Grouplet) GroupletLink(org.jumpmind.symmetric.model.GroupletLink) Node(org.jumpmind.symmetric.model.Node) GroupletLinkPolicy(org.jumpmind.symmetric.model.Grouplet.GroupletLinkPolicy)

Example 4 with GroupletLink

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

the class GroupletService method getTargetEnabled.

public Set<Node> getTargetEnabled(TriggerRouter triggerRouter, Set<Node> nodes) {
    List<Grouplet> grouplets = getGroupletsFor(triggerRouter, AppliesWhen.T, false);
    if (grouplets != null && grouplets.size() > 0) {
        Set<Node> matchedNodes = new HashSet<Node>();
        Set<Node> excludedNodes = new HashSet<Node>();
        for (Grouplet grouplet : grouplets) {
            GroupletLinkPolicy policy = grouplet.getGroupletLinkPolicy();
            List<GroupletLink> links = grouplet.getGroupletLinks();
            for (GroupletLink groupletLink : links) {
                for (Node node : nodes) {
                    if (groupletLink.getExternalId().equals(node.getExternalId())) {
                        if (policy == GroupletLinkPolicy.I) {
                            matchedNodes.add(node);
                        } else {
                            excludedNodes.add(node);
                        }
                    }
                }
            }
        }
        Set<Node> toReturn = new HashSet<Node>();
        excludedNodes.removeAll(matchedNodes);
        if (excludedNodes.size() > 0) {
            toReturn.addAll(nodes);
            toReturn.removeAll(excludedNodes);
        } else {
            toReturn.addAll(matchedNodes);
        }
        return toReturn;
    } else {
        return nodes;
    }
}
Also used : TriggerRouterGrouplet(org.jumpmind.symmetric.model.TriggerRouterGrouplet) Grouplet(org.jumpmind.symmetric.model.Grouplet) GroupletLink(org.jumpmind.symmetric.model.GroupletLink) Node(org.jumpmind.symmetric.model.Node) GroupletLinkPolicy(org.jumpmind.symmetric.model.Grouplet.GroupletLinkPolicy) HashSet(java.util.HashSet)

Aggregations

GroupletLink (org.jumpmind.symmetric.model.GroupletLink)4 TriggerRouterGrouplet (org.jumpmind.symmetric.model.TriggerRouterGrouplet)4 Grouplet (org.jumpmind.symmetric.model.Grouplet)3 ISqlTemplate (org.jumpmind.db.sql.ISqlTemplate)2 GroupletLinkPolicy (org.jumpmind.symmetric.model.Grouplet.GroupletLinkPolicy)2 Node (org.jumpmind.symmetric.model.Node)2 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 ISqlRowMapper (org.jumpmind.db.sql.ISqlRowMapper)1 Row (org.jumpmind.db.sql.Row)1