From 19709fa2ade17433b9a76ad4459e1e09d27b88bf Mon Sep 17 00:00:00 2001 From: Alexander Alexeev Date: Thu, 17 Nov 2016 23:45:13 +0700 Subject: repository improvenments: using Collection in params, forse using exists in some query, force using Lists as query result --- .../com/juick/service/PushQueriesServiceImpl.java | 38 ++++++++++++++-------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'juick-server/src/main/java/com/juick/service/PushQueriesServiceImpl.java') diff --git a/juick-server/src/main/java/com/juick/service/PushQueriesServiceImpl.java b/juick-server/src/main/java/com/juick/service/PushQueriesServiceImpl.java index 9bbadef6..b11f0a79 100644 --- a/juick-server/src/main/java/com/juick/service/PushQueriesServiceImpl.java +++ b/juick-server/src/main/java/com/juick/service/PushQueriesServiceImpl.java @@ -1,11 +1,14 @@ package com.juick.service; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; import javax.inject.Inject; +import java.util.Collection; +import java.util.Collections; import java.util.List; /** @@ -29,10 +32,13 @@ public class PushQueriesServiceImpl extends BaseJdbcService implements PushQueri } @Override - public List getAndroidTokens(final List uids) { - return getJdbcTemplate().queryForList( - "SELECT regid FROM android INNER JOIN users " + - "ON (users.id=android.user_id) WHERE users.id IN (" + StringUtils.collectionToCommaDelimitedString(uids) + ")", + public List getAndroidTokens(final Collection uids) { + if (CollectionUtils.isEmpty(uids)) + return Collections.emptyList(); + + return getNamedParameterJdbcTemplate().queryForList( + "SELECT regid FROM android INNER JOIN users ON (users.id = android.user_id) WHERE users.id IN (:ids)", + new MapSqlParameterSource("ids", uids), String.class); } @@ -45,10 +51,13 @@ public class PushQueriesServiceImpl extends BaseJdbcService implements PushQueri } @Override - public List getWindowsTokens(final List uids) { - return getJdbcTemplate().queryForList( - "SELECT url FROM winphone INNER JOIN users " + - "ON (users.id=winphone.user_id) WHERE users.id IN (" + StringUtils.collectionToCommaDelimitedString(uids) + ")", + public List getWindowsTokens(final Collection uids) { + if (CollectionUtils.isEmpty(uids)) + return Collections.emptyList(); + + return getNamedParameterJdbcTemplate().queryForList( + "SELECT url FROM winphone INNER JOIN users ON (users.id=winphone.user_id) WHERE users.id IN (:ids)", + new MapSqlParameterSource("ids", uids), String.class); } @@ -66,10 +75,13 @@ public class PushQueriesServiceImpl extends BaseJdbcService implements PushQueri } @Override - public List getAPNSTokens(final List uids) { - return getJdbcTemplate().queryForList( - "SELECT token FROM ios INNER JOIN users " + - "ON (users.id=ios.user_id) WHERE users.id IN (" + StringUtils.collectionToCommaDelimitedString(uids) + ")", + public List getAPNSTokens(final Collection uids) { + if (CollectionUtils.isEmpty(uids)) + return Collections.emptyList(); + + return getNamedParameterJdbcTemplate().queryForList( + "SELECT token FROM ios INNER JOIN users ON (users.id = ios.user_id) WHERE users.id IN (:ids)", + new MapSqlParameterSource("ids", uids), String.class); } } -- cgit v1.2.3