Example usage for com.google.common.collect ListMultimap get

List of usage examples for com.google.common.collect ListMultimap get

Introduction

In this page you can find the example usage for com.google.common.collect ListMultimap get.

Prototype

@Override
List<V> get(@Nullable K key);

Source Link

Document

Because the values for a given key may have duplicates and follow the insertion ordering, this method returns a List , instead of the java.util.Collection specified in the Multimap interface.

Usage

From source file:eu.esdihumboldt.hale.io.xtraserver.writer.handler.FormattedStringHandler.java

/**
 * @see eu.esdihumboldt.hale.io.xtraserver.writer.handler.TransformationHandler#handle(eu.esdihumboldt.hale.common.align.model.Cell)
 *///from ww w  . ja v  a2 s . c o  m
@Override
public Optional<MappingValue> doHandle(final Cell propertyCell, final Property targetProperty) {

    // Get the formatted string from parameters
    final ListMultimap<String, ParameterValue> parameters = propertyCell.getTransformationParameters();
    final List<ParameterValue> patterns = parameters.get("pattern");
    if (patterns == null || patterns.isEmpty() || patterns.get(0).isEmpty()) {
        mappingContext.getReporter().warn("Formatted string was ignored, no pattern set.");
        return Optional.empty();
    }
    final String pattern = patterns.get(0).as(String.class);
    final StringBuilder formattedStr = new StringBuilder(mappingContext.resolveProjectVars(pattern));

    if (propertyCell.getSource() != null && !propertyCell.getSource().asMap().get("var").isEmpty()) {
        final List<String> variables = propertyCell.getSource().asMap().get("var").stream()
                .map(var -> propertyName(var.getDefinition().getPropertyPath())).collect(Collectors.toList());
        final List<int[]> startEndList = new ArrayList<int[]>();
        final List<String> varList = new ArrayList<String>();
        final Matcher m = VARIABLE_PATTERN.matcher(formattedStr);
        while (m.find()) {
            int[] startEnd = new int[2];
            startEnd[0] = m.start(); // index of '{' character
            startEnd[1] = m.end(); // index of '}' character
            startEndList.add(startEnd);
            varList.add(m.group(1)); // the variable name, without curly braces
        }

        List<String> missingVars = varList.stream().filter(var -> !variables.contains(var))
                .collect(Collectors.toList());
        if (!missingVars.isEmpty()) {
            mappingContext.getReporter().warn("Formatted string was ignored. Variables \"" + missingVars
                    + "\" were used in pattern, but do not exist in source properties.");
            return Optional.empty();
        }

        final StringBuilder varBuilder = new StringBuilder();
        int idxOffset = 0;

        // Add ' if string does not start with a variable definition
        if (startEndList.get(0)[0] != 0) {
            formattedStr.insert(0, '\'');
            varBuilder.append(XS_CONCAT_LEFT_STR);
            idxOffset++;
        }
        int firstStartIdx = startEndList.get(0)[0] + idxOffset;
        int firstEndIdx = startEndList.get(0)[1] + idxOffset;
        varBuilder.append(XS_VAR_PREFIX);
        varBuilder.append(varList.get(0));
        if (firstEndIdx - idxOffset != pattern.length()) {
            rightConcat(varBuilder, 0, startEndList);
            if (varList.size() == 1) {
                formattedStr.append('\'');
            }
        }
        formattedStr.replace(firstStartIdx, firstEndIdx, varBuilder.toString());
        idxOffset += varBuilder.length() - firstEndIdx + firstStartIdx;
        varBuilder.setLength(0);

        if (varList.size() > 1) {
            for (int i = 1; i < startEndList.size(); i++) {
                final int startIdx = startEndList.get(i)[0] + idxOffset;
                final int endIdx = startEndList.get(i)[1] + idxOffset;
                leftConcat(varBuilder, i, startEndList);
                varBuilder.append(XS_VAR_PREFIX);
                varBuilder.append(varList.get(i));
                rightConcat(varBuilder, i, startEndList);
                formattedStr.replace(startIdx, endIdx, varBuilder.toString());
                idxOffset += varBuilder.length() - endIdx + startIdx;
                varBuilder.setLength(0);
            }
            // Remove || ' after the last variable or append ' after the last string
            if (startEndList.get(startEndList.size() - 1)[1] == pattern.length()) {
                formattedStr.setLength(formattedStr.length() - XS_CONCAT_RIGHT_STR.length());
            } else {
                formattedStr.append(XS_CONCAT_LEFT_STR);
            }
        }
    } else {
        formattedStr.insert(0, '\'');
        // Simple string without formatting
        formattedStr.append('\'');
    }

    final MappingValue mappingValue = new MappingValueBuilder().expression()
            .qualifiedTargetPath(buildPath(targetProperty.getDefinition().getPropertyPath()))
            .value(formattedStr.toString()).build();

    return Optional.of(mappingValue);
}

