An error occurred while loading the file. Please try again.
-
nivetha authored4aaac4aa
package com.tarento.retail.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Repository;
import com.tarento.retail.config.JwtTokenUtil;
import com.tarento.retail.dao.RoleDao;
import com.tarento.retail.dao.UserDao;
import com.tarento.retail.dto.CountryDto;
import com.tarento.retail.dto.MasterRoleDto;
import com.tarento.retail.dto.UserCountryDto;
import com.tarento.retail.dto.UserDto;
import com.tarento.retail.dto.UserMasterRoleCountryOrgDto;
import com.tarento.retail.dto.UserRoleDto;
import com.tarento.retail.model.Action;
import com.tarento.retail.model.Country;
import com.tarento.retail.model.KeyValue;
import com.tarento.retail.model.Role;
import com.tarento.retail.model.SearchRequest;
import com.tarento.retail.model.User;
import com.tarento.retail.model.UserAuthentication;
import com.tarento.retail.model.UserDeviceToken;
import com.tarento.retail.model.UserProfile;
import com.tarento.retail.model.mapper.SqlDataMapper;
import com.tarento.retail.model.mapper.SqlDataMapper.UserProfileMapper;
import com.tarento.retail.model.mapper.SqlDataMapper.UserRoleActionMapper;
import com.tarento.retail.model.mapper.SqlDataMapper.UserRoleMapper;
import com.tarento.retail.util.Constants;
import com.tarento.retail.util.Sql;
import com.tarento.retail.util.Sql.Common;
import com.tarento.retail.util.Sql.NamedUserQueries;
import com.tarento.retail.util.Sql.UserQueries;
@Repository(Constants.USER_DAO)
public class UserDaoImpl implements UserDao {
public static final Logger LOGGER = LoggerFactory.getLogger(UserDaoImpl.class);
@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
RoleDao roleDao;
@Autowired
private JwtTokenUtil jwtTokenUtil;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
@Autowired
private BCryptPasswordEncoder bcryptEncoder;
@Override
public List<Action> findAllActionsByRoleID(Integer roleID) {
List<Action> actions = new ArrayList<Action>();
try {
actions = jdbcTemplate.query(UserQueries.GET_USER_ACTIONS, new Object[] { roleID },
new SqlDataMapper().new ActionMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching all the actions by Role ID " + e);
}
return actions;
}
@Override
public User findByUsername(String username) {
User user = null;
try {
user = jdbcTemplate.query(UserQueries.SELECT_USER_ON_USERNAME, new Object[] { username, username },
new SqlDataMapper().new UserMapper()).get(0);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching the User by Username : " + e);
}
return user;
}
@Override
public UserProfileMapper findOne(Long id, Long orgId) {
UserProfileMapper mapper = new SqlDataMapper().new UserProfileMapper();
try {
jdbcTemplate.query(UserQueries.USER_PROFILE_FETCH + Common.WHERE_CLAUSE
+ UserQueries.USER_ID_EQUAL_CONDITION + UserQueries.AND_CONDITION + UserQueries.USER_ORG_ID,
new Object[] { id, orgId }, mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User By ID : " + e);
return null;
}
return mapper;
}
@Override
public UserProfileMapper findOneUser(Long id) {
UserProfileMapper mapper = new SqlDataMapper().new UserProfileMapper();
try {
jdbcTemplate.query(UserQueries.GET_USER_BY_ID, new Object[] { id }, mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User By ID : " + e);
}
return mapper;
}
@Override
public UserAuthentication findOneUserAuthentication(Long id) {
UserAuthentication user = null;
try {
user = jdbcTemplate.query(UserQueries.GET_USER_AUTH_DETAILS, new Object[] { id },
new SqlDataMapper().new UserAuthenticationMapper()).get(0);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the Users Auth Details : " + e);
}
return user;
}
@Override
public User save(final User user) {
try {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
String[] returnValColumn = new String[] { Constants.Parameters.ID };
PreparedStatement statement = con.prepareStatement(UserQueries.SAVE_USER, returnValColumn);
statement.setString(1, user.getUsername());
statement.setString(2, user.getPassword());
statement.setString(3, user.getEmailId());
statement.setString(4, user.getPhoneNo());
statement.setBoolean(5, user.getIsActive());
statement.setBoolean(6, (user.getIsDeleted() != null) ? user.getIsDeleted() : Boolean.FALSE);
statement.setString(7, user.getOrgId());
statement.setString(8, user.getTimeZone());
statement.setString(9, user.getAvatarUrl());
return statement;
}
}, keyHolder);
Long id = keyHolder.getKey().longValue();
user.setId(id);
} catch (Exception e) {
LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "save user", e.getMessage()));
return null;
}
return user;
}
@Override
public UserAuthentication save(final UserAuthentication user) {
UserAuthentication user1 = new UserAuthentication();
try {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
String[] returnValColumn = new String[] { "id" };
PreparedStatement statement = con.prepareStatement(UserQueries.SAVE_USER_AUTHENTICATION,
returnValColumn);
statement.setLong(1, user.getUserId());
statement.setString(2, user.getAuthToken());
return statement;
}
}, keyHolder);
Long id = keyHolder.getKey().longValue();
System.out.println(id);
user1 = this.findOneUserAuthentication(id);
} catch (Exception e) {
LOGGER.error("Encountered an exception while saving User Authentication : " + e);
}
return user1;
}
@Override
public User update(final User user) {
try {
jdbcTemplate.update(UserQueries.UPDATE_USER,
new Object[] { user.getEmailId(), user.getUsername(), user.getPhoneNo(),
(user.getIsActive() != null) ? user.getIsActive() : Boolean.TRUE,
(user.getIsDeleted() != null) ? user.getIsDeleted() : Boolean.FALSE, user.getTimeZone(),
user.getAvatarUrl(), user.getId() });
} catch (Exception e) {
LOGGER.error("Encountered an error while updating User Object : " + e);
return null;
}
return user;
}
@Override
public UserProfileMapper findAll(Boolean active, String keyword, List<Long> roles, String countryCode, Long orgId) {
List<Object> preparedStatementValues = new ArrayList<>();
UserProfileMapper mapper = new SqlDataMapper().new UserProfileMapper();
try {
String queryToExecute = BuildMyQuery(active, keyword, preparedStatementValues, roles, countryCode, orgId);
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
LOGGER.info("Query to fetch is ::: " + queryToExecute);
LOGGER.info("Prepared Statement Values passed for Query ::: " + preparedStatementValues.toString());
jdbcTemplate.query(queryToExecute, preparedStatementValues.toArray(), mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User Profile : " + e);
}
return mapper;
}
private String BuildMyQuery(Boolean active, String keyword, List preparedStatementValues, List<Long> roles,
String countryCode, Long orgId) {
StringBuilder builder = new StringBuilder();
StringBuilder keywordBuilder = new StringBuilder();
if (StringUtils.isNotBlank(keyword)) {
keywordBuilder.append("%" + keyword + "%");
}
builder.append(UserQueries.USER_PROFILE_FETCH);
if (active != null || StringUtils.isNotBlank(keyword) || roles != null || StringUtils.isNotBlank(countryCode)
|| StringUtils.isNotBlank(orgId.toString())) {
builder.append(Common.WHERE_CLAUSE);
Boolean andRequired = false;
if (active != null) {
if (active)
builder.append(UserQueries.TAIL_CONDITIONS_USER_ACTIVE);
else
builder.append(UserQueries.TAIL_CONDITIONS_USER_INACTIVE);
andRequired = true;
}
if (StringUtils.isNotBlank(countryCode)) {
if (andRequired)
builder.append(Common.AND_CONDITION);
builder.append(UserQueries.TAIL_CONDITIONS_COUNTRY_EQUALS);
if (countryCode.equals(Constants.CountryList.SWE.toString()))
preparedStatementValues.add(Constants.CountryList.SWE.getName());
else if (countryCode.equals(Constants.CountryList.FIN.toString()))
preparedStatementValues.add(Constants.CountryList.FIN.getName());
else if (countryCode.equals(Constants.CountryList.NOR.toString()))
preparedStatementValues.add(Constants.CountryList.NOR.getName());
else if (countryCode.equals(Constants.CountryList.IND.toString()))
preparedStatementValues.add(Constants.CountryList.IND.getName());
}
if (StringUtils.isNotBlank(keyword)) {
if (andRequired)
builder.append(Common.AND_CONDITION);
builder.append(Common.OPEN_BRACE + UserQueries.TAIL_CONDITIONS_EMAIL_LIKE + Common.OR_CONDITION
+ UserQueries.TAIL_CONDITIONS_FIRSTNAME_LIKE + Common.OR_CONDITION
+ UserQueries.TAIL_CONDITIONS_LASTNAME_LIKE + Common.OR_CONDITION
+ UserQueries.TAIL_CONDITIONS_COUNTRY_LIKE + Common.CLOSE_BRACE);
preparedStatementValues.add(keywordBuilder.toString());
preparedStatementValues.add(keywordBuilder.toString());
preparedStatementValues.add(keywordBuilder.toString());
preparedStatementValues.add(keywordBuilder.toString());
andRequired = true;
}
if (roles != null && !roles.isEmpty()) {
if (andRequired)
builder.append(Common.AND_CONDITION);
builder.append(UserQueries.TAIL_CONDITIONS_USER_ROLEIN + getIdQuery(roles));
}
// if (StringUtils.isNotBlank(orgId.toString())) {
// if (andRequired) {
// preparedStatementValues.add(orgId);
// builder.append("usrrole.org_id=?");
// }
// }
281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
// builder.append(Common.AND_CONDITION).append(UserQueries.USER_ORG_ID);
builder.append(UserQueries.USER_ORG_ID);
preparedStatementValues.add(orgId);
builder.append(UserQueries.ORDER_BY_USER_ID);
// builder.append(UserQueries.USER_ORG_ID);
}
return builder.toString();
}
private static String getIdQuery(final List<Long> idList) {
final StringBuilder query = new StringBuilder("(");
if (idList.size() >= 1) {
query.append(idList.get(0).toString());
for (int i = 1; i < idList.size(); i++)
query.append(", " + idList.get(i));
}
return query.append(")").toString();
}
@Override
public UserRoleMapper findAllRolesByUser(Long userId, String orgId, String username) {
UserRoleMapper mapper = new SqlDataMapper().new UserRoleMapper();
try {
if (StringUtils.isBlank(orgId) && userId != null) {
jdbcTemplate.query(UserQueries.GET_ROLES_FOR_USER_BY_ID, new Object[] { userId }, mapper);
} else if (StringUtils.isNotBlank(orgId) && userId != null) {
jdbcTemplate.query(UserQueries.GET_ROLES_FOR_USER, new Object[] { userId, orgId }, mapper);
} else if (StringUtils.isNotBlank(username)) {
jdbcTemplate.query(UserQueries.GET_ROLES_BY_USERNAME, new Object[] { username }, mapper);
}
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the Roles for a User : " + e);
}
return mapper;
}
@Override
public User findMobile(String phoneNo) {
User user = null;
try {
user = jdbcTemplate.query(UserQueries.GET_USER_BY_PHONE, new Object[] { phoneNo },
new SqlDataMapper().new UserMapper()).get(0);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching User by Mobile Number : " + e);
}
return user;
}
@Override
public Boolean mapUserToRole(UserRoleDto userRole) {
if (userRole.getRoles() != null || userRole.getRoleId() != null) {
try {
jdbcTemplate.update(UserQueries.REMOVE_USER_ROLE_MAP, new Object[] { userRole.getUserId() });
} catch (Exception ex) {
LOGGER.error("Encountered an exception while removing the User Role mapping : " + ex);
}
try {
Boolean updateByRoleId = userRole.getRoleId() != null && userRole.getRoleId().size() > 0;
List<Role> roleList = userRole.getRoles();
String query = (userRole.getOrgId() != null && userRole.getOrgId() != 0)
? UserQueries.MAP_USER_TO_ROLE_WITH_ORG
: UserQueries.MAP_USER_TO_ROLE;
jdbcTemplate.batchUpdate(query, new BatchPreparedStatementSetter() {
@Override
public void setValues(java.sql.PreparedStatement statement, int i) throws SQLException {
statement.setLong(1, userRole.getUserId());
statement.setLong(2, updateByRoleId ? userRole.getRoleId().get(i) : roleList.get(i).getId());
351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
if (userRole.getOrgId() != null && userRole.getOrgId() != 0) {
statement.setLong(3, userRole.getOrgId());
}
}
public int getBatchSize() {
return updateByRoleId ? userRole.getRoleId().size() : roleList.size();
}
});
return true;
} catch (Exception ex) {
ex.printStackTrace();
LOGGER.error("Exception Occured while adding Roles to User : " + ex);
}
}
return false;
}
@Override
public UserProfile saveUserProfile(UserProfile profile) {
try {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
String[] returnValColumn = new String[] { Constants.Parameters.ID };
PreparedStatement statement = con.prepareStatement(UserQueries.INSERT_USER_PROFILE,
returnValColumn);
statement.setLong(1, profile.getId());
statement.setString(2, profile.getFirstName());
statement.setString(3, profile.getLastName());
statement.setInt(4, profile.getAge());
statement.setString(5, profile.getPhoneNo());
statement.setString(6, profile.getDob());
statement.setString(7, profile.getGender());
statement.setString(8, profile.getAvatarUrl());
if (profile.getStartDate() != null) {
statement.setDate(9, new java.sql.Date(profile.getStartDate().getTime()));
} else {
statement.setDate(9, new java.sql.Date(new Date().getTime()));
}
if (profile.getEndDate() != null) {
statement.setDate(10, new java.sql.Date(profile.getEndDate().getTime()));
} else {
statement.setDate(10, new java.sql.Date(new Date().getTime()));
}
statement.setString(11, profile.getEmailId());
statement.setString(12, profile.getCountry());
if (profile.getRegistrationDate() != null) {
statement.setDate(13, new java.sql.Date(profile.getRegistrationDate().getTime()));
} else {
statement.setDate(13, new java.sql.Date(new Date().getTime()));
}
statement.setLong(14, (profile.getCreatedBy() != null) ? profile.getCreatedBy() : 0);
statement.setDate(15, new java.sql.Date(new Date().getTime()));
statement.setLong(16, (profile.getUpdatedBy() != null) ? profile.getUpdatedBy() : 0);
statement.setDate(17, new java.sql.Date(new Date().getTime()));
statement.setString(18, profile.getEmploymentType());
return statement;
}
}, keyHolder);
} catch (Exception e) {
LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "saveUserProfile", e.getMessage()));
return null;
}
return profile;
}
@Override
public UserProfile updateUserProfileImage(UserProfile profile) {
try {
421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
String[] returnValColumn = new String[] { "id" };
PreparedStatement statement = con.prepareStatement(UserQueries.Update_USER_PROFILE_PROFILE_IMAGE,
returnValColumn);
statement.setString(1, profile.getAvatarUrl());
statement.setLong(2, profile.getId());
return statement;
}
}, keyHolder);
} catch (Exception e) {
LOGGER.error("Encountered an error while updating User Profile image" + e);
}
return profile;
}
@Override
public Long checkUserNameExists(String emailId, String phoneNo) {
Long userId = 0L;
try {
userId = jdbcTemplate.queryForObject(UserQueries.GET_USER_ID, new Object[] { emailId, emailId, phoneNo },
Long.class);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while finding the UserName Availability : " + e);
}
return userId;
}
@Override
public UserProfileMapper findListOfUsers(List<Long> userIdList) {
UserProfileMapper mapper = new SqlDataMapper().new UserProfileMapper();
String query = buildMyQuery(userIdList);
LOGGER.info("Query to execute for fetching the User Profile : " + query);
try {
jdbcTemplate.query(query.toString(), new Object[] {}, mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User By ID : " + e);
}
return mapper;
}
private String buildMyQuery(List<Long> userIdList) {
StringBuilder builder = new StringBuilder(
UserQueries.USER_PROFILE_FETCH + Common.WHERE_CLAUSE + UserQueries.USER_ID_IN_CONDITION);
if (!userIdList.isEmpty()) {
builder.append("(");
for (int i = 0; i < userIdList.size(); i++) {
if (i == 0 && i == userIdList.size() - 1) {
builder.append(userIdList.get(i));
} else if (i == userIdList.size() - 1) {
builder.append(userIdList.get(i));
} else {
builder.append(userIdList.get(i) + ",");
}
}
builder.append(")");
}
return builder.toString();
}
@Override
public UserProfile updateUserProfile(UserProfile profile) {
try {
jdbcTemplate.update(UserQueries.UPDATE_USER_PROFILE,
new Object[] { profile.getFirstName(), profile.getLastName(), profile.getAge(),
profile.getPhoneNo(), profile.getDob(), profile.getGender(), profile.getStartDate(),
profile.getEndDate(), profile.getCountry(), new java.sql.Date(new Date().getTime()), 1L,
profile.getEmploymentType(), profile.getAvatarUrl(), profile.getId() });
} catch (Exception e) {
491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
LOGGER.error("Encountered an error while updating User Profile Object : " + e.getMessage());
return null;
}
return profile;
}
@Override
public Long getNumberOfUsers(Long role, Boolean active) {
Long numberOfUsers = 0L;
try {
if (role != null) {
numberOfUsers = jdbcTemplate.queryForObject(UserQueries.GET_USER_COUNT_FOR_ROLE, new Object[] { role },
Long.class);
} else if (active != null) {
numberOfUsers = jdbcTemplate.queryForObject(UserQueries.GET_USER_COUNT_ON_ACTIVE_STATUS,
new Object[] { active }, Long.class);
} else {
numberOfUsers = jdbcTemplate.queryForObject(UserQueries.GET_USER_COUNT, Long.class);
}
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching count of Users : " + e);
}
return numberOfUsers;
}
@Override
public Long getNumberOfRoles() {
Long numberOfRoles = 0L;
try {
numberOfRoles = jdbcTemplate.queryForObject(UserQueries.GET_ROLE_COUNT, Long.class);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching count of Roles : " + e);
}
return numberOfRoles;
}
@Override
public List<Country> getCountryList() {
List<Country> countryList = new ArrayList<>();
try {
countryList = jdbcTemplate.query(Common.GET_COUNTRY_LIST, new SqlDataMapper().new CountryMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching Country List: " + e);
}
return countryList;
}
@Override
public List<Country> getCountryListForUser(Long userId) {
List<Country> countryList = new ArrayList<>();
try {
countryList = jdbcTemplate.query(Common.GET_COUNTRY_LIST_FOR_USER, new Object[] { userId },
new SqlDataMapper().new CountryMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching Country List: " + e);
}
return countryList;
}
@Override
public Boolean mapUserToCountry(UserCountryDto userCountry) {
try {
jdbcTemplate.update(UserQueries.REMOVE_USER_COUNTRY_MAP, new Object[] { userCountry.getUserId() });
} catch (Exception ex) {
LOGGER.error("Encountered an exception while removing the User Country mapping : " + ex);
}
int[] values = null;
try {
values = jdbcTemplate.batchUpdate(UserQueries.MAP_USER_TO_COUNTRY, new BatchPreparedStatementSetter() {
561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
@Override
public void setValues(java.sql.PreparedStatement statement, int i) throws SQLException {
Country country = userCountry.getCountries().get(i);
statement.setLong(1, userCountry.getUserId());
statement.setLong(2, country.getId());
statement.setBoolean(3, (country.getIsDefault() != null) ? country.getIsDefault() : Boolean.FALSE);
}
public int getBatchSize() {
return userCountry.getCountries().size();
}
});
} catch (Exception ex) {
LOGGER.error("Exception Occured while adding Countries to User : " + ex);
}
if (values.length > 0) {
return true;
}
return false;
}
@Override
public Boolean invalidateToken(String authToken) {
try {
jdbcTemplate.update(UserQueries.REMOVE_USER_DEVICE_TOKEN, new Object[] { authToken });
} catch (Exception e) {
LOGGER.error("Encountered an error while removing user device token: " + e.getMessage());
return false;
}
try {
jdbcTemplate.update(UserQueries.INVALIDATE_TOKEN, new Object[] { authToken });
} catch (Exception e) {
LOGGER.error("Encountered an error while invalidating Auth Token : " + e.getMessage());
return false;
}
return true;
}
@Override
public Boolean findUserByToken(String authToken) {
Long countOfUsers = 0L;
try {
countOfUsers = jdbcTemplate.queryForObject(UserQueries.SELECT_USER_BY_TOKEN, new Object[] { authToken },
Long.class);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching User by auth token: " + e);
}
if (countOfUsers > 0)
return true;
return false;
}
@Override
public Boolean checkUserTokenExists(Long userId, String deviceToken) {
Long available = 0L;
try {
available = jdbcTemplate.queryForObject(UserQueries.CHECK_USER_DEVICE_TOKEN,
new Object[] { userId, deviceToken }, Long.class);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching User Device by Device token: " + e);
}
if (available > 0)
return true;
return false;
}
@Override
public Boolean updateUserDeviceToken(Long userId, String deviceToken) {
try {
631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
jdbcTemplate.update(UserQueries.UPDATE_USER_DEVICE_TOKEN,
new Object[] { deviceToken, new Date().getTime(), userId });
} catch (Exception e) {
LOGGER.error("Encountered an error while updating User Device Token : " + e.getMessage());
return false;
}
return true;
}
@Override
public Boolean insertUserDeviceToken(Long userId, String deviceToken, String deviceId, Long authTokenRef) {
try {
jdbcTemplate.update(UserQueries.INSERT_USER_DEVICE_TOKEN,
new Object[] { userId, deviceToken, deviceId, new Date().getTime(), authTokenRef });
} catch (Exception e) {
LOGGER.error("Encountered an error while inserting new User Device Token : " + e.getMessage());
return false;
}
return true;
}
@Override
public List<UserDeviceToken> getDeviceTokenForUserList(List<Long> userIdList) {
List<UserDeviceToken> tokenList = new ArrayList<>();
try {
List<UserDeviceToken> response = jdbcTemplate.query(
UserQueries.FETCH_USER_DEVICE_TOKEN + getIdQuery(userIdList),
new SqlDataMapper().new UserDeviceMapper());
for (UserDeviceToken tokens : response) {
if (!jwtTokenUtil.isTokenExpired(tokens.getAuthToken())) {
tokenList.add(tokens);
}
}
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching User Device Token Map: " + e);
}
return tokenList;
}
@Override
public Long fetchAuthTokenReference(String authToken) {
authToken = authToken.replace(Constants.TOKEN_PREFIX, "").replace(Constants.TOKEN_PREFIX.toLowerCase(), "");
Long authTokenRef = 0L;
try {
authTokenRef = jdbcTemplate.queryForObject(UserQueries.FETCH_AUTH_TOKEN_REF, new Object[] { authToken },
Long.class);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching User Device by Device token: " + e);
}
return authTokenRef;
}
public List<Action> findAllActionsByRoleIDs(List<Long> roleIDs) {
String roleId = StringUtils.join(roleIDs, ',');
List<Action> actions = new ArrayList<Action>();
try {
actions = jdbcTemplate.query(UserQueries.GET_USER_ACTIONS.replace("<roleIds>", roleId),
new SqlDataMapper().new ActionMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching all the actions by Role ID " + e);
}
return actions;
}
@Override
public Boolean saveCountry(CountryDto country) {
try {
jdbcTemplate.update(UserQueries.ADD_NEW_COUNTRY, new Object[] { country.getCode(), country.getName(),
country.getCurrency(), country.getPhoneCode(), country.getLogoUrl(), country.getOrgId() });
} catch (Exception ex) {
701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
LOGGER.error("Encountered an exception while adding the country : " + ex);
return false;
}
return true;
}
@Override
public Boolean updateCountry(CountryDto country) {
try {
jdbcTemplate.update(UserQueries.UPDATE_COUNTRY, new Object[] { country.getCode(), country.getName(),
country.getCurrency(), country.getPhoneCode(), country.getId() });
} catch (Exception ex) {
LOGGER.error("Encountered an exception while updating the country : " + ex);
return false;
}
return true;
}
@Override
public List<Country> getCountryListForOrg(Long orgId) {
List<Country> countryList = new ArrayList<>();
try {
countryList = jdbcTemplate.query(Common.GET_COUNTRY_LIST_FOR_ORG, new Object[] { orgId },
new SqlDataMapper().new CountryMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching Country List: " + e);
}
return countryList;
}
@Override
public Boolean checkCountryExistsWithCode(String code, Long orgId) {
Country country = null;
try {
country = jdbcTemplate.query(UserQueries.GET_COUNTRY_BY_CODE, new Object[] { code, orgId },
new SqlDataMapper().new CountryMapper()).get(0);
if (country != null && country.getId() != null) {
return true;
}
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching User by Mobile Number : " + e);
}
return false;
}
@Override
public Boolean deleteUserToRole(UserRoleDto userRole) {
String role = "";
for (int i = 0; i < userRole.getRoles().size(); i++) {
if (i == 0) {
role = role + userRole.getRoles().get(i).getId();
} else {
role = role + "," + userRole.getRoles().get(i).getId();
}
}
try {
jdbcTemplate.update(UserQueries.REMOVE_USER_ROLE_MAP + UserQueries.AND_CONDITION
+ Sql.Common.BY_ROLE_ID.replace("<ROLE_ID>", role), new Object[] { userRole.getUserId() });
} catch (Exception ex) {
LOGGER.error("Encountered an exception while removing the User Role mapping : " + ex);
return Boolean.FALSE;
}
return Boolean.TRUE;
}
@Override
public Boolean deleteCountryForOrg(CountryDto country) { // my
try {
jdbcTemplate.update(Common.DELETE_COUNTRY_FOR_ORG, new Object[] { country.getId(), country.getOrgId() });
} catch (Exception ex) {
771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
LOGGER.error("Encounter an exception white deleting the country: " + ex);
return Boolean.FALSE;
}
return Boolean.FALSE;
}
@Override
public Boolean deleteUser(UserDto user) {
try {
jdbcTemplate.update(Sql.UserQueries.DELETE_COUNTRY_USER, new Object[] { user.getId() });
jdbcTemplate.update(Sql.UserQueries.DELETE_USER_ROLE, new Object[] { user.getId() });
jdbcTemplate.update(Sql.UserQueries.DELETE_USER_PROFILE, new Object[] { user.getId() });
jdbcTemplate.update(Sql.UserQueries.DELETE_USER, new Object[] { user.getId() });
} catch (Exception ex) {
LOGGER.error("Encounter an exception while deleting the user: " + ex);
return Boolean.FALSE;
}
return Boolean.TRUE;
}
@Override
public List<UserDto> getUsersByMasterRole(String roleCode, Long orgId) {
List<UserDto> userList = new ArrayList<UserDto>();
try {
userList = jdbcTemplate.query(UserQueries.GET_USERS_BY_MASTER_ROLE, new Object[] { roleCode, orgId },
new SqlDataMapper().new UserMasterRoleMapper());
} catch (Exception ex) {
LOGGER.error("Encounter an exception while getting users which have master role access");
}
return userList;
}
@Override
public Boolean mapUserMasterRoleCountryOrg(UserMasterRoleCountryOrgDto userMasterRoleCountryOrg) {
try {
jdbcTemplate.update(Sql.UserQueries.MAP_USER_MASTER_ROLE_COUNTRY_ORG,
new Object[] { userMasterRoleCountryOrg.getMasterRoleId(), userMasterRoleCountryOrg.getCountryId(),
userMasterRoleCountryOrg.getUserId(), userMasterRoleCountryOrg.getOrgId() });
} catch (Exception ex) {
LOGGER.error("Encounter an exception while mapping the user master_role country org : " + ex);
return Boolean.FALSE;
}
return Boolean.TRUE;
}
@Override
public List<MasterRoleDto> getMasterRoleByOrgDomainId(Long org_domain_id) {
List<MasterRoleDto> masterRoleList = new ArrayList<MasterRoleDto>();
try {
masterRoleList = jdbcTemplate.query(UserQueries.GET_MASTER_ROLE_LIST_BY_ORG_DOMAIN,
new Object[] { org_domain_id }, new SqlDataMapper().new MasterRoleMapper());
} catch (Exception ex) {
LOGGER.error("Encounter an exception while getting master role list");
}
return masterRoleList;
}
@Override
public UserRoleActionMapper findUserRolesActions(String username) {
UserRoleActionMapper mapper = new SqlDataMapper().new UserRoleActionMapper();
try {
jdbcTemplate.query(UserQueries.GET_USER_ROLE_ACTIONS, new Object[] { username }, mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User By UserName : " + e);
}
return mapper;
}
@Override
841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910
public User findOnlyUser(String username) {
User user = null;
try {
user = jdbcTemplate.query(UserQueries.SELECT_ONLY_USER, new Object[] { username, username },
new SqlDataMapper().new SimpleUserMapper()).get(0);
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching the User by Username : " + e);
}
return user;
}
@Override
public UserProfile getUserProfile(String username) {
try {
List<UserProfile> userList = jdbcTemplate.query(UserQueries.GET_USER_PROFILE,
new Object[] { username, username }, new BeanPropertyRowMapper<>(UserProfile.class));
if (userList.size() != 0) {
return userList.get(0);
}
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching the User by Username : " + e);
}
return null;
}
@Override
public UserProfileMapper findAll(SearchRequest searchRequest) {
UserProfileMapper mapper = new SqlDataMapper().new UserProfileMapper();
try {
Map<String, Object> paramMap = new HashMap<>();
String queryToExecute = BuildMyQuery(searchRequest, paramMap);
System.out.println(queryToExecute);
System.out.println(paramMap);
namedParameterJdbcTemplate.query(queryToExecute, paramMap, mapper);
} catch (Exception e) {
LOGGER.error("Encountered an exception while fetching the User Profile : " + e);
}
return mapper;
}
/**
* Dynamic query builder
*
* @param searchRequest
* SearchRequest
* @param paramMap
* Map<String, Object>
* @return String
*/
private String BuildMyQuery(SearchRequest searchRequest, Map<String, Object> paramMap) {
StringBuilder builder = new StringBuilder(UserQueries.USER_PROFILE_FETCH);
Boolean condition = Boolean.FALSE;
// orgId
if (searchRequest.getOrgId() != null && searchRequest.getOrgId() > 0) {
condition = addQueryCondition(builder, condition);
builder.append(NamedUserQueries.USER_ORG_ID);
paramMap.put(Constants.Parameters.ORG_ID, searchRequest.getOrgId());
}
// active
if (searchRequest.getActive() != null) {
condition = addQueryCondition(builder, condition);
if (searchRequest.getActive()) {
builder.append(UserQueries.TAIL_CONDITIONS_USER_ACTIVE);
} else {
builder.append(UserQueries.TAIL_CONDITIONS_USER_INACTIVE);
}
paramMap.put(Constants.Parameters.ACTIVE, searchRequest.getActive());
}
// roleId
911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980
if (searchRequest.getRoleId() != null && searchRequest.getRoleId().size() > 0) {
condition = addQueryCondition(builder, condition);
builder.append(NamedUserQueries.TAIL_CONDITIONS_USER_ROLEIN);
paramMap.put(Constants.Parameters.ROLE_ID, searchRequest.getRoleId());
}
// keyword search
if (StringUtils.isNotBlank(searchRequest.getKeyword())) {
condition = addQueryCondition(builder, condition);
String keyword = "%" + searchRequest.getKeyword() + "%";
builder.append(Common.OPEN_BRACE + NamedUserQueries.TAIL_CONDITIONS_EMAIL_LIKE + Common.OR_CONDITION
+ NamedUserQueries.TAIL_CONDITIONS_FIRSTNAME_LIKE + Common.OR_CONDITION
+ NamedUserQueries.TAIL_CONDITIONS_LASTNAME_LIKE + Common.OR_CONDITION
+ NamedUserQueries.TAIL_CONDITIONS_COUNTRY_LIKE + Common.CLOSE_BRACE);
paramMap.put(Constants.Parameters.EMAIL_ID, keyword);
paramMap.put(Constants.Parameters.FIRST_NAME, keyword);
paramMap.put(Constants.Parameters.LAST_NAME, keyword);
paramMap.put(Constants.Parameters.COUNTRY, keyword);
}
// dynamic key value search
if (searchRequest.getSearch() != null && searchRequest.getSearch().size() > 0) {
for (Map.Entry<String, Object> entry : searchRequest.getSearch().entrySet()) {
condition = addQueryCondition(builder, condition);
if (entry.getValue() instanceof List) {
if (Constants.UserSearchFields.MAPPING.containsKey(entry.getKey())) {
builder.append(Constants.UserSearchFields.MAPPING.get(entry.getKey()));
} else {
builder.append(entry.getKey());
}
builder.append(NamedUserQueries.IN_CLAUSE);
paramMap.put(Constants.Parameters.IN_VALUE, entry.getValue());
} else {
if (Constants.UserSearchFields.MAPPING.containsKey(entry.getKey())) {
builder.append(Constants.UserSearchFields.MAPPING.get(entry.getKey()));
} else {
builder.append(entry.getKey());
}
builder.append(NamedUserQueries.APPEND_VALUE);
paramMap.put(Constants.Parameters.VALUE, entry.getValue());
}
}
}
// limit & offset
if (searchRequest.getLimit() > 0) {
builder.append(NamedUserQueries.LIMIT);
paramMap.put(Constants.Parameters.LIMIT, searchRequest.getLimit());
}
if (searchRequest.getOffset() > 0) {
builder.append(NamedUserQueries.OFFSET);
paramMap.put(Constants.Parameters.OFFSET, searchRequest.getOffset());
}
return builder.toString();
}
/**
* Appends Where & and condition to the query builder
*
* @param builder
* StringBuilder
* @param condition
* Boolean
*/
public Boolean addQueryCondition(StringBuilder builder, Boolean condition) {
if (!condition) {
builder.append(Common.WHERE_CLAUSE);
} else {
builder.append(Common.AND_CONDITION);
}
return Boolean.TRUE;
}
981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029
@Override
public List<KeyValue> getNumberOfUsersAndRoles() {
List<KeyValue> userList = new ArrayList<>();
try {
userList = jdbcTemplate.query(UserQueries.GET_NUMBER_USER_ROLES,
new SqlDataMapper().new UserRoleCountMapper());
} catch (Exception e) {
LOGGER.error("Encountered an Exception while fetching the User by Username : " + e);
}
return userList;
}
@Override
public Boolean setUserPin(String encryptedPin, Long userId) {
try {
jdbcTemplate.update(UserQueries.SET_USER_PIN, new Object[] { encryptedPin, userId });
return Boolean.TRUE;
} catch (Exception e) {
LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "setUserPin", e.getMessage()));
return Boolean.FALSE;
}
}
@Override
public Boolean validateUserPin(int pin, String username) {
try {
List<String> userPin = jdbcTemplate.queryForList(UserQueries.GET_USER_PIN, new Object[] { username },
String.class);
if (userPin != null && userPin.size() > 0 && bcryptEncoder.matches(String.valueOf(pin), userPin.get(0))) {
return Boolean.TRUE;
}
} catch (Exception e) {
LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "validateUserPin", e.getMessage()));
}
return Boolean.FALSE;
}
@Override
public Boolean deleteDeviceToken(Long userId, String deviceId) {
try {
jdbcTemplate.update(UserQueries.DELETE_DEVICE_TOKEN, new Object[] { userId, deviceId });
return Boolean.TRUE;
} catch (Exception e) {
LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "deleteDeviceToken", e.getMessage()));
}
return Boolean.FALSE;
}
}