Example usage for com.google.common.collect Multimaps transformValues

List of usage examples for com.google.common.collect Multimaps transformValues

Introduction

In this page you can find the example usage for com.google.common.collect Multimaps transformValues.

Prototype

public static <K, V1, V2> ListMultimap<K, V2> transformValues(ListMultimap<K, V1> fromMultimap,
        final Function<? super V1, V2> function) 

Source Link

Document

Returns a view of a ListMultimap where each value is transformed by a function.

Usage

From source file:eu.esdihumboldt.hale.common.align.merge.impl.AbstractMergeCellMigrator.java

/**
 * Handle special case of applying source contexts to the entity that is the
 * Join focus./*from w  w w  . j a va2 s.co m*/
 * 
 * @param newCell the new cell to update the sources
 * @param originalSource the original source
 * @param migration the alignment migration
 * @param log the operation log
 * @return if the method handled the context transfer
 */
private boolean applySourceContextsToJoinFocus(MutableCell newCell, Entity originalSource,
        AlignmentMigration migration, SimpleLog log) {
    if (!MergeSettings.isTransferContextsToJoinFocus()) {
        return false;
    }

    String function = newCell.getTransformationIdentifier();
    switch (function) {
    case GroovyJoin.ID:
    case JoinFunction.ID:
        break;
    default:
        return false;
    }

    JoinParameter joinConfig = CellUtil.getFirstParameter(newCell, JoinFunction.PARAMETER_JOIN)
            .as(JoinParameter.class);

    if (joinConfig == null || joinConfig.getTypes() == null || joinConfig.getTypes().isEmpty()) {
        return false;
    }

    TypeEntityDefinition focus = joinConfig.getTypes().iterator().next();
    AtomicReference<Filter> focusFilter = new AtomicReference<>();

    // transfer context
    newCell.setSource(ArrayListMultimap.create(Multimaps.transformValues(newCell.getSource(),
            new com.google.common.base.Function<Entity, Entity>() {

                @Override
                public Entity apply(Entity input) {
                    if (input.getDefinition().getPropertyPath().isEmpty()
                            && input.getDefinition().getType().equals(focus.getType())) {
                        EntityDefinition transferedSource = AbstractMigration.translateContexts(
                                originalSource.getDefinition(), input.getDefinition(), migration, log);
                        focusFilter.set(transferedSource.getFilter());
                        return AlignmentUtil.createEntity(transferedSource);
                    } else {
                        return input;
                    }
                }
            })));

    // fix filter in order and conditions
    // XXX only works like this because a type currently can only be present
    // once in the source

    if (focusFilter.get() != null) {
        // order
        List<TypeEntityDefinition> types = new ArrayList<>();
        for (int i = 0; i < joinConfig.getTypes().size(); i++) {
            TypeEntityDefinition type = joinConfig.getTypes().get(i);
            if (i == 0) {
                type = new TypeEntityDefinition(type.getDefinition(), type.getSchemaSpace(), focusFilter.get());
            }
            types.add(type);
        }

        // conditions
        Set<JoinCondition> conditions = joinConfig.getConditions().stream().map(c -> {
            if (c.baseProperty.getType().equals(focus.getType())) {
                return new JoinCondition(applyFilter(c.baseProperty, focusFilter.get()), c.joinProperty);
            } else {
                return c;
            }
        }).collect(Collectors.toSet());

        JoinParameter newConfig = new JoinParameter(types, conditions);

        ListMultimap<String, ParameterValue> modParams = ArrayListMultimap
                .create(newCell.getTransformationParameters());
        List<ParameterValue> joinParams = modParams.get(JoinFunction.PARAMETER_JOIN);
        if (!joinParams.isEmpty()) {
            JoinParameter joinParam = joinParams.get(0).as(JoinParameter.class);
            if (joinParam != null) {
                joinParams.clear();
                joinParams.add(new ParameterValue(Value.complex(newConfig)));
            }
        }
        newCell.setTransformationParameters(modParams);
    }

    return true;
}

From source file:com.proofpoint.http.client.MediaType.java

/**
 * Returns the string representation of this media type in the format described in <a
 * href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>.
 *///from   w  w w  . j  a v a 2s .c  o  m
@Override
public String toString() {
    StringBuilder builder = new StringBuilder().append(type).append('/').append(subtype);
    if (!parameters.isEmpty()) {
        builder.append("; ");
        Multimap<String, String> quotedParameters = Multimaps.transformValues(parameters,
                new Function<String, String>() {
                    @Override
                    public String apply(String value) {
                        return TOKEN_MATCHER.matchesAllOf(value) ? value : escapeAndQuote(value);
                    }
                });
        PARAMETER_JOINER.appendTo(builder, quotedParameters.entries());
    }
    return builder.toString();
}

From source file:com.linecorp.armeria.common.MediaType.java

private String computeToString() {
    StringBuilder builder = new StringBuilder().append(type).append('/').append(subtype);
    if (!parameters.isEmpty()) {
        builder.append("; ");
        Multimap<String, String> quotedParameters = Multimaps.transformValues(parameters,
                value -> TOKEN_MATCHER.matchesAllOf(value) ? value : escapeAndQuote(value));
        PARAMETER_JOINER.appendTo(builder, quotedParameters.entries());
    }//from  ww w.jav  a2 s  . c  o  m
    return builder.toString();
}