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:com.zimbra.cs.service.formatter.VCard.java

public static VCard formatContact(Contact con, Collection<String> vcattrs, boolean includeXProps,
        boolean includeZimbraXProps) {
    Map<String, String> fields = con.getFields();
    List<Attachment> attachments = con.getAttachments();
    List<String> emails = con.getEmailAddresses(DerefGroupMembersOption.NONE);

    StringBuilder sb = new StringBuilder();
    sb.append("BEGIN:VCARD\r\n");

    // This is from RFC 2426 (vCard version 3.0) Section 1:
    // Profile special notes: The vCard object MUST contain the FN, N and VERSION types.

    if (vcattrs == null || vcattrs.contains("VERSION"))
        sb.append("VERSION:3.0\r\n");

    // FN is a mandatory component of the vCard -- try our best to find or generate one
    String fn = fields.get(ContactConstants.A_fullName);
    if (vcattrs == null || vcattrs.contains("FN")) {
        if (fn == null || fn.trim().equals(""))
            try {
                fn = con.getFileAsString();
            } catch (ServiceException e) {
                fn = "";
            }/* w  w  w.j a  va  2s.c  o  m*/
        if (fn.trim().equals("") && !emails.isEmpty())
            fn = emails.get(0);
        if (fn.trim().equals("")) {
            String org = fields.get(ContactConstants.A_company);
            if (org != null && !org.trim().equals("")) {
                fn = org;
            }
        }
        sb.append("FN:").append(vcfEncode(fn)).append("\r\n");
    }

    if (vcattrs == null || vcattrs.contains("N")) {
        StringBuilder nSb = new StringBuilder();
        nSb.append(vcfEncode(fields.get(ContactConstants.A_lastName))).append(';')
                .append(vcfEncode(fields.get(ContactConstants.A_firstName))).append(';')
                .append(vcfEncode(fields.get(ContactConstants.A_middleName))).append(';')
                .append(vcfEncode(fields.get(ContactConstants.A_namePrefix))).append(';')
                .append(vcfEncode(fields.get(ContactConstants.A_nameSuffix)));
        String n = nSb.toString();
        // N is mandatory according to  RFC 2426 Section 1, so include it even if all components are empty
        // In fact, clients like Mac OS X Mavericks Contacts will just have blank names if it is blank,
        // so, try to avoid that.
        if (";;;;".equals(n)) {
            n = vcfEncode(fn) + ";;;;";
        }
        sb.append("N:").append(n).append("\r\n");
    }

    if (vcattrs == null || vcattrs.contains("NICKNAME"))
        encodeField(sb, "NICKNAME", fields.get(ContactConstants.A_nickname));
    if (vcattrs == null || vcattrs.contains("PHOTO"))
        encodeField(sb, "PHOTO;VALUE=URI", fields.get(ContactConstants.A_image));
    if (vcattrs == null || vcattrs.contains("BDAY")) {
        String bday = fields.get(ContactConstants.A_birthday);
        if (bday != null) {
            Date date = DateUtil.parseDateSpecifier(bday);
            if (date != null)
                sb.append("BDAY;VALUE=date:").append(new SimpleDateFormat("yyyy-MM-dd").format(date))
                        .append("\r\n");
        }
    }

    if (vcattrs == null || vcattrs.contains("ADR")) {
        encodeAddress(sb, "home,postal,parcel", ContactConstants.A_homeStreet, ContactConstants.A_homeCity,
                ContactConstants.A_homeState, ContactConstants.A_homePostalCode, ContactConstants.A_homeCountry,
                2, fields);
        encodeAddress(sb, "work,postal,parcel", ContactConstants.A_workStreet, ContactConstants.A_workCity,
                ContactConstants.A_workState, ContactConstants.A_workPostalCode, ContactConstants.A_workCountry,
                2, fields);
        encodeAddress(sb, "postal,parcel", ContactConstants.A_otherStreet, ContactConstants.A_otherCity,
                ContactConstants.A_otherState, ContactConstants.A_otherPostalCode,
                ContactConstants.A_otherCountry, 2, fields);
    }

    if (vcattrs == null || vcattrs.contains("TEL")) {
        // omitting callback phone for now
        encodePhone(sb, "car,voice", ContactConstants.A_carPhone, 2, fields);
        encodePhone(sb, "home,fax", ContactConstants.A_homeFax, 2, fields);
        encodePhone(sb, "home,voice", ContactConstants.A_homePhone, 2, fields);
        encodePhone(sb, "cell,voice", ContactConstants.A_mobilePhone, 2, fields);
        encodePhone(sb, "fax", ContactConstants.A_otherFax, 2, fields);
        encodePhone(sb, "voice", ContactConstants.A_otherPhone, 2, fields);
        encodePhone(sb, "pager", ContactConstants.A_pager, 2, fields);
        encodePhone(sb, "work,fax", ContactConstants.A_workFax, 2, fields);
        encodePhone(sb, "work,voice", ContactConstants.A_workPhone, 2, fields);
    }

    if (vcattrs == null || vcattrs.contains("EMAIL")) {
        encodeField(sb, "EMAIL;TYPE=internet", ContactConstants.A_email, false, 2, fields);
        encodeField(sb, "EMAIL;TYPE=internet", "workEmail", true, 1, fields);
    }

    if (vcattrs == null || vcattrs.contains("URL")) {
        encodeField(sb, "URL;TYPE=home", ContactConstants.A_homeURL, false, 2, fields);
        encodeField(sb, "URL", ContactConstants.A_otherURL, false, 2, fields);
        encodeField(sb, "URL;TYPE=work", ContactConstants.A_workURL, false, 2, fields);
    }

    if (vcattrs == null || vcattrs.contains("ORG")) {
        String org = fields.get(ContactConstants.A_company);
        if (org != null && !org.trim().equals("")) {
            org = vcfEncode(org);
            String dept = fields.get(ContactConstants.A_department);
            if (dept != null && !dept.trim().equals("")) {
                org += ';' + vcfEncode(dept);
            }
            sb.append("ORG:").append(org).append("\r\n");
        }
    }
    if (vcattrs == null || vcattrs.contains("TITLE"))
        encodeField(sb, "TITLE", fields.get(ContactConstants.A_jobTitle));

    if (vcattrs == null || vcattrs.contains("NOTE"))
        encodeField(sb, "NOTE", fields.get(ContactConstants.A_notes));

    if ((vcattrs == null || vcattrs.contains("PHOTO")) && attachments != null) {
        for (Attachment attach : attachments) {
            try {
                if (attach.getName().equalsIgnoreCase(ContactConstants.A_image)) {
                    String field = "PHOTO;ENCODING=B";
                    if (attach.getContentType().startsWith("image/")) {
                        // We want just the subtype, ignoring any name etc
                        try {
                            ContentType ct = new ContentType(attach.getContentType());
                            if (ct != null) {
                                String subType = ct.getSubType();
                                if (!Strings.isNullOrEmpty(subType)) {
                                    field += ";TYPE=" + ct.getSubType().toUpperCase();
                                }
                            }
                        } catch (ParseException e) {
                        }
                    }
                    String encoded = new String(Base64.encodeBase64Chunked(attach.getContent())).trim()
                            .replace("\r\n", "\r\n ");
                    sb.append(field).append(":\r\n ").append(encoded).append("\r\n");
                }
            } catch (OutOfMemoryError e) {
                Zimbra.halt("out of memory", e);
            } catch (Throwable t) {
                ZimbraLog.misc.info("error fetching attachment content: " + attach.getName(), t);
            }
        }
    }

    if (vcattrs == null || vcattrs.contains("KEY")) {
        String smimeCert = fields.get(ContactConstants.A_userSMIMECertificate);
        if (smimeCert == null) {
            smimeCert = fields.get(ContactConstants.A_userCertificate);
        }
        if (smimeCert != null) {
            smimeCert = smimeCert.trim().replace("\r\n", "\r\n ");
            String field = "KEY;ENCODING=B";
            sb.append(field).append(":\r\n ").append(smimeCert).append("\r\n");
        }
    }

    if (vcattrs == null || vcattrs.contains("CATEGORIES")) {
        String[] tags = con.getTags();
        if (tags.length > 0) {
            StringBuilder sbtags = new StringBuilder();
            for (String tagName : tags) {
                sbtags.append(sbtags.length() == 0 ? "" : ",").append(vcfEncode(tagName));
            }
            sb.append("CATEGORIES:").append(sbtags).append("\r\n");
        }
    }

    String uid = getUid(con);
    if (vcattrs == null || vcattrs.contains("REV")) {
        sb.append("REV:")
                .append(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(new Date(con.getDate())))
                .append("\r\n");
    }
    if (vcattrs == null || vcattrs.contains("UID")) {
        sb.append("UID:").append(uid).append("\r\n");
    }
    // sb.append("MAILER:Zimbra ").append(BuildInfo.VERSION).append("\r\n");
    if ((vcattrs == null && includeZimbraXProps)
            || (vcattrs != null && vcattrs.contains("X-ZIMBRA-IMADDRESS"))) {
        encodeField(sb, "X-ZIMBRA-IMADDRESS", "imAddress", true, 1, fields);
    }
    if ((vcattrs == null && includeZimbraXProps)
            || (vcattrs != null && vcattrs.contains("X-ZIMBRA-ANNIVERSARY"))) {
        encodeField(sb, "X-ZIMBRA-ANNIVERSARY", ContactConstants.A_anniversary, false, 2, fields);
    }
    if ((vcattrs == null && includeZimbraXProps)
            || (vcattrs != null && vcattrs.contains("X-ZIMBRA-MAIDENNAME"))) {
        String maidenName = con.get(ContactConstants.A_maidenName);
        if (maidenName != null)
            sb.append("X-ZIMBRA-MAIDENNAME:").append(maidenName).append("\r\n");
    }
    if (includeXProps) {
        ListMultimap<String, VCardParamsAndValue> unknownVCardProps = con.getUnknownVCardProps();
        for (String key : unknownVCardProps.keySet()) {
            for (VCardParamsAndValue paramsAndValue : unknownVCardProps.get(key)) {
                StringWriter sw = new StringWriter();
                try (FoldingWriter writer = new FoldingWriter(sw)) {
                    writer.write(key);
                    String value = paramsAndValue.getValue();
                    Set<String> params = paramsAndValue.getParams();
                    if (!params.isEmpty()) {
                        writer.write(";");
                        writer.write(Joiner.on(";").join(params));
                    }
                    String vcfEncodedValue;
                    if (params.contains("ENCODING=B")) {
                        vcfEncodedValue = value; // should be raw BASE64
                    } else {
                        vcfEncodedValue = vcfEncode(value);
                    }
                    writer.write(":");
                    writer.write(vcfEncodedValue);
                    writer.write("\r\n");
                    sb.append(sw.toString());
                } catch (IOException e) {
                    ZimbraLog.misc.debug("Problem with adding property '%s' to VCARD - ignoring", key, e);
                }
            }
        }
    }
    sb.append("END:VCARD\r\n");
    return new VCard(fn, sb.toString(), fields, attachments, uid);
}

