Example usage for com.google.common.collect Sets intersection

List of usage examples for com.google.common.collect Sets intersection

Introduction

In this page you can find the example usage for com.google.common.collect Sets intersection.

Prototype

public static <E> SetView<E> intersection(final Set<E> set1, final Set<?> set2) 

Source Link

Document

Returns an unmodifiable view of the intersection of two sets.

Usage

From source file:io.druid.segment.indexing.DataSchema.java

@JsonIgnore
public InputRowParser getParser() {
    if (parser == null) {
        log.warn("No parser has been specified");
        return null;
    }/*from ww  w. j a va  2 s. c o  m*/

    final InputRowParser inputRowParser = jsonMapper.convertValue(this.parser, InputRowParser.class);

    final Set<String> dimensionExclusions = Sets.newHashSet();
    for (AggregatorFactory aggregator : aggregators) {
        dimensionExclusions.addAll(aggregator.requiredFields());
    }

    if (inputRowParser.getParseSpec() != null) {
        final DimensionsSpec dimensionsSpec = inputRowParser.getParseSpec().getDimensionsSpec();
        final TimestampSpec timestampSpec = inputRowParser.getParseSpec().getTimestampSpec();

        // exclude timestamp from dimensions by default, unless explicitly included in the list of dimensions
        if (timestampSpec != null) {
            final String timestampColumn = timestampSpec.getTimestampColumn();
            if (!(dimensionsSpec.hasCustomDimensions()
                    && dimensionsSpec.getDimensions().contains(timestampColumn))) {
                dimensionExclusions.add(timestampColumn);
            }
        }
        if (dimensionsSpec != null) {
            final Set<String> metSet = Sets.newHashSet();
            for (AggregatorFactory aggregator : aggregators) {
                metSet.add(aggregator.getName());
            }
            final Set<String> dimSet = Sets.newHashSet(dimensionsSpec.getDimensions());
            final Set<String> overlap = Sets.intersection(metSet, dimSet);
            if (!overlap.isEmpty()) {
                throw new IAE(
                        "Cannot have overlapping dimensions and metrics of the same name. Please change the name of the metric. Overlap: %s",
                        overlap);
            }

            return inputRowParser.withParseSpec(inputRowParser.getParseSpec().withDimensionsSpec(
                    dimensionsSpec.withDimensionExclusions(Sets.difference(dimensionExclusions, dimSet))));
        } else {
            return inputRowParser;
        }
    } else {
        log.warn("No parseSpec in parser has been specified.");
        return inputRowParser;
    }
}

From source file:dagger.internal.codegen.writer.EnumWriter.java

private boolean isDefaultConstructor(ConstructorWriter constructorWriter) {
    return Sets.intersection(VISIBILIY_MODIFIERS, modifiers)
            .equals(Sets.intersection(VISIBILIY_MODIFIERS, constructorWriter.modifiers))
            && constructorWriter.body().isEmpty();
}

From source file:com.siemens.sw360.portal.tags.DisplayProjectChanges.java

private void renderLinkedProjects(StringBuilder display) {
    if (ensureSomethingTodoAndNoNullLinkedProjects()) {

        Set<String> changedProjectIds = Sets.intersection(additions.getLinkedProjects().keySet(),
                deletions.getLinkedProjects().keySet());
        Set<String> linkedProjectsInDb = nullToEmptyMap(actual.getLinkedProjects()).keySet();
        //keep only projects that are still in the database
        changedProjectIds = Sets.intersection(changedProjectIds, linkedProjectsInDb);

        Set<String> removedProjectIds = Sets.difference(deletions.getLinkedProjects().keySet(),
                changedProjectIds);// www  .  ja  va  2s  .  c  om
        removedProjectIds = Sets.intersection(removedProjectIds, linkedProjectsInDb);

        Set<String> addedProjectIds = Sets.difference(additions.getLinkedProjects().keySet(),
                changedProjectIds);

        renderProjectLinkList(display, deletions.getLinkedProjects(), removedProjectIds,
                "Removed Project Links");
        renderProjectLinkList(display, additions.getLinkedProjects(), addedProjectIds, "Added Project Links");
        renderProjectLinkListCompare(display, actual.getLinkedProjects(), deletions.getLinkedProjects(),
                additions.getLinkedProjects(), changedProjectIds);
    }
}

