Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -98,7 +99,8 @@ public EmailData mapRow(final ResultSet rs, @SuppressWarnings("unused") final in

final EnumOptionData status = EmailMessageEnumerations.status(statusId);

return EmailData.instance(id, groupId, clientId, staffId, status, emailAddress, emailSubject, message, null, null, null, null,
return EmailData.instance(id, groupId, clientId, staffId, status, emailAddress, emailSubject, message, null,
null, null, null,
null, campaignName, sentDate, errorMessage);
}
}
Expand All @@ -124,42 +126,67 @@ public EmailData retrieveOne(final Long resourceId) {

@Override
public Collection<EmailData> retrieveAllPending(final SearchParameters searchParameters) {
final String sqlPlusLimit = (searchParameters.getLimit() > 0) ? " " + sqlGenerator.limit(searchParameters.getLimit()) : "";
final String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum =? " + sqlPlusLimit;
String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?";
List<Object> params = new ArrayList<>();
params.add(EmailMessageStatusType.PENDING.getValue());

return this.jdbcTemplate.query(sql, this.emailRowMapper, EmailMessageStatusType.PENDING.getValue()); // NOSONAR
if (searchParameters.getLimit() > 0) {
sql += " " + sqlGenerator.limit(searchParameters.getLimit());
}

return this.jdbcTemplate.query(sql, this.emailRowMapper, params.toArray());
}

@Override
public Collection<EmailData> retrieveAllSent(final SearchParameters searchParameters) {
final String sqlPlusLimit = (searchParameters.getLimit() > 0) ? " " + sqlGenerator.limit(searchParameters.getLimit()) : "";
final String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?" + sqlPlusLimit;
String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?";
List<Object> params = new ArrayList<>();
params.add(EmailMessageStatusType.SENT.getValue());

if (searchParameters.getLimit() > 0) {
sql += " " + sqlGenerator.limit(searchParameters.getLimit());
}

return this.jdbcTemplate.query(sql, this.emailRowMapper, EmailMessageStatusType.SENT.getValue()); // NOSONAR
return this.jdbcTemplate.query(sql, this.emailRowMapper, params.toArray());
}

@Override
public List<Long> retrieveExternalIdsOfAllSent(final Integer limit) {
final String sqlPlusLimit = (limit > 0) ? " " + sqlGenerator.limit(limit) : "";
final String sql = "select external_id from " + this.emailRowMapper.tableName() + " where status_enum =? " + sqlPlusLimit;
String sql = "select external_id from " + this.emailRowMapper.tableName() + " where status_enum = ?";
List<Object> params = new ArrayList<>();
params.add(EmailMessageStatusType.SENT.getValue());

return this.jdbcTemplate.queryForList(sql, Long.class, EmailMessageStatusType.SENT.getValue()); // NOSONAR
if (limit > 0) {
sql += " " + sqlGenerator.limit(limit);
}

return this.jdbcTemplate.queryForList(sql, Long.class, params.toArray());
}

@Override
public Collection<EmailData> retrieveAllDelivered(final Integer limit) {
final String sqlPlusLimit = (limit > 0) ? " " + sqlGenerator.limit(limit) : "";
final String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?" + sqlPlusLimit;
String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?";
List<Object> params = new ArrayList<>();
params.add(EmailMessageStatusType.DELIVERED.getValue());

if (limit > 0) {
sql += " " + sqlGenerator.limit(limit);
}

return this.jdbcTemplate.query(sql, this.emailRowMapper, EmailMessageStatusType.DELIVERED.getValue()); // NOSONAR
return this.jdbcTemplate.query(sql, this.emailRowMapper, params.toArray());
}

@Override
public Collection<EmailData> retrieveAllFailed(final SearchParameters searchParameters) {
final String sqlPlusLimit = (searchParameters.getLimit() > 0) ? " " + sqlGenerator.limit(searchParameters.getLimit()) : "";
final String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?" + sqlPlusLimit;
String sql = "select " + this.emailRowMapper.schema() + " where emo.status_enum = ?";
List<Object> params = new ArrayList<>();
params.add(EmailMessageStatusType.FAILED.getValue());

return this.jdbcTemplate.query(sql, this.emailRowMapper, EmailMessageStatusType.FAILED.getValue()); // NOSONAR
if (searchParameters.getLimit() > 0) {
sql += " " + sqlGenerator.limit(searchParameters.getLimit());
}

return this.jdbcTemplate.query(sql, this.emailRowMapper, params.toArray());
}

@Override
Expand All @@ -168,21 +195,27 @@ public Page<EmailData> retrieveEmailByStatus(final Integer limit, final Integer
final StringBuilder sqlBuilder = new StringBuilder(200);
sqlBuilder.append("select " + sqlGenerator.calcFoundRows() + " ");
sqlBuilder.append(this.emailRowMapper.schema());

List<Object> params = new ArrayList<>();
String condition = " where ";

if (status != null) {
sqlBuilder.append(" where emo.status_enum= ? ");
sqlBuilder.append(condition).append("emo.status_enum = ?");
params.add(status);
condition = " and ";
}
String fromDateString = null;
String toDateString = null;

if (dateFrom != null && dateTo != null) {
fromDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateFrom);
toDateString = DateUtils.DEFAULT_DATE_FORMATTER.format(dateTo);
sqlBuilder.append(" and emo.submittedon_date >= ? and emo.submittedon_date <= ? ");
sqlBuilder.append(condition).append("emo.submittedon_date >= ? and emo.submittedon_date <= ?");
params.add(DateUtils.DEFAULT_DATE_FORMATTER.format(dateFrom));
params.add(DateUtils.DEFAULT_DATE_FORMATTER.format(dateTo));
}
final String sqlPlusLimit = (limit > 0) ? " " + sqlGenerator.limit(limit) : "";
if (!sqlPlusLimit.isEmpty()) {
sqlBuilder.append(sqlPlusLimit);

if (limit != null && limit > 0) {
sqlBuilder.append(" ").append(sqlGenerator.limit(limit));
}
return this.paginationHelper.fetchPage(this.jdbcTemplate, sqlBuilder.toString(),
new Object[] { status, fromDateString, toDateString }, this.emailRowMapper);

return this.paginationHelper.fetchPage(this.jdbcTemplate, sqlBuilder.toString(), params.toArray(),
this.emailRowMapper);
}
}