From source file:org.sonar.plugins.checkstyle.CheckstyleProfileExporter.java

private void appendCheckerModules(Writer writer, ListMultimap<String, ActiveRule> activeRulesByConfigKey)
        throws IOException {
    for (String configKey : activeRulesByConfigKey.keySet()) {
        if (!isInTreeWalker(configKey)) {
            List<ActiveRule> activeRules = activeRulesByConfigKey.get(configKey);
            for (ActiveRule activeRule : activeRules) {
                appendModule(writer, activeRule);
            }//  w ww. j a  v  a  2s  .co  m
        }
    }
}

From source file:com.echosource.ada.rules.AdaProfileExporter.java

private void appendCheckerModules(Writer writer, ListMultimap<String, ActiveRule> activeRulesByConfigKey)
        throws IOException {
    for (String configKey : activeRulesByConfigKey.keySet()) {
        if (!isInTreeWalker(configKey)) {
            List<ActiveRule> activeRules = activeRulesByConfigKey.get(configKey);
            for (ActiveRule activeRule : activeRules) {
                appendModule(writer, activeRule, activeRules.size() > 1);
            }// ww  w  . j a  va2s.  co  m
        }
    }
}

From source file:org.obiba.onyx.quartz.editor.locale.LocaleProperties.java

public void removeValue(IQuestionnaireElement element, Locale locale, final String key) {
    ListMultimap<Locale, KeyValue> labels = getElementLabels(element);
    if (labels != null) {
        List<KeyValue> keyValueList = labels.get(locale);
        if (keyValueList != null && !keyValueList.isEmpty()) {
            Iterables.removeIf(keyValueList, new Predicate<KeyValue>() {
                @Override//from  www  .  j  av a 2s  . c  o m
                public boolean apply(@Nullable KeyValue keyValue) {
                    return keyValue != null && StringUtils.equals(keyValue.getKey(), key);
                }
            });
        }
    }
}