From source file:edu.umn.msi.tropix.proteomics.itraqquantitation.impl.ScanIndex.java

private boolean namesMatch(@Nonnull final ScanIndex scanIndex) {
    final boolean namesMatch = !Sets.intersection(alternativeNames, scanIndex.alternativeNames).isEmpty();
    return namesMatch;
}

From source file:com.google.devtools.j2objc.translate.Functionizer.java

/**
 * Determines the set of methods to functionize. In addition to a method being
 * final we must also find an invocation for that method. Static methods, though,
 * are always functionized since there are no dynamic dispatch issues.
 *//*from ww  w. jav a 2 s. co  m*/
private Set<IMethodBinding> determineFunctionizableMethods(final CompilationUnit unit) {
    final Set<IMethodBinding> functionizableDeclarations = Sets.newHashSet();
    final Set<IMethodBinding> invocations = Sets.newHashSet();
    unit.accept(new TreeVisitor() {
        @Override
        public void endVisit(MethodDeclaration node) {
            if (canFunctionize(node)) {
                functionizableDeclarations.add(node.getMethodBinding());
            }
        }

        @Override
        public void endVisit(MethodInvocation node) {
            invocations.add(node.getMethodBinding().getMethodDeclaration());
        }
    });
    return Sets.intersection(functionizableDeclarations, invocations);
}

From source file:org.caleydo.view.histogram.v2.HistogramDistributionElement.java

private void renderHistImpl(GLGraphics g, float w, float h) {
    if (frameColor != null)
        g.color(frameColor).drawRect(0, 0, w, h);
    h -= HistogramRenderStyle.SIDE_SPACING_DETAIL_LOW * 2;
    w -= HistogramRenderStyle.SIDE_SPACING_DETAIL_LOW * 2;

    final List<DistributionEntry> entries = data.getEntries();
    final int bins = entries.size();
    final float delta = w / bins;

    final float lineWidth = Math.min(delta - 1, 25);
    final float lineWidthHalf = lineWidth * 0.5f;
    float x = delta / 2;

    g.save().move(HistogramRenderStyle.SIDE_SPACING_DETAIL_LOW,
            HistogramRenderStyle.SIDE_SPACING_DETAIL_LOW + h - 1);

    final Color border = RenderStyle.COLOR_BORDER;
    boolean renderBorder = !g.isPickingPass() && border != null;
    float borderBrightness = border == null ? 0 : getBrightness(border);
    for (int i = 0; i < bins; ++i) {
        DistributionEntry entry = entries.get(i);
        final Color c = toHighlight(entry.getColor(), i);
        g.color(c);//from   ww  w .j  ava  2 s.c om
        float v = -h * entry.getValue();

        if (v <= -1) {
            g.pushName(bucketPickingIds.get(i));
            g.fillRect(x - lineWidthHalf, 0, lineWidth, v);
            g.popName();
        }
        if (renderBorder) {
            float b = getBrightness(c);
            if (b > 0.5f && borderBrightness > 0.5f)
                g.color(1 - border.r, 1 - border.g, 1 - border.b, border.a);
            else
                g.color(border);
            g.drawRect(x - lineWidthHalf, 0, lineWidth, v);

        }
        x += delta;
    }

    if (!g.isPickingPass()) {
        g.lineWidth(2);
        for (SelectionType selectionType : SELECTIONTYPES) {
            Set<Integer> elements = data.getElements(selectionType);
            if (elements.isEmpty())
                continue;
            g.color(toHighlightColor(selectionType));
            x = delta / 2;
            for (int i = 0; i < bins; ++i) {
                DistributionEntry entry = entries.get(i);
                final Set<Integer> ids = entry.getIDs();
                float p = ids.isEmpty() ? 0 : Sets.intersection(elements, ids).size() / ids.size();
                float v = -h * entry.getValue() * p;
                if (v <= -1) {
                    g.fillRect(x - lineWidthHalf, 0, lineWidth, v);
                }
                x += delta;
            }
        }
    }
    g.color(Color.DARK_GRAY).drawLine(0, 0, w, 0);

    g.restore();
}