From source file:edu.upenn.mkse212.pennbook.server.UserServiceImpl.java

@Override
public Map<String, ArrayList<String>> login(String email, String password) {
    String query = String.format("SELECT * FROM %s WHERE %s='%s'", DB_DOMAIN, EMAIL_ATTR, email);
    String userAsJson = "";
    List<ListMultimap<String, String>> userAttrs = store.selectMulti(query);
    Map<String, ArrayList<String>> convAttrs = null;
    for (ListMultimap<String, String> userMap : userAttrs) {
        String salt = userMap.get(SALT_ATTR).get(0);
        String receivedPasswordHash;
        try {/*  w ww .  java2  s  . c om*/
            receivedPasswordHash = Credentials.hashPassword(password, salt);
            String dbPasswordHash = userMap.get(PASSWORD_HASH_ATTR).get(0);
            if (dbPasswordHash.equals(receivedPasswordHash)) {
                convAttrs = MapUtil.convertMultimap(userMap);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return convAttrs;
}

From source file:org.onosproject.layout.LayoutAlgorithm.java

private String count(ListMultimap<String, ? extends ElementId> categories) {
    StringBuilder sb = new StringBuilder("[ ");
    categories.keySet().forEach(k -> sb.append(k).append("=").append(categories.get(k).size()).append(" "));
    return sb.append("]").toString();
}

From source file:org.envirocar.server.mongo.MongoDB.java

@SuppressWarnings("unchecked")
protected <T> Iterable<T> deref(Class<T> clazz, List<Key<T>> keys) {
    if (keys == null || keys.isEmpty()) {
        return Collections.emptyList();
    }/*  w w  w.  j  a v a 2  s.  com*/
    ListMultimap<String, Key<T>> kindMap = getKindMap(clazz, keys);
    List<Iterable<T>> fetched = Lists.newLinkedList();
    for (String kind : kindMap.keySet()) {
        List<Key<T>> kindKeys = kindMap.get(kind);
        List<Object> objIds = new ArrayList<Object>(kindKeys.size());
        Class<T> kindClass = clazz == null ? (Class<T>) kindKeys.get(0).getKindClass() : clazz;
        for (Key<T> key : kindKeys) {
            objIds.add(key.getId());
        }
        fetched.add(getDatastore().find(kind, kindClass).disableValidation().field(Mapper.ID_KEY).in(objIds)
                .fetch());
    }
    return Iterables.concat(fetched);
}

From source file:eu.esdihumboldt.hale.ui.functions.groovy.SourceViewerPage.java

@Override
public void setParameter(Set<FunctionParameterDefinition> params,
        ListMultimap<String, ParameterValue> initialValues) {
    if (initialValues != null) {
        List<ParameterValue> val = initialValues.get(parameterName);
        if (val != null && !val.isEmpty()) {
            // try text value
            Text text = val.get(0).as(Text.class);
            if (text != null && text.getText() != null) {
                initialValue = text.getText();
            } else {
                // try string value
                initialValue = val.get(0).as(String.class, initialValue);
            }/*  w  ww  . j  av  a2 s . c  om*/
        }
    }
}

From source file:eu.esdihumboldt.cst.functions.geometric.OrdinatesToPoint.java

/**
 * @see eu.esdihumboldt.hale.common.align.transformation.function.impl.AbstractPropertyTransformation#evaluate(java.lang.String,
 *      eu.esdihumboldt.hale.common.align.transformation.engine.TransformationEngine,
 *      com.google.common.collect.ListMultimap,
 *      com.google.common.collect.ListMultimap, java.util.Map,
 *      eu.esdihumboldt.hale.common.align.transformation.report.TransformationLog)
 *///from ww w . j a va  2s  . c  o  m
@Override
protected Object evaluate(String transformationIdentifier, TransformationEngine engine,
        ListMultimap<String, PropertyValue> variables, String resultName,
        PropertyEntityDefinition resultProperty, Map<String, String> executionParameters, TransformationLog log)
        throws TransformationException {
    // get x, y and z properties
    PropertyValue x = variables.get("x").get(0);
    PropertyValue y = variables.get("y").get(0);
    PropertyValue z = null;
    if (!variables.get("z").isEmpty())
        z = variables.get("z").get(0);

    // get crs definition if srs is specified
    CRSDefinition crsDef = null;
    String srs = getOptionalParameter(PARAMETER_REFERENCE_SYSTEM, null).as(String.class);
    if (srs != null)
        crsDef = new CodeDefinition(srs, null);

    // convert values to double and create a point
    double xValue = x.getValueAs(Double.class);
    double yValue = y.getValueAs(Double.class);
    Point resultPoint;
    GeometryFactory geomFactory = new GeometryFactory();
    if (z == null)
        resultPoint = geomFactory.createPoint(new Coordinate(xValue, yValue));
    else
        resultPoint = geomFactory.createPoint(new Coordinate(xValue, yValue, z.getValueAs(Double.class)));

    // pack result into geometry property and return it
    GeometryProperty<Point> result = new DefaultGeometryProperty<Point>(crsDef, resultPoint);
    return result;
}

From source file:com.google.gerrit.server.change.AbandonUtil.java

public void abandonInactiveOpenChanges() {
    if (cfg.getAbandonAfter() <= 0) {
        return;//from w  w  w.j av a 2  s  . co  m
    }

    try {
        String query = "status:new age:" + TimeUnit.MILLISECONDS.toMinutes(cfg.getAbandonAfter()) + "m";
        if (!cfg.getAbandonIfMergeable()) {
            query += " -is:mergeable";
        }

        List<ChangeData> changesToAbandon = queryProcessor.enforceVisibility(false)
                .query(queryBuilder.parse(query)).entities();
        ImmutableListMultimap.Builder<Project.NameKey, ChangeControl> builder = ImmutableListMultimap.builder();
        for (ChangeData cd : changesToAbandon) {
            ChangeControl control = cd.changeControl(internalUser);
            builder.put(control.getProject().getNameKey(), control);
        }

        int count = 0;
        ListMultimap<Project.NameKey, ChangeControl> abandons = builder.build();
        String message = cfg.getAbandonMessage();
        for (Project.NameKey project : abandons.keySet()) {
            Collection<ChangeControl> changes = getValidChanges(abandons.get(project), query);
            try {
                abandon.batchAbandon(project, internalUser, changes, message);
                count += changes.size();
            } catch (Throwable e) {
                StringBuilder msg = new StringBuilder("Failed to auto-abandon inactive change(s):");
                for (ChangeControl change : changes) {
                    msg.append(" ").append(change.getId().get());
                }
                msg.append(".");
                log.error(msg.toString(), e);
            }
        }
        log.info(String.format("Auto-Abandoned %d of %d changes.", count, changesToAbandon.size()));
    } catch (QueryParseException | OrmException e) {
        log.error("Failed to query inactive open changes for auto-abandoning.", e);
    }
}

From source file:org.fim.internal.StateComparator.java

private List<FileState> findFilesWithSameHash(FileState search, ListMultimap<FileHash, FileState> fileStates) {
    return fileStates.get(search.getFileHash());
}

From source file:io.prestosql.cost.UnionStatsRule.java

private PlanNodeStatsEstimate mapToOutputSymbols(PlanNodeStatsEstimate estimate,
        ListMultimap<Symbol, Symbol> mapping, int index) {
    PlanNodeStatsEstimate.Builder mapped = PlanNodeStatsEstimate.builder()
            .setOutputRowCount(estimate.getOutputRowCount());

    mapping.keySet().stream().forEach(symbol -> mapped.addSymbolStatistics(symbol,
            estimate.getSymbolStatistics(mapping.get(symbol).get(index))));

    return mapped.build();
}

From source file:org.sonar.server.startup.RegisterNewProfiles.java

public void start() {
    TimeProfiler profiler = new TimeProfiler(LOGGER).start("Register Quality Profiles");
    session = sessionFactory.getSession();
    ListMultimap<String, RulesProfile> profilesByLanguage = loadDefinitions();
    for (String language : profilesByLanguage.keySet()) {
        List<RulesProfile> profiles = profilesByLanguage.get(language);
        verifyLanguage(language, profiles);

        for (Map.Entry<String, Collection<RulesProfile>> entry : groupByName(profiles).entrySet()) {
            String name = entry.getKey();
            if (shouldRegister(language, name)) {
                register(language, name, entry.getValue());
            }/*from w  w  w  . java 2  s .co m*/
        }

        setDefault(language, profiles);
    }
    session.commit();
    profiler.stop();
}