Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License") + you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.openmeetings.app.remote; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.TimeZone; import org.openmeetings.app.OpenmeetingsVariables; import org.openmeetings.app.conference.session.RoomClient; import org.openmeetings.app.data.basic.AuthLevelmanagement; import org.openmeetings.app.data.basic.Configurationmanagement; import org.openmeetings.app.data.basic.Fieldmanagment; import org.openmeetings.app.data.basic.Sessionmanagement; import org.openmeetings.app.data.basic.dao.OmTimeZoneDaoImpl; import org.openmeetings.app.data.beans.basic.SearchResult; import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl; import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl; import org.openmeetings.app.data.conference.Invitationmanagement; import org.openmeetings.app.data.conference.Roommanagement; import org.openmeetings.app.data.user.Organisationmanagement; import org.openmeetings.app.data.user.Salutationmanagement; import org.openmeetings.app.data.user.Usermanagement; import org.openmeetings.app.data.user.dao.PrivateMessageFolderDaoImpl; import org.openmeetings.app.data.user.dao.PrivateMessagesDaoImpl; import org.openmeetings.app.data.user.dao.UserContactsDaoImpl; import org.openmeetings.app.data.user.dao.UsersDaoImpl; import org.openmeetings.app.persistence.beans.domain.Organisation; import org.openmeetings.app.persistence.beans.invitation.Invitations; import org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues; import org.openmeetings.app.persistence.beans.rooms.Rooms; import org.openmeetings.app.persistence.beans.user.PrivateMessageFolder; import org.openmeetings.app.persistence.beans.user.PrivateMessages; import org.openmeetings.app.persistence.beans.user.Salutations; import org.openmeetings.app.persistence.beans.user.UserContacts; import org.openmeetings.app.persistence.beans.user.Users; import org.openmeetings.app.remote.red5.ClientListManager; import org.openmeetings.app.remote.red5.ScopeApplicationAdapter; import org.openmeetings.app.templates.RequestContactConfirmTemplate; import org.openmeetings.app.templates.RequestContactTemplate; import org.openmeetings.utils.crypt.ManageCryptStyle; import org.openmeetings.utils.mail.MailHandler; import org.openmeetings.utils.math.CalendarPatterns; import org.openmeetings.utils.math.TimezoneUtil; import org.red5.io.utils.ObjectMap; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.scope.IScope; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; /** * * @author swagner * */ public class UserService { private static final Logger log = Red5LoggerFactory.getLogger(UserService.class, OpenmeetingsVariables.webAppRootKey); @Autowired private ClientListManager clientListManager; @Autowired private ScopeApplicationAdapter scopeApplicationAdapter; @Autowired private AppointmentDaoImpl appointmentDao; @Autowired private Sessionmanagement sessionManagement; @Autowired private Configurationmanagement cfgManagement; @Autowired private Usermanagement userManagement; @Autowired private Fieldmanagment fieldmanagment; @Autowired private OmTimeZoneDaoImpl omTimeZoneDaoImpl; @Autowired private Salutationmanagement salutationmanagement; @Autowired private Organisationmanagement organisationmanagement; @Autowired private ManageCryptStyle manageCryptStyle; @Autowired private Roommanagement roommanagement; @Autowired private MeetingMemberDaoImpl meetingMemberDao; @Autowired private PrivateMessagesDaoImpl privateMessagesDao; @Autowired private PrivateMessageFolderDaoImpl privateMessageFolderDao; @Autowired private UsersDaoImpl usersDao; @Autowired private UserContactsDaoImpl userContactsDao; @Autowired private MailHandler mailHandler; @Autowired private RequestContactTemplate requestContactTemplate; @Autowired private RequestContactConfirmTemplate requestContactConfirmTemplate; @Autowired private AuthLevelmanagement authLevelManagement; @Autowired private TimezoneUtil timezoneUtil; @Autowired private Invitationmanagement invitationManagement; /** * get your own user-object * * @param SID * @param user_id * @return */ public Users getUserSelf(String SID) { Long users_id = sessionManagement.checkSession(SID); return usersDao.getUser(users_id); } public Long resetUserPwd(String SID, String email, String login, String applink) { sessionManagement.checkSession(SID); return userManagement.resetUser(email, login, applink); } public Object getUserByHash(String SID, String hash) { sessionManagement.checkSession(SID); return usersDao.getUserByHash(hash); } public Object resetPassByHash(String SID, String hash, String pass) { sessionManagement.checkSession(SID); return usersDao.resetPassByHash(hash, pass); } /** * get user by id, admin only * * @param SID * @param user_id * @return */ public Users getUserById(String SID, long user_id) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return userManagement.checkAdmingetUserById(user_level, user_id); } /** * refreshes the current SID * * @param SID * @return */ public String refreshSession(String SID) { try { sessionManagement.checkSession(SID); return "ok"; } catch (Exception err) { log.error("[refreshSession]", err); } return "error"; } /** * get all availible Salutations * * @param SID * @return */ public List<Salutations> getUserSalutations(String SID, long language_id) { return salutationmanagement.getUserSalutations(language_id); } /** * * @param SID * @param searchcriteria * login,lastname,firstname,user_id * @param searchstring * @param max * @param start * @param orderby * login,lastname,firstname,user_id * @param asc * @return */ public List<Users> searchUser(String SID, String searchcriteria, String searchstring, int max, int start, String orderby, boolean asc) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return userManagement.searchUser(user_level, searchcriteria, searchstring, max, start, orderby, asc); } /** * get a list of all users of an organisation * * @param SID * @param organisation_id * @param start * @param max * @param orderby * @param asc * @return */ public List<Users> getOrgUserList(String SID, long organisation_id, int start, int max, String orderby, boolean asc) { return organisationmanagement.getUsersByOrganisationId(organisation_id, start, max, orderby, asc); } public List<Users> getUserListByModForm(String SID) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return userManagement.getUserByMod(user_level, users_id); } /** * gat a list of all organisations of an user * * @param SID * @param client_user * @param start * @param max * @param orderby * @param asc * @return */ public List<Organisation> getOrganisationListByUser(String SID, long client_user, int start, int max, String orderby, boolean asc) { Long users_id = sessionManagement.checkSession(SID); long user_level = userManagement.getUserLevelByID(users_id); return organisationmanagement.getOrganisationsByUserId(user_level, client_user, start, max, orderby, asc); } /** * gets a list of all not assigned organisations of a user * * @param SID * @param client_user * @param start * @param max * @param orderby * @param asc * @return */ public List<Organisation> getRestOrganisationListByUser(String SID, long client_user, int start, int max, String orderby, boolean asc) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return organisationmanagement.getRestOrganisationsByUserId(user_level, client_user, start, max, orderby, asc); } /** * gets a whole user-list(admin-role only) * * @param SID * @param start * @param max * @param orderby * @return */ public SearchResult<Users> getUserList(String SID, int start, int max, String orderby, boolean asc) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return userManagement.getUsersList(user_level, start, max, orderby, asc); } public SearchResult<Users> getUserListWithSearch(String SID, int start, int max, String orderby, boolean asc, String search) { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); return userManagement.getUsersListWithSearch(user_level, start, max, orderby, asc, search); } /** * gets a user-list by search criteria * * @param SID * @param search * @param start * @param max * @param orderby * @return */ public SearchResult<Users> getAllUserBySearchRange(String SID, String search, int start, int max, String orderby, boolean asc) { return userManagement.getAllUserByRange(search, start, max, orderby, asc); } /** * updates the user profile, every user can update his own profile * * @param SID * @param argObject * @return user_id or NULL or negativ value (error_id) */ public Long updateUserSelfSmall(String SID, @SuppressWarnings("rawtypes") ObjectMap values) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); if (user_level != null && user_level >= 1) { return userManagement.saveOrUpdateUser(new Long(3), values, users_id); } else { return new Long(-2); } } catch (Exception err) { log.error("[updateUserSelfSmall] " + err); return new Long(-1); } } /** * * @param SID * @param regObjectObj * @return */ @SuppressWarnings({ "rawtypes" }) public Long saveOrUpdateUser(String SID, Object regObjectObj) { try { LinkedHashMap argObjectMap = (LinkedHashMap) regObjectObj; Long user_idClient = null; if (argObjectMap.get("user_idClient") != null) { user_idClient = Long.valueOf(argObjectMap.get("user_idClient").toString()).longValue(); } Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); List<?> orgO = (List<?>) argObjectMap.get("organisations"); List<Long> orgIds = new ArrayList<Long>(orgO.size()); for (Object o : orgO) { orgIds.add(Long.valueOf((Integer) o)); } Date age = null; if (argObjectMap.get("userage") instanceof Date) { age = (Date) argObjectMap.get("userage"); } log.debug("Mail : " + argObjectMap.get("email").toString()); log.debug("Phone : " + argObjectMap.get("phone").toString()); if (user_idClient == null || user_idClient == 0) { return userManagement.registerUserInit(user_level, Long.valueOf(argObjectMap.get("level_id").toString()).longValue(), Integer.valueOf(argObjectMap.get("availible").toString()).intValue(), Integer.valueOf(argObjectMap.get("status").toString()).intValue(), argObjectMap.get("login").toString(), argObjectMap.get("password").toString(), argObjectMap.get("lastname").toString(), argObjectMap.get("firstname").toString(), argObjectMap.get("email").toString(), age, argObjectMap.get("street").toString(), argObjectMap.get("additionalname").toString(), argObjectMap.get("fax").toString(), argObjectMap.get("zip").toString(), Long.valueOf(argObjectMap.get("states_id").toString()).longValue(), argObjectMap.get("town").toString(), new Long(argObjectMap.get("language_id").toString()), true, orgIds, argObjectMap.get("phone").toString(), "", false, argObjectMap.get("sip_user").toString(), argObjectMap.get("sip_pass").toString(), argObjectMap.get("sip_auth").toString(), Boolean.valueOf(argObjectMap.get("generateSipUserData").toString()).booleanValue(), argObjectMap.get("jNameTimeZone").toString(), Boolean.valueOf(argObjectMap.get("forceTimeZoneCheck").toString()).booleanValue(), argObjectMap.get("userOffers").toString(), argObjectMap.get("userSearchs").toString(), Boolean.valueOf(argObjectMap.get("showContactData").toString()).booleanValue(), Boolean.valueOf(argObjectMap.get("showContactDataToContacts").toString()).booleanValue()); } else { return userManagement.updateUser(user_level, user_idClient, Long.valueOf(argObjectMap.get("level_id").toString()).longValue(), argObjectMap.get("login").toString(), argObjectMap.get("password").toString(), argObjectMap.get("lastname").toString(), argObjectMap.get("firstname").toString(), age, argObjectMap.get("street").toString(), argObjectMap.get("additionalname").toString(), argObjectMap.get("zip").toString(), Long.valueOf(argObjectMap.get("states_id").toString()).longValue(), argObjectMap.get("town").toString(), new Long(argObjectMap.get("language_id").toString()), Integer.valueOf(argObjectMap.get("availible").toString()).intValue(), argObjectMap.get("telefon").toString(), argObjectMap.get("fax").toString(), argObjectMap.get("mobil").toString(), argObjectMap.get("email").toString(), argObjectMap.get("comment").toString(), Integer.valueOf(argObjectMap.get("status").toString()).intValue(), orgIds, Integer.valueOf(argObjectMap.get("title_id").toString()).intValue(), argObjectMap.get("phone").toString(), argObjectMap.get("sip_user").toString(), argObjectMap.get("sip_pass").toString(), argObjectMap.get("sip_auth").toString(), Boolean.valueOf(argObjectMap.get("generateSipUserData").toString()).booleanValue(), argObjectMap.get("jNameTimeZone").toString(), Boolean.valueOf(argObjectMap.get("forceTimeZoneCheck").toString()).booleanValue(), argObjectMap.get("userOffers").toString(), argObjectMap.get("userSearchs").toString(), Boolean.valueOf(argObjectMap.get("showContactData").toString()).booleanValue(), Boolean.valueOf(argObjectMap.get("showContactDataToContacts").toString()).booleanValue()); } } catch (Exception ex) { log.error("[saveOrUpdateUser]: ", ex); } return null; } /** * deletes a user * * @param SID * @param user_idClient * @return */ public Long deleteUserAdmin(String SID, Long user_idClient) { log.debug("deleteUserAdmin"); try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // admins only if (authLevelManagement.checkAdminLevel(user_level)) { // no self destruction ;-) if (!users_id.equals(user_idClient)) { // Setting user deleted Long userId = usersDao.deleteUserID(user_idClient); return userId; } else { return new Long(-38); } } else { return new Long(-11); } } catch (Exception err) { log.error("[deleteUserAdmin]", err); } return null; } public Boolean kickUserByStreamId(String SID, String streamid) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // admins only if (authLevelManagement.checkAdminLevel(user_level)) { RoomClient rcl = this.clientListManager.getClientByStreamId(streamid); if (rcl == null) { return true; } String scopeName = "hibernate"; if (rcl.getRoom_id() != null) { scopeName = rcl.getRoom_id().toString(); } IScope currentScope = this.scopeApplicationAdapter.getRoomScope(scopeName); HashMap<Integer, String> messageObj = new HashMap<Integer, String>(); messageObj.put(0, "kick"); this.scopeApplicationAdapter.sendMessageById(messageObj, streamid, currentScope); this.scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true); return true; } } catch (Exception err) { log.error("[kickUserByStreamId]", err); } return null; } public Users updateUserSelfTimeZone(String SID, String jname) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { Users us = userManagement.getUserById(users_id); us.setOmTimeZone(omTimeZoneDaoImpl.getOmTimeZone(jname)); us.setForceTimeZoneCheck(false); us.setUpdatetime(new Date()); userManagement.updateUser(us); return us; } } catch (Exception err) { log.error("[updateUserTimeZone]", err); } return null; } public SearchResult<Users> searchUserProfile(String SID, String searchTxt, String userOffers, String userSearchs, String orderBy, int start, int max, boolean asc) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<Users> searchResult = new SearchResult<Users>(); searchResult.setObjectName(Users.class.getName()); List<Users> userList = userManagement.searchUserProfile(searchTxt, userOffers, userSearchs, orderBy, start, max, asc); searchResult.setResult(userList); Long resultInt = userManagement.searchCountUserProfile(searchTxt, userOffers, userSearchs); searchResult.setRecords(resultInt); return searchResult; } } catch (Exception err) { log.error("[searchUserProfile]", err); } return null; } public Long requestUserToContactList(String SID, Long userToAdd_id, String domain, String port, String webapp) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { Long countContacts = userContactsDao.checkUserContacts(userToAdd_id, users_id); if (countContacts != null && countContacts > 0) { return -45L; } String hash = manageCryptStyle.getInstanceOfCrypt() .createPassPhrase(CalendarPatterns.getDateWithTimeByMiliSeconds(new Date())); Long userContactId = userContactsDao.addUserContact(userToAdd_id, users_id, true, hash); Users user = userManagement.getUserById(users_id); Users userToAdd = userManagement.getUserById(userToAdd_id); Long language_id = userToAdd.getLanguage_id(); if (language_id == null) { language_id = Long.valueOf(cfgManagement.getConfKey(3, "default_lang_id").getConf_value()) .longValue(); } String message = ""; Fieldlanguagesvalues fValue1192 = fieldmanagment.getFieldByIdAndLanguage(1192L, language_id); Fieldlanguagesvalues fValue1193 = fieldmanagment.getFieldByIdAndLanguage(1193L, language_id); Fieldlanguagesvalues fValue1190 = fieldmanagment.getFieldByIdAndLanguage(1190L, language_id); Fieldlanguagesvalues fValue1191 = fieldmanagment.getFieldByIdAndLanguage(1191L, language_id); Fieldlanguagesvalues fValue1196 = fieldmanagment.getFieldByIdAndLanguage(1196L, language_id); message += fValue1192.getValue() + " " + userToAdd.getFirstname() + " " + userToAdd.getLastname() + "<br/><br/>"; message += user.getFirstname() + " " + user.getLastname() + " " + fValue1193.getValue() + "<br/>"; message += fieldmanagment.getString(1194L, language_id) + "<br/>"; String baseURL = "http://" + domain + ":" + port + webapp; if (port.equals("80")) { baseURL = "http://" + domain + webapp; } else if (port.equals("443")) { baseURL = "https://" + domain + webapp; } privateMessagesDao.addPrivateMessage( user.getFirstname() + " " + user.getLastname() + " " + fValue1193.getValue(), message, 0L, user, userToAdd, userToAdd, false, null, true, userContactId, userToAdd.getAdresses().getEmail()); String link = baseURL + "?cuser=" + hash; String accept_link = link + "&tAccept=yes"; String deny_link = link + "&tAccept=no"; String aLinkHTML = "<a href='" + accept_link + "'>" + fValue1190.getValue() + "</a><br/>"; String denyLinkHTML = "<a href='" + deny_link + "'>" + fValue1191.getValue() + "</a><br/>"; String profileLinkHTML = "<a href='" + link + "'>" + fValue1196.getValue() + "</a><br/>"; String template = requestContactTemplate.getRequestContactTemplate(message, aLinkHTML, denyLinkHTML, profileLinkHTML); if (userToAdd.getAdresses() != null) { mailHandler.sendMail(userToAdd.getAdresses().getEmail(), user.getFirstname() + " " + user.getLastname() + " " + fValue1193.getValue(), template); } return userContactId; } } catch (Exception err) { log.error("[requestuserToContactList]", err); } return null; } public List<UserContacts> getPendingUserContacts(String SID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<UserContacts> uList = userContactsDao.getContactRequestsByUserAndStatus(users_id, true); return uList; } } catch (Exception err) { log.error("[getPendingUserContact]", err); } return null; } public Object changeUserContactByHash(String SID, String hash, Boolean status) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { UserContacts userContact = userContactsDao.getContactsByHash(hash); if (userContact == null) { log.error("changeUserContactByHash " + hash); return -48L; } if (userContact.getContact().getUser_id().equals(users_id)) { return this.changePendingStatusUserContacts(SID, userContact.getUserContactId(), status); } else { return -48L; } } } catch (Exception err) { log.error("[changeUserContactByHash]", err); } return null; } public List<UserContacts> getUserContacts(String SID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<UserContacts> uList = userContactsDao.getContactsByUserAndStatus(users_id, false); return uList; } } catch (Exception err) { log.error("[getPendingUserContact]", err); } return null; } public Long checkPendingStatus(String SID, Long userContactId) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { UserContacts userContacts = userContactsDao.getUserContacts(userContactId); if (userContacts == null) { return -46L; } if (userContacts.getPending() != null && !userContacts.getPending()) { return -47L; } return userContactId; } } catch (Exception err) { log.error("[checkPendingStatus]", err); } return null; } public Integer removeContactUser(String SID, Long userContactId) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { UserContacts userContacts = userContactsDao.getUserContacts(userContactId); if (userContacts == null) { return -49; } return userContactsDao.deleteUserContact(userContactId); } } catch (Exception err) { log.error("[removeContactUser]", err); } return null; } public Long changePendingStatusUserContacts(String SID, Long userContactId, Boolean pending) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { UserContacts userContacts = userContactsDao.getUserContacts(userContactId); if (userContacts == null) { return -46L; } if (userContacts.getPending() != null && !userContacts.getPending()) { return -47L; } if (pending) { userContactsDao.updateContactStatus(userContactId, false); userContacts = userContactsDao.getUserContacts(userContactId); userContactsDao.addUserContact(userContacts.getOwner().getUser_id(), users_id, false, ""); Users user = userContacts.getOwner(); if (user.getAdresses() != null) { Long language_id = user.getLanguage_id(); if (language_id == null) { language_id = Long .valueOf(cfgManagement.getConfKey(3, "default_lang_id").getConf_value()) .longValue(); } String message = ""; Fieldlanguagesvalues fValue1192 = fieldmanagment.getFieldByIdAndLanguage(1192L, language_id); Fieldlanguagesvalues fValue1198 = fieldmanagment.getFieldByIdAndLanguage(1198L, language_id); message += fValue1192.getValue() + " " + user.getFirstname() + " " + user.getLastname() + "<br/><br/>"; message += userContacts.getContact().getFirstname() + " " + userContacts.getContact().getLastname() + " " + fValue1198.getValue(); String template = requestContactConfirmTemplate.getRequestContactTemplate(message); privateMessagesDao.addPrivateMessage( user.getFirstname() + " " + user.getLastname() + " " + fValue1198.getValue(), message, 0L, userContacts.getContact(), user, user, false, null, false, 0L, user.getAdresses().getEmail()); mailHandler.sendMail(user.getAdresses().getEmail(), userContacts.getContact().getFirstname() + " " + userContacts.getContact().getLastname() + " " + fValue1198.getValue(), template); } } else { userContactsDao.deleteUserContact(userContactId); } return userContactId; } } catch (Exception err) { log.error("[getPendingUserContact]", err); } return null; } private Date createCalendarDate(TimeZone timezone, String dateOnly, String time) { Integer hour = Integer.valueOf(time.substring(0, 2)).intValue(); Integer minute = Integer.valueOf(time.substring(3, 5)).intValue(); log.info("createCalendar Hour: " + hour); log.info("createCalendar Minute: " + minute); Calendar cal = TimezoneUtil.getCalendarInTimezone(dateOnly, timezone); cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.MINUTE, minute); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); } public Long composeMail(String SID, List<String> recipients, String subject, String message, Boolean bookedRoom, String validFromDate, String validFromTime, String validToDate, String validToTime, Long parentMessageId, Long roomtype_id, String domain, String port, String webapp) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { TimeZone timezone = timezoneUtil.getTimezoneByUser(usersDao.getUser(users_id)); Date appointmentstart = createCalendarDate(timezone, validFromDate, validFromTime); Date appointmentend = createCalendarDate(timezone, validToDate, validToTime); log.info("validFromDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(appointmentstart)); log.info("validToDate: " + CalendarPatterns.getDateWithTimeByMiliSeconds(appointmentend)); Users from = userManagement.getUserById(users_id); Rooms room = null; String baseURL = "http://" + domain + ":" + port + webapp; if (port.equals("80")) { baseURL = "http://" + domain + webapp; } else if (port.equals("443")) { baseURL = "https://" + domain + webapp; } Long room_id = null; Long appointmentId = null; if (bookedRoom) { room_id = roommanagement.addRoom(3, // Userlevel subject, // name roomtype_id, // RoomType "", // Comment new Long(100), // Number of participants false, // public null, // Organisations true, // Appointment false, // Demo Room => Meeting Timer null, // Meeting Timer time in seconds false, // Is Moderated Room null, // Moderation List Room true, // Allow User Questions false, // isAudioOnly false, // isClosed "", // redirectURL "", // sipNumber "", // conferencePIN null, // ownerId null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false //showMicrophoneStatus ); room = roommanagement.getRoomById(room_id); String sendJNameTimeZone = from.getOmTimeZone().getJname(); appointmentId = this.addAppointmentToUser(subject, message, from, recipients, room, appointmentstart, appointmentend, true, true, sendJNameTimeZone); } recipients.add(from.getAdresses().getEmail()); String sendJNameTimeZone = from.getOmTimeZone().getJname(); String profile_link = baseURL + "?cuser=1"; for (String email : recipients) { // Map receipent = (Map) recipients.get(iter.next()); // String email = receipent.get("email").toString(); Long language_id = from.getLanguage_id(); if (language_id == null) { language_id = Long.valueOf(cfgManagement.getConfKey(3, "default_lang_id").getConf_value()) .longValue(); } String invitation_link = null; Users to = userManagement.getUserByEmail(email); if (bookedRoom) { // Add the appointment to the calendar of the user (if its an internal user) // if the user is the sender then we already added the appointment as we created the // room, the invitations always belong to the appointment of the meeting creator if (to != null && !to.getUser_id().equals(from.getUser_id())) { this.addAppointmentToUser(subject, message, to, recipients, room, appointmentstart, appointmentend, false, true, sendJNameTimeZone); } Invitations invitation = invitationManagement.addInvitationLink(new Long(2), // userlevel from.getFirstname() + " " + from.getLastname(), // username message, baseURL, // baseURl from.getAdresses().getEmail(), // email subject, // subject room_id, // room_id "public", false, // passwordprotected "", // invitationpass 2, // valid type appointmentstart, // valid from appointmentend, // valid to from.getUser_id(), // created by baseURL, from.getUser_id(), false, // really send mail sendMail appointmentstart, appointmentend, appointmentId, from.getFirstname() + " " + from.getLastname()); invitation_link = baseURL + "?invitationHash=" + invitation.getHash(); } if (to != null) { if (!to.getUser_id().equals(from.getUser_id())) { // One message to the Send privateMessagesDao.addPrivateMessage(subject, message, parentMessageId, from, to, from, bookedRoom, room, false, 0L, email); // One message to the Inbox privateMessagesDao.addPrivateMessage(subject, message, parentMessageId, from, to, to, bookedRoom, room, false, 0L, email); // One copy of the Inbox message to the user if (to.getLanguage_id() != null) { language_id = to.getLanguage_id(); } } } else { // One message to the Send privateMessagesDao.addPrivateMessage(subject, message, parentMessageId, from, to, from, bookedRoom, room, false, 0L, email); //there is no Inbox for external users } //We do not send an email to the one that has created the private message if (to != null && to.getUser_id().equals(from.getUser_id())) { continue; } Fieldlanguagesvalues fValue1301 = fieldmanagment.getFieldByIdAndLanguage(1301L, language_id); Fieldlanguagesvalues fValue1302 = fieldmanagment.getFieldByIdAndLanguage(1302L, language_id); Fieldlanguagesvalues labelid504 = fieldmanagment.getFieldByIdAndLanguage(new Long(504), language_id); Fieldlanguagesvalues labelid503 = fieldmanagment.getFieldByIdAndLanguage(new Long(503), language_id); String aLinkHTML = ""; if (to != null) { aLinkHTML = "<br/><br/><a href='" + profile_link + "'>" + fValue1302.getValue() + "</a><br/>"; } if (invitation_link == null) { invitation_link = ""; } else { invitation_link = "<br/>" // + CalendarPatterns .getDateWithTimeByMiliSecondsAndTimeZone(appointmentstart, timezone) + "<br/> - <br/>" // + CalendarPatterns.getDateWithTimeByMiliSecondsAndTimeZone(appointmentstart, timezone) + "<br/>" + labelid503.getValue() + "<br/><a href='" + invitation_link + "'>" + labelid504.getValue() + "</a><br/>"; } mailHandler.sendMail(email, fValue1301.getValue() + " " + subject, message.replaceAll("\\<.*?>", "") + aLinkHTML + invitation_link); } } } catch (Exception err) { log.error("[composeMail]", err); } return null; } /* * Date appointmentstart = calFrom.getTime(); Date appointmentend = * calTo.getTime(); */ private Long addAppointmentToUser(String subject, String message, Users to, List<String> recipients, Rooms room, Date appointmentstart, Date appointmentend, Boolean invitor, Boolean isConnectedEvent, String sendJNameTimeZone) throws Exception { Long appointmentId = appointmentDao.addAppointment(subject, to.getUser_id(), "", message, appointmentstart, appointmentend, false, false, false, false, 1L, 2L, room, to.getLanguage_id(), false, "", isConnectedEvent, sendJNameTimeZone); for (String email : recipients) { Users meetingMember = userManagement.getUserByEmail(email); if (meetingMember != null) { String firstname = meetingMember.getFirstname(); String lastname = meetingMember.getLastname(); meetingMemberDao.addMeetingMember(firstname, lastname, "0", "0", appointmentId, meetingMember.getUser_id(), email, invitor, meetingMember.getOmTimeZone(), isConnectedEvent); } else { meetingMemberDao.addMeetingMember("", "", "0", "0", appointmentId, null, email, invitor, omTimeZoneDaoImpl.getOmTimeZone(sendJNameTimeZone), isConnectedEvent); } } return appointmentId; } public Long getNumberUnreadMessages(String SID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<PrivateMessages> searchResult = new SearchResult<PrivateMessages>(); searchResult.setObjectName(Users.class.getName()); return privateMessagesDao.getNumberMessages(users_id, 0L, false); } } catch (Exception err) { log.error("[getNumberUnreadMessages]", err); } return null; } public SearchResult<PrivateMessages> getInbox(String SID, String search, String orderBy, int start, Boolean asc, Integer max) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<PrivateMessages> searchResult = new SearchResult<PrivateMessages>(); searchResult.setObjectName(Users.class.getName()); List<PrivateMessages> userList = privateMessagesDao.getPrivateMessagesByUser(users_id, search, orderBy, start, asc, 0L, max); searchResult.setResult(userList); Long resultInt = privateMessagesDao.countPrivateMessagesByUser(users_id, search, 0L); searchResult.setRecords(resultInt); return searchResult; } } catch (Exception err) { log.error("[getInbox]", err); } return null; } public SearchResult<PrivateMessages> getSend(String SID, String search, String orderBy, Integer start, Boolean asc, Integer max) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<PrivateMessages> searchResult = new SearchResult<PrivateMessages>(); searchResult.setObjectName(Users.class.getName()); List<PrivateMessages> userList = privateMessagesDao.getSendPrivateMessagesByUser(users_id, search, orderBy, start, asc, 0L, max); searchResult.setResult(userList); Long resultInt = privateMessagesDao.countSendPrivateMessagesByUser(users_id, search, 0L); searchResult.setRecords(resultInt); return searchResult; } } catch (Exception err) { log.error("[getInbox]", err); } return null; } public SearchResult<PrivateMessages> getTrash(String SID, String search, String orderBy, Integer start, Boolean asc, Integer max) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<PrivateMessages> searchResult = new SearchResult<PrivateMessages>(); searchResult.setObjectName(Users.class.getName()); List<PrivateMessages> userList = privateMessagesDao.getTrashPrivateMessagesByUser(users_id, search, orderBy, start, asc, max); searchResult.setResult(userList); Long resultInt = privateMessagesDao.countTrashPrivateMessagesByUser(users_id, search); searchResult.setRecords(resultInt); return searchResult; } } catch (Exception err) { log.error("[getInbox]", err); } return null; } public SearchResult<PrivateMessages> getFolder(String SID, Long privateMessageFolderId, String search, String orderBy, Integer start, Boolean asc, Integer max) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { SearchResult<PrivateMessages> searchResult = new SearchResult<PrivateMessages>(); searchResult.setObjectName(Users.class.getName()); List<PrivateMessages> userList = privateMessagesDao.getFolderPrivateMessagesByUser(users_id, search, orderBy, start, asc, privateMessageFolderId, max); searchResult.setResult(userList); Long resultInt = privateMessagesDao.countFolderPrivateMessagesByUser(users_id, privateMessageFolderId, search); searchResult.setRecords(resultInt); return searchResult; } } catch (Exception err) { log.error("[getInbox]", err); } return null; } public Long getFolderCount(String SID, Long privateMessageFolderId) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { return privateMessagesDao.countFolderPrivateMessagesByUser(users_id, privateMessageFolderId, ""); } } catch (Exception err) { log.error("[getInbox]", err); } return null; } public Integer moveMailsToFolder(String SID, @SuppressWarnings("rawtypes") List privateMessageIntsIds, Long newFolderId) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<Long> privateMessageIds = new LinkedList<Long>(); for (Object pMessageId : privateMessageIntsIds) { privateMessageIds.add(Long.valueOf(pMessageId.toString()).longValue()); } return privateMessagesDao.moveMailsToFolder(privateMessageIds, newFolderId); } } catch (Exception err) { log.error("[moveMailsToFolder]", err); } return null; } public Integer moveMailsToTrash(String SID, @SuppressWarnings("rawtypes") List privateMessageIntsIds, Boolean isTrash) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<Long> privateMessageIds = new LinkedList<Long>(); for (Object pMessageId : privateMessageIntsIds) { privateMessageIds.add(Long.valueOf(pMessageId.toString()).longValue()); } log.debug("moveMailsToTrash :: " + isTrash); return privateMessagesDao.updatePrivateMessagesToTrash(privateMessageIds, isTrash, 0L); } } catch (Exception err) { log.error("[moveMailsToTrash]", err); } return -1; } public Integer deletePrivateMessages(String SID, @SuppressWarnings("rawtypes") List privateMessageIntsIds) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<Long> privateMessageIds = new LinkedList<Long>(); for (Object pMessageId : privateMessageIntsIds) { privateMessageIds.add(Long.valueOf(pMessageId.toString()).longValue()); } return privateMessagesDao.deletePrivateMessages(privateMessageIds); } } catch (Exception err) { log.error("[markReadStatusMails]", err); } return -1; } public Integer markReadStatusMails(String SID, @SuppressWarnings("rawtypes") List privateMessageIntsIds, Boolean isRead) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<Long> privateMessageIds = new LinkedList<Long>(); for (Object pMessageId : privateMessageIntsIds) { privateMessageIds.add(Long.valueOf(pMessageId.toString()).longValue()); } log.debug("markReadStatusMails :: " + isRead); return privateMessagesDao.updatePrivateMessagesReadStatus(privateMessageIds, isRead); } } catch (Exception err) { log.error("[markReadStatusMails]", err); } return -1; } public Integer markReadStatusMail(String SID, Long privateMessageId, Boolean isRead) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<Long> privateMessageIds = new LinkedList<Long>(); privateMessageIds.add(privateMessageId); return privateMessagesDao.updatePrivateMessagesReadStatus(privateMessageIds, isRead); // PrivateMessages privateMessage = // privateMessagesDao.getPrivateMessagesById(privateMessageId); // // privateMessage.setIsRead(isRead); // // privateMessagesDao.updatePrivateMessages(privateMessage); } } catch (Exception err) { log.error("[markReadStatusMail]", err); } return null; } public List<PrivateMessageFolder> getPrivateMessageFoldersByUser(String SID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { return privateMessageFolderDao.getPrivateMessageFolderByUserId(users_id); } } catch (Exception err) { log.error("[getPrivateMessageFolderByUser]", err); } return null; } public Long addPrivateMessageFolder(String SID, String folderName) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { privateMessageFolderDao.addPrivateMessageFolder(folderName, users_id); } } catch (Exception err) { log.error("[addPrivateMessageFolder]", err); } return null; } public Boolean checkUserIsInContactList(String SID, Long user_id) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { List<UserContacts> uList = userContactsDao.getContactsByUserAndStatus(users_id, false); for (UserContacts userContact : uList) { if (userContact.getContact().getUser_id().equals(user_id)) { return true; } } return false; } } catch (Exception err) { log.error("[checkUserIsInContactList]", err); } return null; } public void shareCalendarUserContact(String SID, Long userContactId, Boolean shareCalendar) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { UserContacts userContacts = userContactsDao.getUserContacts(userContactId); userContacts.setShareCalendar(shareCalendar); userContactsDao.updateContact(userContacts); } } catch (Exception err) { log.error("[shareCalendarUserContact]", err); } } public Long updatePrivateMessageFolder(String SID, Long privateMessageFolderId, String folderName) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { PrivateMessageFolder privateMessageFolder = privateMessageFolderDao .getPrivateMessageFolderById(privateMessageFolderId); privateMessageFolder.setFolderName(folderName); privateMessageFolder.setUpdated(new Date()); privateMessageFolderDao.updatePrivateMessages(privateMessageFolder); return privateMessageFolderId; } } catch (Exception err) { log.error("[updatePrivateMessageFolder]", err); } return null; } public Long deletePrivateMessageFolder(String SID, Long privateMessageFolderId) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { PrivateMessageFolder privateMessageFolder = privateMessageFolderDao .getPrivateMessageFolderById(privateMessageFolderId); privateMessageFolderDao.deletePrivateMessages(privateMessageFolder); } } catch (Exception err) { log.error("[deletePrivateMessageFolder]", err); } return null; } public List<UserContacts> getUserContactsWithShareCalendar(String SID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { return userContactsDao.getContactsByShareCalendar(users_id, true); } } catch (Exception err) { log.error("[getContactsByShareCalendar]", err); } return null; } public Boolean kickUserByPublicSID(String SID, String publicSID) { try { Long users_id = sessionManagement.checkSession(SID); Long user_level = userManagement.getUserLevelByID(users_id); // users only if (authLevelManagement.checkUserLevel(user_level)) { RoomClient rcl = this.clientListManager.getClientByPublicSID(publicSID, false); if (rcl == null) { return true; } String scopeName = "hibernate"; if (rcl.getRoom_id() != null) { scopeName = rcl.getRoom_id().toString(); } IScope currentScope = this.scopeApplicationAdapter.getRoomScope(scopeName); HashMap<Integer, String> messageObj = new HashMap<Integer, String>(); messageObj.put(0, "kick"); this.scopeApplicationAdapter.sendMessageById(messageObj, rcl.getStreamid(), currentScope); this.scopeApplicationAdapter.roomLeaveByScope(rcl, currentScope, true); return true; } } catch (Exception err) { log.error("[kickUserByStreamId]", err); } return null; } }