@Override public long getCountByApplication(String applicationId) throws TException { return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .size(); }
@Override public long getCountByApplication(String applicationId) throws TException { return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .size(); }
@Override public List<Message> getByApplication(String applicationId) throws TException { checkThat(applicationId) .throwing(InvalidArgumentException.class) .is(validApplicationId()); return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .stream() .map(id -> messages.get(id)) .filter(Objects::nonNull) .collect(toList()); }
@Override public List<Message> getByApplication(String applicationId) throws TException { checkThat(applicationId) .throwing(InvalidArgumentException.class) .is(validApplicationId()); return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .stream() .map(id -> messages.get(id)) .filter(Objects::nonNull) .collect(toList()); }
@Override public void expired(String key, Message value) { if(isNullOrEmpty(key)) { return; } if(Objects.isNull(value)) { return; } String appId = value.applicationId; Set<String> appMessages = messagesByApplication.getOrDefault(appId, Sets.create()); appMessages.remove(key); messagesByApplication.put(appId, appMessages); }
@Override public void expired(String key, Message value) { if(isNullOrEmpty(key)) { return; } if(Objects.isNull(value)) { return; } String appId = value.applicationId; Set<String> appMessages = messagesByApplication.getOrDefault(appId, Sets.create()); appMessages.remove(key); messagesByApplication.put(appId, appMessages); }
@Override public List<Message> getByTitle(String applicationId, String title) throws TException { checkThat(applicationId) .throwing(InvalidArgumentException.class) .is(validApplicationId()); checkThat(title) .throwing(InvalidArgumentException.class) .is(nonEmptyString()); return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .stream() .map(id -> messages.get(id)) .filter(Objects::nonNull) .filter(m -> Objects.equals(m.title, title)) .collect(toList()); }
@Override public List<Message> getByTitle(String applicationId, String title) throws TException { checkThat(applicationId) .throwing(InvalidArgumentException.class) .is(validApplicationId()); checkThat(title) .throwing(InvalidArgumentException.class) .is(nonEmptyString()); return messagesByApplication.getOrDefault(applicationId, Sets.emptySet()) .stream() .map(id -> messages.get(id)) .filter(Objects::nonNull) .filter(m -> Objects.equals(m.title, title)) .collect(toList()); }
@Override public void deleteMessage(String applicationId, String messageId) throws TException { checkThat(applicationId, messageId) .throwing(InvalidArgumentException.class) .are(nonEmptyString()); if (!messages.containsKey(messageId)) { return; } Message message = messages.remove(messageId); String appId = message.applicationId; Set<String> appMessages = messagesByApplication.getOrDefault(appId, Sets.create()); appMessages.remove(messageId); messagesByApplication.put(appId, appMessages); }
@Override public void deleteMessage(String applicationId, String messageId) throws TException { checkThat(applicationId, messageId) .throwing(InvalidArgumentException.class) .are(nonEmptyString()); if (!messages.containsKey(messageId)) { return; } Message message = messages.remove(messageId); String appId = message.applicationId; Set<String> appMessages = messagesByApplication.getOrDefault(appId, Sets.create()); appMessages.remove(messageId); messagesByApplication.put(appId, appMessages); }
@Override public void saveMessage(Message message, LengthOfTime lifetime) throws TException { checkThat(message) .throwing(InvalidArgumentException.class) .is(validMessage()); checkThat(lifetime) .usingMessage("lifetime cannot be missing") .throwing(InvalidArgumentException.class) .is(notNull()); long seconds = TimeFunctions.toSeconds(lifetime); String msgId = message.messageId; messages.put(msgId, message, seconds, TimeUnit.SECONDS); String appId = message.applicationId; Set<String> existing = messagesByApplication.getOrDefault(appId, Sets.create()); existing.add(msgId); messagesByApplication.put(appId, existing); }
@Override public void saveMessage(Message message, LengthOfTime lifetime) throws TException { checkThat(message) .throwing(InvalidArgumentException.class) .is(validMessage()); checkThat(lifetime) .usingMessage("lifetime cannot be missing") .throwing(InvalidArgumentException.class) .is(notNull()); long seconds = TimeFunctions.toSeconds(lifetime); String msgId = message.messageId; messages.put(msgId, message, seconds, TimeUnit.SECONDS); String appId = message.applicationId; Set<String> existing = messagesByApplication.getOrDefault(appId, Sets.create()); existing.add(msgId); messagesByApplication.put(appId, existing); }