List of usage examples for com.google.common.collect Multimaps transformValues
public static <K, V1, V2> ListMultimap<K, V2> transformValues(ListMultimap<K, V1> fromMultimap, final Function<? super V1, V2> function)
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(); }