List of usage examples for com.google.common.collect ListMultimap get
@Override List<V> get(@Nullable K key);
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.
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(); }