From source file:org.caleydo.view.relationshipexplorer.ui.collection.AEntityCollection.java

@Override
public Set<Object> getElementIDsFromForeignIDs(Set<Object> foreignIDs, IDType foreignIDType) {
    IDMappingManager mappingManager = IDMappingManagerRegistry.get()
            .getIDMappingManager(getBroadcastingIDType());

    Set<Object> elementIDs = new HashSet<>();
    Set<Object> broadcastIDs = mappingManager.getIDTypeMapper(foreignIDType, getBroadcastingIDType())
            .apply(foreignIDs);//from w ww.  jav a 2  s . c o  m
    for (Object bcID : broadcastIDs) {
        elementIDs.addAll(getElementIDsFromBroadcastID(bcID));
    }

    return new HashSet<>(Sets.intersection(elementIDs, allElementIDs));
}

From source file:org.sosy_lab.cpachecker.cpa.deterministic.DeterministicVariablesState.java

@Override
public DeterministicVariablesState join(DeterministicVariablesState pOther) {
    ImmutableSet<Wrapper<ASimpleDeclaration>> deterministicVariablesInboth = Sets
            .intersection(deterministicVariables, pOther.deterministicVariables).immutableCopy();

    if (deterministicVariablesInboth.equals(pOther.deterministicVariables)) {
        return pOther;
    }//from  ww  w. ja  v  a 2 s  .  c o  m

    return new DeterministicVariablesState(deterministicVariablesInboth);
}

From source file:co.mitro.core.servlets.MutateOrganization.java

