http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java index c6f2d18..140c719 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/SipDao.java @@ -1,191 +1,191 @@ -/* - * 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.apache.openmeetings.db.dao.room; - -import org.apache.openmeetings.db.entity.room.Room; -import org.asteriskjava.manager.DefaultManagerConnection; -import org.asteriskjava.manager.ManagerConnection; -import org.asteriskjava.manager.ManagerConnectionFactory; -import org.asteriskjava.manager.ResponseEvents; -import org.asteriskjava.manager.action.ConfbridgeListAction; -import org.asteriskjava.manager.action.DbDelAction; -import org.asteriskjava.manager.action.DbDelTreeAction; -import org.asteriskjava.manager.action.DbGetAction; -import org.asteriskjava.manager.action.DbPutAction; -import org.asteriskjava.manager.action.EventGeneratingAction; -import org.asteriskjava.manager.action.ManagerAction; -import org.asteriskjava.manager.action.OriginateAction; -import org.asteriskjava.manager.response.ManagerError; -import org.asteriskjava.manager.response.ManagerResponse; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; - -public class SipDao { - private static final Logger log = Red5LoggerFactory.getLogger(SipDao.class); - public static final String ASTERISK_OM_FAMILY = "openmeetings"; - public static final String ASTERISK_OM_KEY = "rooms"; - private String sipHostname; - private int sipPort; - private String sipUsername; - private String sipPassword; - private long timeout; - private ManagerConnectionFactory factory; - - @SuppressWarnings("unused") - private SipDao() { - // prohibited default constructor - } - - public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) { - this.sipHostname = sipHostname; - this.sipPort = sipPort; - this.sipUsername = sipUsername; - this.sipPassword = sipPassword; - this.timeout = timeout; - factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword); - } - - private ManagerConnection getConnection() { - DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure - con.setDefaultEventTimeout(timeout); - con.setDefaultResponseTimeout(timeout); - con.setSocketReadTimeout((int)timeout); - con.setSocketTimeout((int)timeout); - return con; - } - - private ManagerResponse exec(ManagerAction action) { - if (factory == null) { - log.warn("There is no Asterisk configured"); - return null; - } - ManagerConnection con = getConnection(); - try { - con.login(); - ManagerResponse r = con.sendAction(action); - if (r != null) { - log.debug(r.toString()); - } - return (r instanceof ManagerError) ? null : r; - } catch (Exception e) { - log.error("Error while executing ManagerAction: " + action, e); - } finally { - try { - con.logoff(); - } catch (Exception e) { - // no-op - } - } - return null; - } - - private ResponseEvents execEvent(EventGeneratingAction action) { - if (factory == null) { - log.warn("There is no Asterisk configured"); - return null; - } - ManagerConnection con = getConnection(); - try { - con.login("on"); - ResponseEvents r = con.sendEventGeneratingAction(action); - if (r != null) { - log.debug(r.getResponse().toString()); - } - return (r == null || r.getResponse() instanceof ManagerError) ? null : r; - } catch (Exception e) { - log.error("Error while executing EventGeneratingAction: " + action, e); - } finally { - try { - con.logoff(); - } catch (Exception e) { - // no-op - } - } - return null; - } - - private static String getKey(String confno) { - return ASTERISK_OM_KEY + "/" + confno; - } - - public String get(String confno) { - String pin = null; - DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, getKey(confno)); - ManagerResponse r = exec(da); - if (r != null) { - pin = r.getResponse(); - } - return pin; - } - - public void update(String confno, String pin) { - delete(confno); - DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, getKey(confno), pin); - exec(da); - } - - public void delete() { - DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY); - exec(da); - } - - public void delete(String confno) { - DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, getKey(confno)); - exec(da); - } - - public Integer countUsers(String confno) { - if (confno == null) { - return null; - } - ConfbridgeListAction da = new ConfbridgeListAction(confno); - ResponseEvents r = execEvent(da); - if (r != null) { - log.debug("SipDao::countUsers size == " + r.getEvents().size()); - // "- 1" here means: ListComplete event - return r.getEvents().size() - 1; // TODO check if was successfull - } - return 0; - } - - /** - * Perform call to specified phone number and join to conference - * - * @param number - * number to call - * @param r - * room to be connected to the call - */ - public void joinToConfCall(String number, Room r) { - String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null; - if (sipNumber == null) { - log.warn("Failed to get SIP number for room: {}", r); - return; - } - - OriginateAction oa = new OriginateAction(); - oa.setChannel(String.format("Local/%s@rooms-originate", sipNumber)); - oa.setContext("rooms-out"); - oa.setExten(number); - oa.setPriority(1); - oa.setTimeout(timeout); - - exec(oa); //TODO handle response - } -} +/* + * 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.apache.openmeetings.db.dao.room; + +import org.apache.openmeetings.db.entity.room.Room; +import org.asteriskjava.manager.DefaultManagerConnection; +import org.asteriskjava.manager.ManagerConnection; +import org.asteriskjava.manager.ManagerConnectionFactory; +import org.asteriskjava.manager.ResponseEvents; +import org.asteriskjava.manager.action.ConfbridgeListAction; +import org.asteriskjava.manager.action.DbDelAction; +import org.asteriskjava.manager.action.DbDelTreeAction; +import org.asteriskjava.manager.action.DbGetAction; +import org.asteriskjava.manager.action.DbPutAction; +import org.asteriskjava.manager.action.EventGeneratingAction; +import org.asteriskjava.manager.action.ManagerAction; +import org.asteriskjava.manager.action.OriginateAction; +import org.asteriskjava.manager.response.ManagerError; +import org.asteriskjava.manager.response.ManagerResponse; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; + +public class SipDao { + private static final Logger log = Red5LoggerFactory.getLogger(SipDao.class); + public static final String ASTERISK_OM_FAMILY = "openmeetings"; + public static final String ASTERISK_OM_KEY = "rooms"; + private String sipHostname; + private int sipPort; + private String sipUsername; + private String sipPassword; + private long timeout; + private ManagerConnectionFactory factory; + + @SuppressWarnings("unused") + private SipDao() { + // prohibited default constructor + } + + public SipDao(String sipHostname, int sipPort, String sipUsername, String sipPassword, long timeout) { + this.sipHostname = sipHostname; + this.sipPort = sipPort; + this.sipUsername = sipUsername; + this.sipPassword = sipPassword; + this.timeout = timeout; + factory = new ManagerConnectionFactory(this.sipHostname, this.sipPort, this.sipUsername, this.sipPassword); + } + + private ManagerConnection getConnection() { + DefaultManagerConnection con = (DefaultManagerConnection)factory.createManagerConnection(); // TODO secure + con.setDefaultEventTimeout(timeout); + con.setDefaultResponseTimeout(timeout); + con.setSocketReadTimeout((int)timeout); + con.setSocketTimeout((int)timeout); + return con; + } + + private ManagerResponse exec(ManagerAction action) { + if (factory == null) { + log.warn("There is no Asterisk configured"); + return null; + } + ManagerConnection con = getConnection(); + try { + con.login(); + ManagerResponse r = con.sendAction(action); + if (r != null) { + log.debug(r.toString()); + } + return (r instanceof ManagerError) ? null : r; + } catch (Exception e) { + log.error("Error while executing ManagerAction: " + action, e); + } finally { + try { + con.logoff(); + } catch (Exception e) { + // no-op + } + } + return null; + } + + private ResponseEvents execEvent(EventGeneratingAction action) { + if (factory == null) { + log.warn("There is no Asterisk configured"); + return null; + } + ManagerConnection con = getConnection(); + try { + con.login("on"); + ResponseEvents r = con.sendEventGeneratingAction(action); + if (r != null) { + log.debug(r.getResponse().toString()); + } + return (r == null || r.getResponse() instanceof ManagerError) ? null : r; + } catch (Exception e) { + log.error("Error while executing EventGeneratingAction: " + action, e); + } finally { + try { + con.logoff(); + } catch (Exception e) { + // no-op + } + } + return null; + } + + private static String getKey(String confno) { + return ASTERISK_OM_KEY + "/" + confno; + } + + public String get(String confno) { + String pin = null; + DbGetAction da = new DbGetAction(ASTERISK_OM_FAMILY, getKey(confno)); + ManagerResponse r = exec(da); + if (r != null) { + pin = r.getResponse(); + } + return pin; + } + + public void update(String confno, String pin) { + delete(confno); + DbPutAction da = new DbPutAction(ASTERISK_OM_FAMILY, getKey(confno), pin); + exec(da); + } + + public void delete() { + DbDelTreeAction da = new DbDelTreeAction(ASTERISK_OM_FAMILY, ASTERISK_OM_KEY); + exec(da); + } + + public void delete(String confno) { + DbDelAction da = new DbDelAction(ASTERISK_OM_FAMILY, getKey(confno)); + exec(da); + } + + public Integer countUsers(String confno) { + if (confno == null) { + return null; + } + ConfbridgeListAction da = new ConfbridgeListAction(confno); + ResponseEvents r = execEvent(da); + if (r != null) { + log.debug("SipDao::countUsers size == " + r.getEvents().size()); + // "- 1" here means: ListComplete event + return r.getEvents().size() - 1; // TODO check if was successfull + } + return 0; + } + + /** + * Perform call to specified phone number and join to conference + * + * @param number + * number to call + * @param r + * room to be connected to the call + */ + public void joinToConfCall(String number, Room r) { + String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null; + if (sipNumber == null) { + log.warn("Failed to get SIP number for room: {}", r); + return; + } + + OriginateAction oa = new OriginateAction(); + oa.setChannel(String.format("Local/%s@rooms-originate", sipNumber)); + oa.setContext("rooms-out"); + oa.setExten(number); + oa.setPriority(1); + oa.setTimeout(timeout); + + exec(oa); //TODO handle response + } +}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java index 5bd1be2..3ebd6fb 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ISessionManager.java @@ -1,206 +1,206 @@ -/* - * 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.apache.openmeetings.db.dao.server; - -import java.util.Collection; -import java.util.List; - -import org.apache.openmeetings.db.dto.basic.SearchResult; -import org.apache.openmeetings.db.dto.server.ClientSessionInfo; -import org.apache.openmeetings.db.entity.room.StreamClient; -import org.apache.openmeetings.db.entity.server.Server; - -/** - * Methods to add/get/remove {@link StreamClient}s to the session - * - * - * @author sebawagner - * - */ -public interface ISessionManager { - void clearCache(); - - /** - * Notified on server start, when the session manager should be started and - * eventually caches cleared/setup - */ - void sessionStart(); - - StreamClient add(StreamClient c, Server server); - /** - * add a new client item - * - * @param streamId - * @param scopeName - * @param remotePort - * @param remoteAddress - * @param swfUrl - * @param server - * @return - */ - StreamClient addClientListItem(String streamId, String scopeName, int remotePort, String remoteAddress, String swfUrl, Server server); - - Collection<StreamClient> getClients(); - - /** - * loads the server into the client (only if database cache is used) - * - * @return - */ - Collection<StreamClient> getClientsWithServer(); - - /** - * Get a client by its streamId - * - * @param streamId - * @param server - * @return - */ - StreamClient getClientByStreamId(String streamId, Server server); - - /** - * get a client by its publicSID and the server, - * - * @param publicSID - * @param server - * @return - */ - StreamClient getClientByPublicSID(String publicSID, Server server); - - /** - * same as {@link #getClientByPublicSID(String, boolean, Server)} but it ignores - * if the server part, so it will deliver any client just by its publicSID.<br/> - * <br/> - * <b>Note:</b> - * This method requires more time to find the user, so under normal circumstances - * you should use {@link #getClientByPublicSID(String, boolean, Server)}! - * - * @param publicSID - * @return - */ - ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID); - - /** - * - * @param userId - * @return - * - * @deprecated There could be multiple users logged in with the same userid, - * then this call would return a list not a single user - */ - @Deprecated - StreamClient getClientByUserId(Long userId); - - /** - * Update the session object of the audio/video-connection and additionally - * swap the values to the session object of the user that holds the full - * session object - * - * @param streamId - * @param rcm - * @return - */ - boolean updateAVClientByStreamId(String streamId, StreamClient rcm, Server server); - - /** - * Update the session object - * - * updateRoomCount is only <i>one</i> time true, in - * ScopeApplicationAdapter#setRoomValues(Long, Boolean, Boolean, String) - * . - * - * @param streamId - * @param rcm - * @param updateRoomCount - * true means the count for the room has to be updated - * @return - */ - boolean updateClientByStreamId(String streamId, StreamClient rcm, boolean updateRoomCount, Server server); - - /** - * Remove a client from the session store - * - * @param streamId - * @return - */ - boolean removeClient(String streamId, Server server); - - /** - * Get all ClientList Objects of that room and domain This Function is - * needed cause it is invoked internally AFTER the current user has been - * already removed from the ClientList to see if the Room is empty again and - * the PollList can be removed - * @param roomId - * @return - */ - List<StreamClient> getClientListByRoom(Long roomId); - - Collection<StreamClient> getClientListByRoomAll(Long roomId); - - /** - * get the current Moderator in this room - * - * @param roomname - * @return - */ - List<StreamClient> getCurrentModeratorByRoom(Long roomId); - - /** - * Get list of current client sessions - * - * @param start - * @param max - * @param orderby - * @param asc - * @return - */ - SearchResult<StreamClient> getListByStartAndMax(int start, int max, String orderby, boolean asc); - - /** - * returns number of current users recording - * - * @param roomId - * @return - */ - long getRecordingCount(long roomId); - - /** - * returns a number of current users publishing screensharing - * - * @param roomId - * @return - */ - long getPublishingCount(long roomId); - - /** - * Get a list of all servers of all rooms on that server, serverId = null - * means it is a local session on the master. - * - * @param server - * @return a set, a roomId can be only one time in this list - */ - List<Long> getActiveRoomIdsByServer(Server server); - - /** - * Get some statistics about the current sessions - * - * @return - */ - String getSessionStatistics(); -} +/* + * 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.apache.openmeetings.db.dao.server; + +import java.util.Collection; +import java.util.List; + +import org.apache.openmeetings.db.dto.basic.SearchResult; +import org.apache.openmeetings.db.dto.server.ClientSessionInfo; +import org.apache.openmeetings.db.entity.room.StreamClient; +import org.apache.openmeetings.db.entity.server.Server; + +/** + * Methods to add/get/remove {@link StreamClient}s to the session + * + * + * @author sebawagner + * + */ +public interface ISessionManager { + void clearCache(); + + /** + * Notified on server start, when the session manager should be started and + * eventually caches cleared/setup + */ + void sessionStart(); + + StreamClient add(StreamClient c, Server server); + /** + * add a new client item + * + * @param streamId + * @param scopeName + * @param remotePort + * @param remoteAddress + * @param swfUrl + * @param server + * @return + */ + StreamClient addClientListItem(String streamId, String scopeName, int remotePort, String remoteAddress, String swfUrl, Server server); + + Collection<StreamClient> getClients(); + + /** + * loads the server into the client (only if database cache is used) + * + * @return + */ + Collection<StreamClient> getClientsWithServer(); + + /** + * Get a client by its streamId + * + * @param streamId + * @param server + * @return + */ + StreamClient getClientByStreamId(String streamId, Server server); + + /** + * get a client by its publicSID and the server, + * + * @param publicSID + * @param server + * @return + */ + StreamClient getClientByPublicSID(String publicSID, Server server); + + /** + * same as {@link #getClientByPublicSID(String, boolean, Server)} but it ignores + * if the server part, so it will deliver any client just by its publicSID.<br/> + * <br/> + * <b>Note:</b> + * This method requires more time to find the user, so under normal circumstances + * you should use {@link #getClientByPublicSID(String, boolean, Server)}! + * + * @param publicSID + * @return + */ + ClientSessionInfo getClientByPublicSIDAnyServer(String publicSID); + + /** + * + * @param userId + * @return + * + * @deprecated There could be multiple users logged in with the same userid, + * then this call would return a list not a single user + */ + @Deprecated + StreamClient getClientByUserId(Long userId); + + /** + * Update the session object of the audio/video-connection and additionally + * swap the values to the session object of the user that holds the full + * session object + * + * @param streamId + * @param rcm + * @return + */ + boolean updateAVClientByStreamId(String streamId, StreamClient rcm, Server server); + + /** + * Update the session object + * + * updateRoomCount is only <i>one</i> time true, in + * ScopeApplicationAdapter#setRoomValues(Long, Boolean, Boolean, String) + * . + * + * @param streamId + * @param rcm + * @param updateRoomCount + * true means the count for the room has to be updated + * @return + */ + boolean updateClientByStreamId(String streamId, StreamClient rcm, boolean updateRoomCount, Server server); + + /** + * Remove a client from the session store + * + * @param streamId + * @return + */ + boolean removeClient(String streamId, Server server); + + /** + * Get all ClientList Objects of that room and domain This Function is + * needed cause it is invoked internally AFTER the current user has been + * already removed from the ClientList to see if the Room is empty again and + * the PollList can be removed + * @param roomId + * @return + */ + List<StreamClient> getClientListByRoom(Long roomId); + + Collection<StreamClient> getClientListByRoomAll(Long roomId); + + /** + * get the current Moderator in this room + * + * @param roomname + * @return + */ + List<StreamClient> getCurrentModeratorByRoom(Long roomId); + + /** + * Get list of current client sessions + * + * @param start + * @param max + * @param orderby + * @param asc + * @return + */ + SearchResult<StreamClient> getListByStartAndMax(int start, int max, String orderby, boolean asc); + + /** + * returns number of current users recording + * + * @param roomId + * @return + */ + long getRecordingCount(long roomId); + + /** + * returns a number of current users publishing screensharing + * + * @param roomId + * @return + */ + long getPublishingCount(long roomId); + + /** + * Get a list of all servers of all rooms on that server, serverId = null + * means it is a local session on the master. + * + * @param server + * @return a set, a roomId can be only one time in this list + */ + List<Long> getActiveRoomIdsByServer(Server server); + + /** + * Get some statistics about the current sessions + * + * @return + */ + String getSessionStatistics(); +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java index ed612eb..dad22cf 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java @@ -1,222 +1,222 @@ -/* - * 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.apache.openmeetings.db.dao.server; - -import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; - -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; - -import org.apache.openmeetings.db.dao.IDataProviderDao; -import org.apache.openmeetings.db.dao.user.UserDao; -import org.apache.openmeetings.db.entity.server.Server; -import org.apache.openmeetings.util.DaoHelper; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - -/** - * - * CRUD for {@link Server} - * - * @author solomax, sebawagner - * - */ -@Transactional -public class ServerDao implements IDataProviderDao<Server> { - private static final Logger log = Red5LoggerFactory.getLogger(ServerDao.class, webAppRootKey); - public final static String[] searchFields = { "name", "address", "comment" }; - - @PersistenceContext - private EntityManager em; - - @Autowired - private UserDao userDao; - - /** - * Get a list of all available servers - * - * @return - */ - public List<Server> getServerList() { - log.debug("getServerList enter"); - TypedQuery<Server> q = em.createNamedQuery("getAllServers", - Server.class); - return q.getResultList(); - } - - /* - * (non-Javadoc) - * - * @see org.apache.openmeetings.data.OmDAO#get(int, int) - */ - @Override - public List<Server> get(int start, int max) { - TypedQuery<Server> q = em.createNamedQuery("getAllServers", Server.class); - q.setFirstResult(start); - q.setMaxResults(max); - return q.getResultList(); - } - - @Override - public List<Server> get(String search, int start, int count, String order) { - TypedQuery<Server> q = em.createQuery(DaoHelper.getSearchQuery( - "Server", "s", search, true, false, order, searchFields), - Server.class); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - /** - * get the list of all servers in the cluster that are ready to receive a - * ping (active = true) - * - * @return - */ - public List<Server> getActiveServers() { - return em.createNamedQuery("getActiveServers", Server.class) - .getResultList(); - } - - /* - * (non-Javadoc) - * - * @see org.apache.openmeetings.data.OmDAO#count() - */ - @Override - public long count() { - log.debug("getServerCount enter"); - TypedQuery<Long> q = em.createNamedQuery("getServerCount", Long.class); - - return q.getSingleResult(); - } - - @Override - public long count(String search) { - TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Server", - "s", search, true, true, null, searchFields), Long.class); - return q.getSingleResult(); - } - - @Override - public Server get(long id) { - return get(Long.valueOf(id)); - } - - /* - * (non-Javadoc) - * - * @see org.apache.openmeetings.data.OmDAO#get(long) - */ - @Override - public Server get(Long id) { - Server result = null; - log.debug("getServer enter, id = " + id); - TypedQuery<Server> q = em.createNamedQuery("getServerById", - Server.class); - q.setParameter("id", id); - try { - result = q.getSingleResult(); - } catch (NoResultException e) { - // noop - } - return result; - } - - /** - * Get server by its address - * - * @param address - * @return - */ - public Server getServerByAddress(String address) { - log.debug("getServer enter, address = " + address); - TypedQuery<Server> q = em.createNamedQuery("getServerByAddress", - Server.class); - q.setParameter("address", address); - List<Server> list = q.getResultList(); - return list.size() > 0 ? list.get(0) : null; - } - - /* - * (non-Javadoc) - * - * @see - * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence - * .beans.OmEntity, long) - */ - @Override - public Server update(Server entity, Long userId) { - entity.setDeleted(false); - if (entity.getId() == null) { - entity.setInserted(new Date()); - if (userId != null) { - entity.setInsertedby(userDao.get(userId)); - } - em.persist(entity); - } else { - entity.setUpdated(new Date()); - if (userId != null) { - entity.setUpdatedby(userDao.get(userId)); - } - em.merge(entity); - } - return entity; - } - - /* - * (non-Javadoc) - * - * @see - * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence - * .beans.OmEntity, long) - */ - @Override - public void delete(Server entity, Long userId) { - if (entity.getId() != null) { - entity.setUpdated(new Date()); - if (userId != null) { - entity.setUpdatedby(userDao.get(userId)); - } - entity.setDeleted(true); - em.merge(entity); - } - } - - /** - * get {@link Server} by name - * - * @param name - * @return - */ - public List<Server> getServersByName(String name) { - TypedQuery<Server> q = em.createNamedQuery("getServerByName", - Server.class); - q.setParameter("name", name); - return q.getResultList(); - } - -} +/* + * 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.apache.openmeetings.db.dao.server; + +import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; + +import java.util.Date; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import javax.persistence.PersistenceContext; +import javax.persistence.TypedQuery; + +import org.apache.openmeetings.db.dao.IDataProviderDao; +import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.server.Server; +import org.apache.openmeetings.util.DaoHelper; +import org.red5.logging.Red5LoggerFactory; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +/** + * + * CRUD for {@link Server} + * + * @author solomax, sebawagner + * + */ +@Transactional +public class ServerDao implements IDataProviderDao<Server> { + private static final Logger log = Red5LoggerFactory.getLogger(ServerDao.class, webAppRootKey); + public final static String[] searchFields = { "name", "address", "comment" }; + + @PersistenceContext + private EntityManager em; + + @Autowired + private UserDao userDao; + + /** + * Get a list of all available servers + * + * @return + */ + public List<Server> getServerList() { + log.debug("getServerList enter"); + TypedQuery<Server> q = em.createNamedQuery("getAllServers", + Server.class); + return q.getResultList(); + } + + /* + * (non-Javadoc) + * + * @see org.apache.openmeetings.data.OmDAO#get(int, int) + */ + @Override + public List<Server> get(int start, int max) { + TypedQuery<Server> q = em.createNamedQuery("getAllServers", Server.class); + q.setFirstResult(start); + q.setMaxResults(max); + return q.getResultList(); + } + + @Override + public List<Server> get(String search, int start, int count, String order) { + TypedQuery<Server> q = em.createQuery(DaoHelper.getSearchQuery( + "Server", "s", search, true, false, order, searchFields), + Server.class); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + /** + * get the list of all servers in the cluster that are ready to receive a + * ping (active = true) + * + * @return + */ + public List<Server> getActiveServers() { + return em.createNamedQuery("getActiveServers", Server.class) + .getResultList(); + } + + /* + * (non-Javadoc) + * + * @see org.apache.openmeetings.data.OmDAO#count() + */ + @Override + public long count() { + log.debug("getServerCount enter"); + TypedQuery<Long> q = em.createNamedQuery("getServerCount", Long.class); + + return q.getSingleResult(); + } + + @Override + public long count(String search) { + TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Server", + "s", search, true, true, null, searchFields), Long.class); + return q.getSingleResult(); + } + + @Override + public Server get(long id) { + return get(Long.valueOf(id)); + } + + /* + * (non-Javadoc) + * + * @see org.apache.openmeetings.data.OmDAO#get(long) + */ + @Override + public Server get(Long id) { + Server result = null; + log.debug("getServer enter, id = " + id); + TypedQuery<Server> q = em.createNamedQuery("getServerById", + Server.class); + q.setParameter("id", id); + try { + result = q.getSingleResult(); + } catch (NoResultException e) { + // noop + } + return result; + } + + /** + * Get server by its address + * + * @param address + * @return + */ + public Server getServerByAddress(String address) { + log.debug("getServer enter, address = " + address); + TypedQuery<Server> q = em.createNamedQuery("getServerByAddress", + Server.class); + q.setParameter("address", address); + List<Server> list = q.getResultList(); + return list.size() > 0 ? list.get(0) : null; + } + + /* + * (non-Javadoc) + * + * @see + * org.apache.openmeetings.data.OmDAO#update(org.apache.openmeetings.persistence + * .beans.OmEntity, long) + */ + @Override + public Server update(Server entity, Long userId) { + entity.setDeleted(false); + if (entity.getId() == null) { + entity.setInserted(new Date()); + if (userId != null) { + entity.setInsertedby(userDao.get(userId)); + } + em.persist(entity); + } else { + entity.setUpdated(new Date()); + if (userId != null) { + entity.setUpdatedby(userDao.get(userId)); + } + em.merge(entity); + } + return entity; + } + + /* + * (non-Javadoc) + * + * @see + * org.apache.openmeetings.data.OmDAO#delete(org.apache.openmeetings.persistence + * .beans.OmEntity, long) + */ + @Override + public void delete(Server entity, Long userId) { + if (entity.getId() != null) { + entity.setUpdated(new Date()); + if (userId != null) { + entity.setUpdatedby(userDao.get(userId)); + } + entity.setDeleted(true); + em.merge(entity); + } + } + + /** + * get {@link Server} by name + * + * @param name + * @return + */ + public List<Server> getServersByName(String name) { + TypedQuery<Server> q = em.createNamedQuery("getServerByName", + Server.class); + q.setParameter("name", name); + return q.getResultList(); + } + +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java index 423b05c..d74064e 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java @@ -1,146 +1,146 @@ -/* - * 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.apache.openmeetings.db.dao.user; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; - -import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao; -import org.apache.openmeetings.db.entity.user.Group; -import org.apache.openmeetings.util.DaoHelper; -import org.springframework.transaction.annotation.Transactional; - -@Transactional -public class GroupDao implements IGroupAdminDataProviderDao<Group> { - public final static String[] searchFields = {"name"}; - @PersistenceContext - private EntityManager em; - - @Override - public Group get(long id) { - return get(Long.valueOf(id)); - } - - @Override - public Group get(Long id) { - TypedQuery<Group> query = em.createNamedQuery("getGroupById", Group.class); - query.setParameter("id", id); - Group o = null; - try { - o = query.getSingleResult(); - } catch (NoResultException e) { - // o = null; - } - return o; - } - - public Group get(String name) { - List<Group> groups = em.createNamedQuery("getGroupByName", Group.class).setParameter("name", name).getResultList(); - return groups == null || groups.isEmpty() ? null : groups.get(0); - } - - @Override - public List<Group> get(int start, int count) { - TypedQuery<Group> q = em.createNamedQuery("getNondeletedGroups", Group.class); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - @Override - public List<Group> get(String search, int start, int count, String sort) { - TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "g", search, true, false, sort, searchFields), Group.class); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - @Override - public List<Group> get(String search, Long adminId, int start, int count, String order) { - TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, false - , "gu.user.id = :adminId AND gu.moderator = true", order, searchFields), Group.class); - q.setParameter("adminId", adminId); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - @Override - public long count() { - TypedQuery<Long> q = em.createNamedQuery("countGroups", Long.class); - return q.getSingleResult(); - } - - @Override - public long count(String search) { - TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, true, null, searchFields), Long.class); - return q.getSingleResult(); - } - - @Override - public long count(String search, Long adminId) { - TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, true - , "gu.user.id = :adminId AND gu.moderator = true", null, searchFields), Long.class); - q.setParameter("adminId", adminId); - return q.getSingleResult(); - } - - public List<Group> get(Collection<Long> ids) { - return em.createNamedQuery("getGroupsByIds", Group.class).setParameter("ids", ids).getResultList(); - } - - public List<Group> getLimited() { - return em.createNamedQuery("getLimitedGroups", Group.class).getResultList(); - } - - @Override - public Group update(Group entity, Long userId) { - if (entity.getId() == null) { - if (userId != null) { - entity.setInsertedby(userId); - } - entity.setInserted(new Date()); - em.persist(entity); - } else { - if (userId != null) { - entity.setUpdatedby(userId); - } - entity.setUpdated(new Date()); - em.merge(entity); - } - return entity; - } - - @Override - public void delete(Group g, Long userId) { - em.createNamedQuery("deleteGroupUsersByGroup").setParameter("id", g.getId()).executeUpdate(); - - g.setDeleted(true); - if (userId != null) { - g.setUpdatedby(userId); - } - em.merge(g); - } -} +/* + * 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.apache.openmeetings.db.dao.user; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import javax.persistence.PersistenceContext; +import javax.persistence.TypedQuery; + +import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao; +import org.apache.openmeetings.db.entity.user.Group; +import org.apache.openmeetings.util.DaoHelper; +import org.springframework.transaction.annotation.Transactional; + +@Transactional +public class GroupDao implements IGroupAdminDataProviderDao<Group> { + public final static String[] searchFields = {"name"}; + @PersistenceContext + private EntityManager em; + + @Override + public Group get(long id) { + return get(Long.valueOf(id)); + } + + @Override + public Group get(Long id) { + TypedQuery<Group> query = em.createNamedQuery("getGroupById", Group.class); + query.setParameter("id", id); + Group o = null; + try { + o = query.getSingleResult(); + } catch (NoResultException e) { + // o = null; + } + return o; + } + + public Group get(String name) { + List<Group> groups = em.createNamedQuery("getGroupByName", Group.class).setParameter("name", name).getResultList(); + return groups == null || groups.isEmpty() ? null : groups.get(0); + } + + @Override + public List<Group> get(int start, int count) { + TypedQuery<Group> q = em.createNamedQuery("getNondeletedGroups", Group.class); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + @Override + public List<Group> get(String search, int start, int count, String sort) { + TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "g", search, true, false, sort, searchFields), Group.class); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + @Override + public List<Group> get(String search, Long adminId, int start, int count, String order) { + TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, false + , "gu.user.id = :adminId AND gu.moderator = true", order, searchFields), Group.class); + q.setParameter("adminId", adminId); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + @Override + public long count() { + TypedQuery<Long> q = em.createNamedQuery("countGroups", Long.class); + return q.getSingleResult(); + } + + @Override + public long count(String search) { + TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, true, null, searchFields), Long.class); + return q.getSingleResult(); + } + + @Override + public long count(String search, Long adminId) { + TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, true + , "gu.user.id = :adminId AND gu.moderator = true", null, searchFields), Long.class); + q.setParameter("adminId", adminId); + return q.getSingleResult(); + } + + public List<Group> get(Collection<Long> ids) { + return em.createNamedQuery("getGroupsByIds", Group.class).setParameter("ids", ids).getResultList(); + } + + public List<Group> getLimited() { + return em.createNamedQuery("getLimitedGroups", Group.class).getResultList(); + } + + @Override + public Group update(Group entity, Long userId) { + if (entity.getId() == null) { + if (userId != null) { + entity.setInsertedby(userId); + } + entity.setInserted(new Date()); + em.persist(entity); + } else { + if (userId != null) { + entity.setUpdatedby(userId); + } + entity.setUpdated(new Date()); + em.merge(entity); + } + return entity; + } + + @Override + public void delete(Group g, Long userId) { + em.createNamedQuery("deleteGroupUsersByGroup").setParameter("id", g.getId()).executeUpdate(); + + g.setDeleted(true); + if (userId != null) { + g.setUpdatedby(userId); + } + em.merge(g); + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java index 53d85a7..bcc6d5c 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java @@ -1,124 +1,124 @@ -/* - * 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.apache.openmeetings.db.dao.user; - -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; - -import org.apache.openmeetings.db.dao.IDataProviderDao; -import org.apache.openmeetings.db.entity.user.GroupUser; -import org.apache.openmeetings.util.DaoHelper; -import org.springframework.transaction.annotation.Transactional; - -@Transactional -public class GroupUserDao implements IDataProviderDao<GroupUser> { - @PersistenceContext - private EntityManager em; - public final static String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.address.email"}; - - @Override - public GroupUser get(long id) { - return get(Long.valueOf(id)); - } - - @Override - public GroupUser get(Long id) { - TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersById", GroupUser.class); - q.setParameter("id", id); - return q.getSingleResult(); - } - - @Override - public List<GroupUser> get(int start, int count) { - throw new RuntimeException("Should not be used"); - } - - @Override - public List<GroupUser> get(String search, int start, int count, String sort) { - throw new RuntimeException("Should not be used"); - } - - public List<GroupUser> get(long groupId, String search, int start, int count, String sort) { - TypedQuery<GroupUser> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", null, search, false, false, "ou.group.id = :groupId", sort, searchFields), GroupUser.class); - q.setParameter("groupId", groupId); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - public List<GroupUser> get(long groupId, int start, int count) { - TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersByGroupId", GroupUser.class); - q.setParameter("id", groupId); - q.setFirstResult(start); - q.setMaxResults(count); - return q.getResultList(); - } - - public GroupUser getByGroupAndUser(long groupId, long userId) { - try { - List<GroupUser> list = em.createNamedQuery("isUserInGroup", GroupUser.class) - .setParameter("groupId", groupId).setParameter("userId", userId).getResultList(); - if (list != null && !list.isEmpty()) { - return list.get(0); - } - } catch (Exception e) { - //no-op - } - return null; - } - - public boolean isUserInGroup(long groupId, long userId) { - return em.createNamedQuery("isUserInGroup", GroupUser.class) - .setParameter("groupId", groupId).setParameter("userId", userId).getResultList().size() > 0; - } - - @Override - public long count() { - throw new RuntimeException("Should not be used"); - } - - @Override - public long count(String search) { - throw new RuntimeException("Should not be used"); - } - - public long count(long groupId, String search) { - TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", search, false, true, null, searchFields), Long.class); - return q.getSingleResult(); - } - - public long count(long groupId) { - TypedQuery<Long> q = em.createNamedQuery("countGroupUsers", Long.class); - q.setParameter("id", groupId); - return q.getSingleResult(); - } - - @Override - public GroupUser update(GroupUser entity, Long userId) { - throw new RuntimeException("Should not be used"); - } - - @Override - public void delete(GroupUser entity, Long userId) { - throw new RuntimeException("Should not be used"); - } -} +/* + * 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.apache.openmeetings.db.dao.user; + +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.TypedQuery; + +import org.apache.openmeetings.db.dao.IDataProviderDao; +import org.apache.openmeetings.db.entity.user.GroupUser; +import org.apache.openmeetings.util.DaoHelper; +import org.springframework.transaction.annotation.Transactional; + +@Transactional +public class GroupUserDao implements IDataProviderDao<GroupUser> { + @PersistenceContext + private EntityManager em; + public final static String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.address.email"}; + + @Override + public GroupUser get(long id) { + return get(Long.valueOf(id)); + } + + @Override + public GroupUser get(Long id) { + TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersById", GroupUser.class); + q.setParameter("id", id); + return q.getSingleResult(); + } + + @Override + public List<GroupUser> get(int start, int count) { + throw new RuntimeException("Should not be used"); + } + + @Override + public List<GroupUser> get(String search, int start, int count, String sort) { + throw new RuntimeException("Should not be used"); + } + + public List<GroupUser> get(long groupId, String search, int start, int count, String sort) { + TypedQuery<GroupUser> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", null, search, false, false, "ou.group.id = :groupId", sort, searchFields), GroupUser.class); + q.setParameter("groupId", groupId); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + public List<GroupUser> get(long groupId, int start, int count) { + TypedQuery<GroupUser> q = em.createNamedQuery("getGroupUsersByGroupId", GroupUser.class); + q.setParameter("id", groupId); + q.setFirstResult(start); + q.setMaxResults(count); + return q.getResultList(); + } + + public GroupUser getByGroupAndUser(long groupId, long userId) { + try { + List<GroupUser> list = em.createNamedQuery("isUserInGroup", GroupUser.class) + .setParameter("groupId", groupId).setParameter("userId", userId).getResultList(); + if (list != null && !list.isEmpty()) { + return list.get(0); + } + } catch (Exception e) { + //no-op + } + return null; + } + + public boolean isUserInGroup(long groupId, long userId) { + return em.createNamedQuery("isUserInGroup", GroupUser.class) + .setParameter("groupId", groupId).setParameter("userId", userId).getResultList().size() > 0; + } + + @Override + public long count() { + throw new RuntimeException("Should not be used"); + } + + @Override + public long count(String search) { + throw new RuntimeException("Should not be used"); + } + + public long count(long groupId, String search) { + TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", search, false, true, null, searchFields), Long.class); + return q.getSingleResult(); + } + + public long count(long groupId) { + TypedQuery<Long> q = em.createNamedQuery("countGroupUsers", Long.class); + q.setParameter("id", groupId); + return q.getSingleResult(); + } + + @Override + public GroupUser update(GroupUser entity, Long userId) { + throw new RuntimeException("Should not be used"); + } + + @Override + public void delete(GroupUser entity, Long userId) { + throw new RuntimeException("Should not be used"); + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java index 5562c37..dc14f03 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/MailMessage.java @@ -1,199 +1,199 @@ -/* - * 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.apache.openmeetings.db.entity.basic; - -import java.util.Calendar; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Lob; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; - -import org.apache.openmeetings.db.entity.IDataProviderEntity; - -@Entity -@NamedQueries({ - @NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id") - , @NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted") - , @NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted") - , @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m") - , @NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date") - , @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id") -}) -@Table(name = "email_queue") -public class MailMessage implements IDataProviderEntity { - private static final long serialVersionUID = 1L; - - public enum Status { - NONE, SENDING, ERROR, DONE - } - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Long id; - - @Lob - @Column(name = "recipients") - private String recipients; - - @Column(name = "replyTo") - private String replyTo; - - @Column(name = "subject") - private String subject; - - @Lob - @Column(name = "body") - private String body; - - @Lob - @Column(name = "ics") - private byte[] ics; - - @Column(name = "status", nullable = false) - @Enumerated(EnumType.STRING) - private Status status = Status.NONE; - - @Column(name = "inserted") - private Calendar inserted; - - @Column(name = "updated") - private Calendar updated; - - @Column(name = "error_count", nullable = false) - private int errorCount = 0; - - @Lob - @Column(name = "last_error") - private String lastError; - - public MailMessage() { - this(null, null, null, null, null); - } - - public MailMessage(String recipients, String replyTo, String subject, String body) { - this(recipients, replyTo, subject, body, null); - } - - public MailMessage(String recipients, String replyTo, String subject, String body, byte[] ics) { - this.recipients = recipients; - this.replyTo = replyTo; - this.subject = subject; - this.body = body; - this.ics = ics; - } - - @Override - public Long getId() { - return id; - } - - @Override - public void setId(Long id) { - this.id = id; - } - - public String getRecipients() { - return recipients; - } - - public void setRecipients(String recipients) { - this.recipients = recipients; - } - - public String getReplyTo() { - return replyTo; - } - - public void setReplyTo(String replyTo) { - this.replyTo = replyTo; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public String getBody() { - return body; - } - - public void setBody(String body) { - this.body = body; - } - - public Status getStatus() { - return status; - } - - public void setStatus(Status status) { - this.status = status; - } - - public Calendar getInserted() { - return inserted; - } - - public void setInserted(Calendar inserted) { - this.inserted = inserted; - } - - public Calendar getUpdated() { - return updated; - } - - public void setUpdated(Calendar updated) { - this.updated = updated; - } - - public byte[] getIcs() { - return ics; - } - - public void setIcs(byte[] ics) { - this.ics = ics; - } - - public int getErrorCount() { - return errorCount; - } - - public void setErrorCount(int errorCount) { - this.errorCount = errorCount; - } - - public String getLastError() { - return lastError; - } - - public void setLastError(String lastError) { - this.lastError = lastError; - } -} +/* + * 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.apache.openmeetings.db.entity.basic; + +import java.util.Calendar; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; + +import org.apache.openmeetings.db.entity.IDataProviderEntity; + +@Entity +@NamedQueries({ + @NamedQuery(name = "getMailMessageById", query = "SELECT m FROM MailMessage m WHERE m.id = :id") + , @NamedQuery(name = "getMailMessages", query = "SELECT m FROM MailMessage m ORDER BY m.updated, m.inserted") + , @NamedQuery(name = "getMailMessagesByStatus", query = "SELECT m FROM MailMessage m WHERE m.status = :status ORDER BY m.updated, m.inserted") + , @NamedQuery(name = "countMailMessages", query = "SELECT COUNT(m) FROM MailMessage m") + , @NamedQuery(name = "resetMailStatusByDate", query = "UPDATE MailMessage m SET m.status = :noneStatus WHERE m.status = :sendingStatus AND m.updated < :date") + , @NamedQuery(name = "resetMailStatusById", query = "UPDATE MailMessage m SET m.errorCount = 0, m.status = :noneStatus WHERE m.id = :id") +}) +@Table(name = "email_queue") +public class MailMessage implements IDataProviderEntity { + private static final long serialVersionUID = 1L; + + public enum Status { + NONE, SENDING, ERROR, DONE + } + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Lob + @Column(name = "recipients") + private String recipients; + + @Column(name = "replyTo") + private String replyTo; + + @Column(name = "subject") + private String subject; + + @Lob + @Column(name = "body") + private String body; + + @Lob + @Column(name = "ics") + private byte[] ics; + + @Column(name = "status", nullable = false) + @Enumerated(EnumType.STRING) + private Status status = Status.NONE; + + @Column(name = "inserted") + private Calendar inserted; + + @Column(name = "updated") + private Calendar updated; + + @Column(name = "error_count", nullable = false) + private int errorCount = 0; + + @Lob + @Column(name = "last_error") + private String lastError; + + public MailMessage() { + this(null, null, null, null, null); + } + + public MailMessage(String recipients, String replyTo, String subject, String body) { + this(recipients, replyTo, subject, body, null); + } + + public MailMessage(String recipients, String replyTo, String subject, String body, byte[] ics) { + this.recipients = recipients; + this.replyTo = replyTo; + this.subject = subject; + this.body = body; + this.ics = ics; + } + + @Override + public Long getId() { + return id; + } + + @Override + public void setId(Long id) { + this.id = id; + } + + public String getRecipients() { + return recipients; + } + + public void setRecipients(String recipients) { + this.recipients = recipients; + } + + public String getReplyTo() { + return replyTo; + } + + public void setReplyTo(String replyTo) { + this.replyTo = replyTo; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public Calendar getInserted() { + return inserted; + } + + public void setInserted(Calendar inserted) { + this.inserted = inserted; + } + + public Calendar getUpdated() { + return updated; + } + + public void setUpdated(Calendar updated) { + this.updated = updated; + } + + public byte[] getIcs() { + return ics; + } + + public void setIcs(byte[] ics) { + this.ics = ics; + } + + public int getErrorCount() { + return errorCount; + } + + public void setErrorCount(int errorCount) { + this.errorCount = errorCount; + } + + public String getLastError() { + return lastError; + } + + public void setLastError(String lastError) { + this.lastError = lastError; + } +} http://git-wip-us.apache.org/repos/asf/openmeetings/blob/8e63647c/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java index 7859b49..046bc92 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/server/Server.java @@ -1,304 +1,304 @@ -/* - * 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.apache.openmeetings.db.entity.server; - -import java.util.Calendar; -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.Lob; -import javax.persistence.ManyToOne; -import javax.persistence.NamedQueries; -import javax.persistence.NamedQuery; -import javax.persistence.Table; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import org.apache.openjpa.persistence.jdbc.ForeignKey; -import org.apache.openmeetings.db.entity.IDataProviderEntity; -import org.apache.openmeetings.db.entity.user.User; -import org.simpleframework.xml.Element; -import org.simpleframework.xml.Root; - -@Entity -@NamedQueries({ - @NamedQuery(name = "getAllServers", query = "SELECT s FROM Server s WHERE s.deleted = false ORDER BY s.id"), - @NamedQuery(name = "getServerCount", query = "SELECT COUNT(s) FROM Server s WHERE s.deleted = false"), - @NamedQuery(name = "getServerById", query = "SELECT s FROM Server s LEFT JOIN FETCH s.insertedby LEFT JOIN FETCH s.updatedby WHERE s.deleted = false AND s.id = :id"), - @NamedQuery(name = "getServerByName", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.name LIKE :name"), - @NamedQuery(name = "getServerByAddress", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.address LIKE :address"), - @NamedQuery(name = "getServersWithNoUsers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT u.server.id FROM User u where u.server.id IS NOT NULL)"), - @NamedQuery(name = "getServerWithMinimumUsers", query = "SELECT s.id, COUNT(u) AS cnt FROM User u JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt"), - @NamedQuery(name = "getActiveServers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.active = true") // -}) -@Table(name = "server") -@Root -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class Server implements IDataProviderEntity { - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - @Element(data = true) - private Long id; - - @Column(name = "name") - @Element(data = true) - private String name; - - @Column(name = "address") - @Element(data = true) - private String address; - - @Column(name = "inserted") - public Date inserted; - - @Column(name = "updated") - public Date updated; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "insertedby_id", updatable = true, insertable = true) - @ForeignKey(enabled = true) - public User insertedby; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "updatedby_id", updatable = true, insertable = true) - @ForeignKey(enabled = true) - public User updatedby; - - @Lob - @Column(name = "comment", length = 2048) - @Element(data = true, required = false) - private String comment; - - @Column(name = "last_ping", nullable = true) - @Element(data = true, required = false) - private Calendar lastPing; - - @Column(name = "port", nullable = true) - @Element(data = true, required = false) - private int port; - - @Column(name = "protocol", nullable = true) - @Element(data = true, required = false) - private String protocol; - - @Column(name = "webapp", nullable = true) - @Element(data = true, required = false) - private String webapp; - - @Column(name = "login", nullable = true) - @Element(data = true, required = false) - private String user; - - @Column(name = "pass", nullable = true) - @Element(data = true, required = false) - private String pass; - - @Column(name = "active", nullable = false) - @Element(data = true, required = false) - private boolean active; - - @Column(name = "deleted", nullable = false) - @Element(data = true) - private boolean deleted = false; - - @Override - public Long getId() { - return id; - } - - @Override - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public boolean isDeleted() { - return deleted; - } - - public void setDeleted(boolean deleted) { - this.deleted = deleted; - } - - public Date getInserted() { - return inserted; - } - - public void setInserted(Date inserted) { - this.inserted = inserted; - } - - public Date getUpdated() { - return updated; - } - - public void setUpdated(Date updated) { - this.updated = updated; - } - - public User getInsertedby() { - return insertedby; - } - - public void setInsertedby(User insertedby) { - this.insertedby = insertedby; - } - - public User getUpdatedby() { - return updatedby; - } - - public void setUpdatedby(User updatedby) { - this.updatedby = updatedby; - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - this.comment = comment; - } - - public Calendar getLastPing() { - return lastPing; - } - - public void setLastPing(Calendar lastPing) { - this.lastPing = lastPing; - } - - public int getPort() { - return port; - } - - public void setPort(int port) { - this.port = port; - } - - public String getProtocol() { - return protocol; - } - - public void setProtocol(String protocol) { - this.protocol = protocol; - } - - public String getWebapp() { - return webapp; - } - - public void setWebapp(String webapp) { - this.webapp = webapp; - } - - public String getUser() { - return user; - } - - public void setUser(String user) { - this.user = user; - } - - public String getPass() { - return pass; - } - - public void setPass(String pass) { - this.pass = pass; - } - - public void setId(long id) { - this.id = id; - } - - public boolean isActive() { - return active; - } - - public void setActive(boolean active) { - this.active = active; - } - - @Override - public String toString() { - return "Server [id=" + id + ", name=" + name + ", address=" + address - + ", port=" + port + ", user=" + user + ", pass=" + pass - + ", protocol=" + protocol - + ", active=" + active + ", webapp=" + webapp + ", deleted=" - + deleted + "]"; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((address == null) ? 0 : address.hashCode()); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Server other = (Server) obj; - if (address == null) { - if (other.address != null) - return false; - } else if (!address.equals(other.address)) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - return true; - } -} +/* + * 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.apache.openmeetings.db.entity.server; + +import java.util.Calendar; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.apache.openjpa.persistence.jdbc.ForeignKey; +import org.apache.openmeetings.db.entity.IDataProviderEntity; +import org.apache.openmeetings.db.entity.user.User; +import org.simpleframework.xml.Element; +import org.simpleframework.xml.Root; + +@Entity +@NamedQueries({ + @NamedQuery(name = "getAllServers", query = "SELECT s FROM Server s WHERE s.deleted = false ORDER BY s.id"), + @NamedQuery(name = "getServerCount", query = "SELECT COUNT(s) FROM Server s WHERE s.deleted = false"), + @NamedQuery(name = "getServerById", query = "SELECT s FROM Server s LEFT JOIN FETCH s.insertedby LEFT JOIN FETCH s.updatedby WHERE s.deleted = false AND s.id = :id"), + @NamedQuery(name = "getServerByName", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.name LIKE :name"), + @NamedQuery(name = "getServerByAddress", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.address LIKE :address"), + @NamedQuery(name = "getServersWithNoUsers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.id NOT IN (SELECT u.server.id FROM User u where u.server.id IS NOT NULL)"), + @NamedQuery(name = "getServerWithMinimumUsers", query = "SELECT s.id, COUNT(u) AS cnt FROM User u JOIN u.server s WHERE s.deleted = false GROUP BY s.id ORDER BY cnt"), + @NamedQuery(name = "getActiveServers", query = "SELECT s FROM Server s WHERE s.deleted = false AND s.active = true") // +}) +@Table(name = "server") +@Root +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class Server implements IDataProviderEntity { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + @Element(data = true) + private Long id; + + @Column(name = "name") + @Element(data = true) + private String name; + + @Column(name = "address") + @Element(data = true) + private String address; + + @Column(name = "inserted") + public Date inserted; + + @Column(name = "updated") + public Date updated; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "insertedby_id", updatable = true, insertable = true) + @ForeignKey(enabled = true) + public User insertedby; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "updatedby_id", updatable = true, insertable = true) + @ForeignKey(enabled = true) + public User updatedby; + + @Lob + @Column(name = "comment", length = 2048) + @Element(data = true, required = false) + private String comment; + + @Column(name = "last_ping", nullable = true) + @Element(data = true, required = false) + private Calendar lastPing; + + @Column(name = "port", nullable = true) + @Element(data = true, required = false) + private int port; + + @Column(name = "protocol", nullable = true) + @Element(data = true, required = false) + private String protocol; + + @Column(name = "webapp", nullable = true) + @Element(data = true, required = false) + private String webapp; + + @Column(name = "login", nullable = true) + @Element(data = true, required = false) + private String user; + + @Column(name = "pass", nullable = true) + @Element(data = true, required = false) + private String pass; + + @Column(name = "active", nullable = false) + @Element(data = true, required = false) + private boolean active; + + @Column(name = "deleted", nullable = false) + @Element(data = true) + private boolean deleted = false; + + @Override + public Long getId() { + return id; + } + + @Override + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public boolean isDeleted() { + return deleted; + } + + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + + public Date getInserted() { + return inserted; + } + + public void setInserted(Date inserted) { + this.inserted = inserted; + } + + public Date getUpdated() { + return updated; + } + + public void setUpdated(Date updated) { + this.updated = updated; + } + + public User getInsertedby() { + return insertedby; + } + + public void setInsertedby(User insertedby) { + this.insertedby = insertedby; + } + + public User getUpdatedby() { + return updatedby; + } + + public void setUpdatedby(User updatedby) { + this.updatedby = updatedby; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public Calendar getLastPing() { + return lastPing; + } + + public void setLastPing(Calendar lastPing) { + this.lastPing = lastPing; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getWebapp() { + return webapp; + } + + public void setWebapp(String webapp) { + this.webapp = webapp; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPass() { + return pass; + } + + public void setPass(String pass) { + this.pass = pass; + } + + public void setId(long id) { + this.id = id; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + @Override + public String toString() { + return "Server [id=" + id + ", name=" + name + ", address=" + address + + ", port=" + port + ", user=" + user + ", pass=" + pass + + ", protocol=" + protocol + + ", active=" + active + ", webapp=" + webapp + ", deleted=" + + deleted + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((address == null) ? 0 : address.hashCode()); + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Server other = (Server) obj; + if (address == null) { + if (other.address != null) + return false; + } else if (!address.equals(other.address)) + return false; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } +}