From source file:com.greensopinion.finance.services.transaction.TransactionNormalizer.java

/**
 * Removes transaction pairs that are self-canceling.
 *//* w  w  w .  j  ava2 s  .c  o m*/
public List<Transaction> normalize(List<Transaction> transactions) {
    List<Transaction> normalizedTransactions = new ArrayList<>(transactions);

    ListMultimap<Long, Transaction> transactionByAbsoluteValue = ArrayListMultimap.create();
    for (Transaction transaction : transactions) {
        transactionByAbsoluteValue.put(Math.abs(transaction.getAmount()), transaction);
    }
    for (Long amount : transactionByAbsoluteValue.keySet()) {
        List<Transaction> list = transactionByAbsoluteValue.get(amount);
        Set<Transaction> canceledOut = Sets.newIdentityHashSet();
        for (Transaction transaction : list) {
            if (canceledOut.contains(transaction)) {
                continue;
            }
            for (Transaction transaction2 : list) {
                if (transaction.getAmount() == -transaction2.getAmount()
                        && !canceledOut.contains(transaction2)) {
                    canceledOut.add(transaction);
                    canceledOut.add(transaction2);
                    break;
                }
            }
        }
        normalizedTransactions.removeAll(canceledOut);
    }

    return normalizedTransactions;
}