@Override
protected MitroRPC processCommand(MitroRequestContext context)
        throws IOException, SQLException, MitroServletException {
    try {//from   w  ww  .  j ava 2s  .  c  o  m
        RPC.MutateOrganizationRequest in = gson.fromJson(context.jsonRequest,
                RPC.MutateOrganizationRequest.class);

        in.promotedMemberEncryptedKeys = MitroServlet.createMapIfNull(in.promotedMemberEncryptedKeys);
        in.newMemberGroupKeys = MitroServlet.createMapIfNull(in.newMemberGroupKeys);
        in.adminsToDemote = MitroServlet.uniquifyCollection(in.adminsToDemote);
        in.membersToRemove = MitroServlet.uniquifyCollection(in.membersToRemove);

        @SuppressWarnings("deprecation")
        AuthenticatedDB userDb = AuthenticatedDB.deprecatedNew(context.manager, context.requestor);
        DBGroup org = userDb.getOrganizationAsAdmin(in.orgId);

        Set<String> adminsToDemote = Sets.newHashSet(in.adminsToDemote);
        Collection<DBAcl> aclsToRemove = new HashSet<>();
        Set<Integer> existingAdmins = new HashSet<>();
        for (DBAcl acl : org.getAcls()) {
            DBIdentity u = acl.loadMemberIdentity(context.manager.identityDao);
            assert (u != null); // toplevel groups should not have group members.
            if (adminsToDemote.contains(u.getName())) {
                aclsToRemove.add(acl);
                adminsToDemote.remove(u.getName());
            } else {
                existingAdmins.add(u.getId());
            }
        }
        // check for an attempt to promote members who are already admins.
        Set<Integer> duplicateAdmins = Sets.intersection(existingAdmins,
                DBIdentity.getUserIdsFromNames(context.manager, in.promotedMemberEncryptedKeys.keySet()));
        if (!duplicateAdmins.isEmpty()) {
            throw new MitroServletException(
                    "Operation would create duplicate admins: " + COMMA_JOINER.join(duplicateAdmins));
        }

        if (!adminsToDemote.isEmpty()) {
            throw new MitroServletException("The following users are not admins and could not be deleted:"
                    + COMMA_JOINER.join(adminsToDemote));
        }
        if (existingAdmins.isEmpty() && in.promotedMemberEncryptedKeys.isEmpty()) {
            throw new UserVisibleException("You cannot remove all admins from an organization");
        }

        // delete ACLs for the admin user on the group. This maybe should be using common code?
        context.manager.aclDao.delete(aclsToRemove);
        Map<Integer, Integer> currentMemberIdsToGroupIds = getMemberIdsAndPrivateGroupIdsForOrg(context.manager,
                org);

        // Promoted members (new admins) must be members after all changes
        Set<String> currentMembers = DBIdentity.getUserNamesFromIds(context.manager,
                currentMemberIdsToGroupIds.keySet());
        Set<String> membersAfterChanges = Sets.difference(
                Sets.union(currentMembers, in.newMemberGroupKeys.keySet()), new HashSet<>(in.membersToRemove));
        Set<String> nonMemberAdmins = Sets.difference(in.promotedMemberEncryptedKeys.keySet(),
                membersAfterChanges);
        if (!nonMemberAdmins.isEmpty()) {
            throw new MitroServletException(
                    "Cannot add admins without them being members: " + COMMA_JOINER.join(nonMemberAdmins));
        }

        // check for duplicate users
        Set<Integer> duplicateMembers = Sets.intersection(currentMemberIdsToGroupIds.keySet(),
                DBIdentity.getUserIdsFromNames(context.manager, in.newMemberGroupKeys.keySet()));
        if (!duplicateMembers.isEmpty()) {
            throw new MitroServletException(
                    "Operation would create duplicate members: " + COMMA_JOINER.join(duplicateMembers));
        }

        // delete all the private groups. This might orphan secrets, which is the intended result.
        Set<Integer> memberIdsToRemove = DBIdentity.getUserIdsFromNames(context.manager, in.membersToRemove);
        if (memberIdsToRemove.size() != in.membersToRemove.size()) {
            throw new MitroServletException("Invalid members to remove.");
        }

        Set<Integer> illegalRemovals = Sets.intersection(existingAdmins, memberIdsToRemove);
        if (!illegalRemovals.isEmpty()) {
            throw new MitroServletException(
                    "Cannot remove members who are admins:" + COMMA_JOINER.join(illegalRemovals));
        }
        Set<Integer> nonOrgUsers = Sets.difference(memberIdsToRemove, currentMemberIdsToGroupIds.keySet());
        if (!nonOrgUsers.isEmpty()) {
            throw new MitroServletException("The following users are not members and cannot be removed:"
                    + COMMA_JOINER.join(nonOrgUsers));
        }
        Set<Integer> deleteGroupIds = Sets.newHashSet(
                Maps.filterKeys(currentMemberIdsToGroupIds, Predicates.in(memberIdsToRemove)).values());
        if (!deleteGroupIds.isEmpty()) {
            context.manager.groupDao.deleteIds(deleteGroupIds);
            DeleteBuilder<DBAcl, Integer> deleter = context.manager.aclDao.deleteBuilder();
            deleter.where().in(DBAcl.GROUP_ID_FIELD_NAME, deleteGroupIds);
            deleter.delete();

            DeleteBuilder<DBGroupSecret, Integer> gsDeleter = context.manager.groupSecretDao.deleteBuilder();
            gsDeleter.where().in(DBGroupSecret.GROUP_ID_NAME, deleteGroupIds);
            gsDeleter.delete();
        }

        // Remove the user from all org-owned group to which he belongs.
        // Note: if the user has access to an org-owned secret via a non-org-owned group, 
        // he will retain access. 
        Set<Integer> allOrgGroupIds = Sets.newHashSet();
        for (DBGroup g : org.getAllOrgGroups(context.manager)) {
            allOrgGroupIds.add(g.getId());
        }
        if (!memberIdsToRemove.isEmpty()) {
            if (!allOrgGroupIds.isEmpty()) {
                // Remove users from organization-owned groups (named or otherwise)
                DeleteBuilder<DBAcl, Integer> deleter = context.manager.aclDao.deleteBuilder();
                deleter.where().in(DBAcl.MEMBER_IDENTITY_FIELD_NAME, memberIdsToRemove).and()
                        .in(DBAcl.GROUP_ID_FIELD_NAME, allOrgGroupIds);
                deleter.delete();
            }

            // Remove users from any org-owned secrets (e.g. via non-org private or named groups)
            HashMap<Integer, SecretToPath> orgSecretsToPath = new HashMap<>();
            ListMySecretsAndGroupKeys.getSecretInfo(context, AdminAccess.FORCE_ACCESS_VIA_TOPLEVEL_GROUPS,
                    orgSecretsToPath, ImmutableSet.of(org.getId()), null,
                    IncludeAuditLogInfo.NO_AUDIT_LOG_INFO);
            if (orgSecretsToPath.size() > 0) {
                // Delete any group secret giving these users access to org secrets
                // strange side effect: personal teams may be mysteriously removed from org secrets
                // TODO: Potential bug: removing the last personal team will "orphan" the secret
                String groupSecretDelete = String.format(
                        "DELETE FROM group_secret WHERE id IN ("
                                + "SELECT group_secret.id FROM group_secret, acl WHERE "
                                + "  group_secret.\"serverVisibleSecret_id\" IN (%s) AND "
                                + "  group_secret.group_id = acl.group_id AND acl.member_identity IN (%s))",
                        COMMA_JOINER.join(orgSecretsToPath.keySet()), COMMA_JOINER.join(memberIdsToRemove));
                context.manager.groupSecretDao.executeRaw(groupSecretDelete);
            }
        }

        List<DBAcl> organizationAcls = CreateOrganization.makeAdminAclsForOrganization(userDb, org,
                in.promotedMemberEncryptedKeys);

        // TODO: move to authdb?
        for (DBAcl acl : organizationAcls) {
            context.manager.aclDao.create(acl);
        }

        // create private groups for each new member
        CreateOrganization.addMembersToOrganization(userDb, org, in.newMemberGroupKeys, context.manager);

        context.manager.addAuditLog(DBAudit.ACTION.MUTATE_ORGANIZATION, null, null, org, null, "");

        MutateOrganizationResponse out = new RPC.MutateOrganizationResponse();
        // TODO: validate the group?
        return out;

    } catch (CyclicGroupError e) {
        throw new MitroServletException(e);
    }
}