From source file:springfox.documentation.spring.web.plugins.DefaultRequestHandlerCombiner.java

private Collection<? extends RequestHandler> combined(Collection<RequestHandler> requestHandlers) {
    List<RequestHandler> source = newArrayList(requestHandlers);
    if (source.size() == 0 || source.size() == 1) {
        return requestHandlers;
    }/*from  w  w  w. j  a v a 2s.  com*/
    ListMultimap<Equivalence.Wrapper<RequestHandler>, RequestHandler> groupByEquality = Multimaps.index(source,
            equivalenceAsKey());
    List<RequestHandler> combined = newArrayList();
    for (Equivalence.Wrapper<RequestHandler> path : groupByEquality.keySet()) {
        List<RequestHandler> handlers = groupByEquality.get(path);

        RequestHandler toCombine = path.get();
        if (handlers.size() > 1) {
            for (RequestHandler each : handlers) {
                toCombine = combine(toCombine, each);
            }
        }
        combined.add(toCombine);
    }
    return combined;
}

From source file:org.obiba.onyx.quartz.editor.locale.LocaleProperties.java

public KeyValue getKeyValue(IQuestionnaireElement element, Locale locale, final String key) {
    ListMultimap<Locale, KeyValue> labels = getElementLabels(element);
    if (labels != null) {
        List<KeyValue> keyValueList = labels.get(locale);
        if (keyValueList != null) {
            try {
                return Iterables.find(keyValueList, new Predicate<KeyValue>() {
                    @Override//from   w  w w  .ja  v a  2s  . com
                    public boolean apply(@Nullable KeyValue keyValue) {
                        return keyValue != null && StringUtils.equals(keyValue.getKey(), key);
                    }
                });
            } catch (NoSuchElementException e) {
                // do nothing
            }
        }
    }
    return null;
}

From source file:info.magnolia.configuration.app.problem.ProblemSubApp.java

private String createStatus(ListMultimap<String, Problem> problems) {
    List<String> status = new ArrayList<String>();
    for (String problemType : problems.keySet()) {
        status.add(i18n.translate("problem.group.message", problems.get(problemType).size(), problemType));
    }/* w ww  . jav  a 2s .  c  om*/

    return StringUtils.join(status, ", ");
}

From source file:org.obiba.onyx.quartz.editor.locale.LocaleProperties.java

public void removeValue(IQuestionnaireElement element, final String key) {
    for (Locale locale : getLocales()) {
        ListMultimap<Locale, KeyValue> labels = getElementLabels(element);
        if (labels != null) {
            List<KeyValue> keyValueList = labels.get(locale);
            if (keyValueList != null && !keyValueList.isEmpty()) {
                Iterables.removeIf(keyValueList, new Predicate<KeyValue>() {
                    @Override//from w  w  w.ja  v a2  s  . c  o  m
                    public boolean apply(@Nullable KeyValue keyValue) {
                        return keyValue != null && StringUtils.equals(keyValue.getKey(), key);
                    }
                });
            }
        }
    }
}

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

public void start() {
    TimeProfiler profiler = new TimeProfiler(LOGGER).start("Register Quality Profiles");
    session = sessionFactory.getSession();

    // hibernate session can contain an invalid cache of rules
    session.commit();/*from   w  w w.  ja  v a2s  .c  om*/

    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());
            }
        }

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

    esActiveRule.bulkRegisterActiveRules();
}