From source file:com.google.errorprone.bugpatterns.UnusedException.java

private static Optional<SuggestedFix> fixConstructor(NewClassTree constructor, VarSymbol exception,
        VisitorState state) {//from   w w  w  . ja va2  s  .com
    Symbol symbol = ASTHelpers.getSymbol(((JCNewClass) constructor).clazz);
    if (!(symbol instanceof ClassSymbol)) {
        return Optional.empty();
    }
    ClassSymbol classSymbol = (ClassSymbol) symbol;
    ImmutableList<MethodSymbol> constructors = classSymbol.getEnclosedElements().stream()
            .filter(Symbol::isConstructor).map(e -> (MethodSymbol) e).collect(toImmutableList());
    MethodSymbol constructorSymbol = ASTHelpers.getSymbol(constructor);
    if (constructorSymbol == null) {
        return Optional.empty();
    }
    List<Type> types = getParameterTypes(constructorSymbol);
    for (MethodSymbol proposedConstructor : constructors) {
        List<Type> proposedTypes = getParameterTypes(proposedConstructor);
        if (proposedTypes.size() != types.size() + 1) {
            continue;
        }
        Set<Modifier> constructorVisibility = Sets.intersection(constructorSymbol.getModifiers(),
                VISIBILITY_MODIFIERS);
        Set<Modifier> replacementVisibility = Sets.intersection(proposedConstructor.getModifiers(),
                VISIBILITY_MODIFIERS);
        if (constructor.getClassBody() == null && !constructorVisibility.equals(replacementVisibility)) {
            continue;
        }
        if (typesEqual(proposedTypes.subList(0, types.size()), types, state)
                && state.getTypes().isAssignable(exception.type, getLast(proposedTypes))) {
            return Optional.of(appendArgument(constructor, exception.getSimpleName().toString(), state, types));
        }
    }
    return Optional.empty();
}