Hello Sebastian, can I rename couple of methods for consistency? like Invitations getInvitationbyId(Long invId) -> Invitations get(Long invId) etc.
On Tue, Aug 6, 2013 at 3:17 PM, <sebawag...@apache.org> wrote: > Author: sebawagner > Date: Tue Aug 6 08:17:06 2013 > New Revision: 1510879 > > URL: http://svn.apache.org/r1510879 > Log: > OPENMEETINGS-728 Refactor Timezone safe DatetimeFields back to regular > one's and move persistence handling of Invitations into Dao and Named > Queries > > Added: > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/InvitationDao.java > Modified: > > openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java > > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java > > Modified: > openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml > (original) > +++ > openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml > Tue Aug 6 08:17:06 2013 > @@ -243,6 +243,7 @@ > <constructor-arg><value>12345</value></constructor-arg> > --> > </bean> > + <bean id="invitationDao" > class="org.apache.openmeetings.data.conference.dao.InvitationDao" /> > <bean id="organisationmanagement" > class="org.apache.openmeetings.data.user.OrganisationManager" /> > <bean id="organisationDao" > class="org.apache.openmeetings.data.user.dao.OrganisationDao" /> > <bean id="organisationUserDao" > class="org.apache.openmeetings.data.user.dao.OrganisationUserDao" /> > > Modified: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java > (original) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java > Tue Aug 6 08:17:06 2013 > @@ -41,6 +41,7 @@ import org.apache.openmeetings.data.basi > import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao; > import > org.apache.openmeetings.data.calendar.management.MeetingMemberLogic; > import org.apache.openmeetings.data.conference.InvitationManager; > +import org.apache.openmeetings.data.conference.dao.InvitationDao; > import org.apache.openmeetings.data.conference.dao.RoomDao; > import org.apache.openmeetings.data.user.UserManager; > import org.apache.openmeetings.data.user.dao.UsersDao; > @@ -87,6 +88,8 @@ public class AppointmentDao { > private MeetingMemberLogic meetingMemberLogic; > @Autowired > private TimezoneUtil timezoneUtil; > + @Autowired > + private InvitationDao invitationDao; > > /* > * insert, update, delete, select > @@ -474,7 +477,7 @@ public class AppointmentDao { > } > > // Update Invitation hash to new time > - > invitationManager.updateInvitationByAppointment(appointmentId, > + > invitationDao.updateInvitationByAppointment(appointmentId, > appointmentstart, appointmentend); > > ap.setAppointmentName(appointmentName); > @@ -678,7 +681,7 @@ public class AppointmentDao { > } > > // Update Invitation hash to new time > - > invitationManager.updateInvitationByAppointment(appointmentId, > + > invitationDao.updateInvitationByAppointment(appointmentId, > appointmentstart, appointmentend); > > ap.setAppointmentStarttime(appointmentstart); > > Modified: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java > (original) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java > Tue Aug 6 08:17:06 2013 > @@ -32,6 +32,7 @@ import org.apache.openmeetings.data.cale > import org.apache.openmeetings.data.calendar.daos.MeetingMemberDao; > import org.apache.openmeetings.data.conference.InvitationManager; > import org.apache.openmeetings.data.conference.RoomManager; > +import org.apache.openmeetings.data.conference.dao.InvitationDao; > import org.apache.openmeetings.data.conference.dao.RoomDao; > import org.apache.openmeetings.data.user.UserManager; > import org.apache.openmeetings.persistence.beans.basic.OmTimeZone; > @@ -74,6 +75,8 @@ public class AppointmentLogic { > private MeetingMemberLogic meetingMemberLogic; > @Autowired > private TimezoneUtil timezoneUtil; > + @Autowired > + private InvitationDao invitationDao; > > private static int DEFAULT_MINUTES_REMINDER_SEND = 15; > > @@ -493,7 +496,7 @@ public class AppointmentLogic { > > > invitationManager.sendInvitationReminderSMS(mm.getPhone(), smsSubject, > language_id); > inv.setUpdatetime(new Date()); > - > invitationManager.updateInvitation(inv); > + > invitationDao.updateInvitation(inv); > } > } > } > > Modified: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java > (original) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java > Tue Aug 6 08:17:06 2013 > @@ -24,6 +24,7 @@ import org.apache.openmeetings.Openmeeti > import org.apache.openmeetings.data.basic.FieldManager; > import org.apache.openmeetings.data.calendar.daos.MeetingMemberDao; > import org.apache.openmeetings.data.conference.InvitationManager; > +import org.apache.openmeetings.data.conference.dao.InvitationDao; > import org.apache.openmeetings.data.user.UserManager; > import org.apache.openmeetings.persistence.beans.basic.OmTimeZone; > import org.apache.openmeetings.persistence.beans.calendar.Appointment; > @@ -53,6 +54,8 @@ public class MeetingMemberLogic { > private MeetingMemberDao meetingMemberDao; > @Autowired > private TimezoneUtil timezoneUtil; > + @Autowired > + private InvitationDao invitationDao; > > /** > * This can be either an internal or an external user, internal > users have a > @@ -178,7 +181,7 @@ public class MeetingMemberLogic { > // Setting InvitationId within MeetingMember > > if (invitationId != null) { > - Invitations invi = invitationManager > + Invitations invi = invitationDao > > .getInvitationbyId(invitationId); > > member.setInvitation(invi); > @@ -266,7 +269,7 @@ public class MeetingMemberLogic { > // Setting InvitationId within MeetingMember > > if (invitationId != null) { > - Invitations invi = invitationManager > + Invitations invi = invitationDao > > .getInvitationbyId(invitationId); > > member.setInvitation(invi); > > Modified: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java > (original) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/InvitationManager.java > Tue Aug 6 08:17:06 2013 > @@ -23,15 +23,9 @@ import static org.apache.openmeetings.pe > import java.util.Calendar; > import java.util.Date; > import java.util.HashMap; > -import java.util.List; > import java.util.TimeZone; > import java.util.Vector; > > -import javax.persistence.EntityManager; > -import javax.persistence.NoResultException; > -import javax.persistence.PersistenceContext; > -import javax.persistence.TypedQuery; > - > import org.apache.openmeetings.OpenmeetingsVariables; > import org.apache.openmeetings.data.basic.AuthLevelUtil; > import org.apache.openmeetings.data.basic.FieldManager; > @@ -39,6 +33,7 @@ import org.apache.openmeetings.data.basi > import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao; > import org.apache.openmeetings.data.calendar.daos.AppointmentDao; > import org.apache.openmeetings.data.calendar.management.AppointmentLogic; > +import org.apache.openmeetings.data.conference.dao.InvitationDao; > import org.apache.openmeetings.data.conference.dao.RoomDao; > import org.apache.openmeetings.data.user.UserManager; > import org.apache.openmeetings.data.user.dao.UsersDao; > @@ -74,8 +69,8 @@ public class InvitationManager { > private static final Logger log = Red5LoggerFactory.getLogger( > InvitationManager.class, > OpenmeetingsVariables.webAppRootKey); > > - @PersistenceContext > - private EntityManager em; > + @Autowired > + private InvitationDao invitationDao; > @Autowired > private AppointmentLogic appointmentLogic; > @Autowired > @@ -187,7 +182,7 @@ public class InvitationManager { > invitation.setStarttime(new Date()); > invitation.setAppointmentId(appointmentId); > > - invitation = em.merge(invitation); > + invitation = > invitationDao.updateInvitation(invitation); > long invitationId = > invitation.getInvitations_id(); > > invitation.setInvitations_id(invitationId); > @@ -283,7 +278,7 @@ public class InvitationManager { > invitation.setStarttime(new Date()); > > invitation.setAppointmentId(appointment.getAppointmentId()); > > - invitation = em.merge(invitation); > + invitation = > invitationDao.updateInvitation(invitation); > long invitationId = invitation.getInvitations_id(); > > invitation.setInvitations_id(invitationId); > @@ -315,7 +310,7 @@ public class InvitationManager { > */ > // > ----------------------------------------------------------------------------------------------- > public void cancelInvitation(Appointment appointment, > MeetingMember member, > - Long canceling_user_id, Long language_id) { > + Long canceling_user_id, Long language_id) throws > Exception { > > log.debug("cancelInvitation"); > > @@ -377,7 +372,8 @@ public class InvitationManager { > > if (inv != null) { > inv.setDeleted(true); > - updateInvitation(inv); > + //updateInvitation(inv); > + invitationDao.updateInvitation(inv); > } > > } > @@ -674,7 +670,7 @@ public class InvitationManager { > invitation.setStarttime(new Date()); > invitation.setAppointmentId(appointmentId); > > - invitation = em.merge(invitation); > + invitation = > invitationDao.updateInvitation(invitation); > long invitationId = > invitation.getInvitations_id(); > > if (invitationId > 0) { > @@ -761,7 +757,7 @@ public class InvitationManager { > invitation.setStarttime(new Date()); > > invitation.setAppointmentId(appointment.getAppointmentId()); > > - invitation = em.merge(invitation); > + invitation = > invitationDao.updateInvitation(invitation); > long invitationId = invitation.getInvitations_id(); > > if (invitationId > 0) { > @@ -1187,60 +1183,6 @@ public class InvitationManager { > return null; > } > > - /** > - * @author becherer > - * @param invId > - * > - */ > - public Invitations getInvitationbyId(Long invId) { > - log.debug("getInvitationbyId"); > - > - try { > - String hql = "select invi from Invitations invi " > - + "WHERE invi.deleted <> :deleted " > - + "AND invi.invitations_id = > :invid"; > - > - TypedQuery<Invitations> query = > em.createQuery(hql, Invitations.class); > - query.setParameter("deleted", true); > - query.setParameter("invid", invId); > - > - Invitations inv = null; > - try { > - inv = query.getSingleResult(); > - } catch (NoResultException ex) { > - } > - > - return inv; > - } catch (Exception e) { > - log.error("getInvitationsbyId : ", e); > - return null; > - } > - } > - > - public Invitations getInvitationbyAppointementId(Long invId) { > - log.debug("getInvitationbyId"); > - > - try { > - String hql = "select invi from Invitations invi " > - + "WHERE invi.deleted <> :deleted " > - + "AND invi.invitations_id = > :invid"; > - > - TypedQuery<Invitations> query = > em.createQuery(hql, Invitations.class); > - query.setParameter("deleted", true); > - query.setParameter("invid", invId); > - > - Invitations inv = null; > - try { > - inv = query.getSingleResult(); > - } catch (NoResultException ex) { > - } > - > - return inv; > - } catch (Exception e) { > - log.error("getInvitationsbyId : ", e); > - return null; > - } > - } > > /** > * > @@ -1250,17 +1192,7 @@ public class InvitationManager { > */ > public Object getInvitationByHashCode(String hashCode, boolean > hidePass) { > try { > - String hql = "select c from Invitations as c " > - + "where c.hash LIKE :hashCode " > - + "AND c.deleted = :deleted"; > - TypedQuery<Invitations> query = > em.createQuery(hql, Invitations.class); > - query.setParameter("hashCode", hashCode); > - query.setParameter("deleted", false); > - Invitations invitation = null; > - try { > - invitation = query.getSingleResult(); > - } catch (NoResultException ex) { > - } > + Invitations invitation = > invitationDao.getInvitationByHashCode(hashCode, hidePass); > > if (invitation == null) { > // already deleted or does not exist > @@ -1280,7 +1212,7 @@ public class InvitationManager { > // set to true if > this is the first time / a normal > // > getInvitation-Query > > invitation.setInvitationWasUsed(true); > - > this.updateInvitation(invitation); > + > invitationDao.updateInvitation(invitation); > // > invitation.setInvitationpass(null); > > invitation.setAllowEntry(true); > return invitation; > @@ -1301,7 +1233,7 @@ public class InvitationManager { > Calendar end = > Calendar.getInstance(TimeZone.getTimeZone(tz.getIcal())); > > end.setTime(invitation.getValidTo()); > if (now.after(start) && > now.before(end)) { > - > this.updateInvitation(invitation); > + > invitationDao.updateInvitation(invitation); > // > invitation.setInvitationpass(null); > > invitation.setAllowEntry(true); > return invitation; > @@ -1318,7 +1250,7 @@ public class InvitationManager { > } > } else { > // Invitation is not limited, > neither time nor single-usage > - this.updateInvitation(invitation); > + > invitationDao.updateInvitation(invitation); > > invitation.setAllowEntry(true); > // > invitation.setInvitationpass(null); > @@ -1334,25 +1266,6 @@ public class InvitationManager { > > /** > * > - * @param invitation > - */ > - public void updateInvitation(Invitations invitation) { > - try { > - invitation.setUpdatetime(new Date()); > - if (invitation.getInvitations_id() == null) { > - em.persist(invitation); > - } else { > - if (!em.contains(invitation)) { > - em.merge(invitation); > - } > - } > - } catch (Exception ex2) { > - log.error("[selectMaxFromUsers] ", ex2); > - } > - } > - > - /** > - * > * @param hashCode > * @param pass > * @return > @@ -1383,35 +1296,5 @@ public class InvitationManager { > return new Long(-1); > } > > - public void updateInvitationByAppointment(Long appointmentId, > - Date appointmentstart, Date appointmentend) { > - try { > - > - Date gmtTimeStartShifted = new > Date(appointmentstart.getTime() > - - (5 * 60 * 1000)); > - > - String hql = "select a from Invitations a " > - + "WHERE a.appointmentId = > :appointmentId "; > - > - TypedQuery<Invitations> query = > em.createQuery(hql, Invitations.class); > - query.setParameter("appointmentId", appointmentId); > - > - List<Invitations> listInvitations = > query.getResultList(); > - > - for (Invitations inv : listInvitations) { > - inv.setValidFrom(gmtTimeStartShifted); > - inv.setValidTo(appointmentend); > - if (inv.getInvitations_id() == null) { > - em.persist(inv); > - } else { > - if (!em.contains(inv)) { > - em.merge(inv); > - } > - } > - } > - > - } catch (Exception err) { > - > - } > - } > + > } > > Added: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/InvitationDao.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/InvitationDao.java?rev=1510879&view=auto > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/InvitationDao.java > (added) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/conference/dao/InvitationDao.java > Tue Aug 6 08:17:06 2013 > @@ -0,0 +1,121 @@ > +/* > + * 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.data.conference.dao; > + > +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.OpenmeetingsVariables; > +import org.apache.openmeetings.persistence.beans.invitation.Invitations; > +import org.red5.logging.Red5LoggerFactory; > +import org.slf4j.Logger; > +import org.springframework.transaction.annotation.Transactional; > + > +@Transactional > +public class InvitationDao { > + > + private static final Logger log = Red5LoggerFactory.getLogger( > + InvitationDao.class, > OpenmeetingsVariables.webAppRootKey); > + > + @PersistenceContext > + private EntityManager em; > + > + public Invitations updateInvitation(Invitations invitation) throws > Exception { > + invitation.setUpdatetime(new Date()); > + if (invitation.getInvitations_id() == null) { > + em.persist(invitation); > + return invitation; > + } else { > + if (!em.contains(invitation)) { > + return em.merge(invitation); > + } > + } > + return null; > + } > + > + public Invitations getInvitationbyId(Long invId) { > + try { > + > + TypedQuery<Invitations> query = > em.createNamedQuery("getInvitationbyId", Invitations.class); > + query.setParameter("deleted", true); > + query.setParameter("invid", invId); > + > + try { > + return query.getSingleResult(); > + } catch (NoResultException ex) { > + } > + > + } catch (Exception e) { > + log.error("getInvitationbyId : ", e); > + } > + return null; > + } > + > + public Invitations getInvitationByHashCode(String hashCode, > boolean hidePass) { > + try { > + > + TypedQuery<Invitations> query = > em.createNamedQuery("getInvitationByHashCode", Invitations.class); > + query.setParameter("hashCode", hashCode); > + query.setParameter("deleted", false); > + > + try { > + return query.getSingleResult(); > + } catch (NoResultException ex) { > + } > + > + } catch (Exception e) { > + log.error("getInvitationbyAppointementId : ", e); > + } > + return null; > + } > + > + public void updateInvitationByAppointment(Long appointmentId, > + Date appointmentstart, Date appointmentend) { > + try { > + > + Date gmtTimeStartShifted = new > Date(appointmentstart.getTime() > + - (5 * 60 * 1000)); > + > + TypedQuery<Invitations> query = > em.createNamedQuery("getInvitationByAppointment", Invitations.class); > + query.setParameter("appointmentId", appointmentId); > + > + List<Invitations> listInvitations = > query.getResultList(); > + > + for (Invitations inv : listInvitations) { > + inv.setValidFrom(gmtTimeStartShifted); > + inv.setValidTo(appointmentend); > + if (inv.getInvitations_id() == null) { > + em.persist(inv); > + } else { > + if (!em.contains(inv)) { > + em.merge(inv); > + } > + } > + } > + > + } catch (Exception err) { > + log.error("updateInvitationByAppointment : ", err); > + } > + } > +} > > Modified: > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java > URL: > http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java?rev=1510879&r1=1510878&r2=1510879&view=diff > > ============================================================================== > --- > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java > (original) > +++ > openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/invitation/Invitations.java > Tue Aug 6 08:17:06 2013 > @@ -29,6 +29,8 @@ import javax.persistence.GenerationType; > import javax.persistence.Id; > import javax.persistence.JoinColumn; > import javax.persistence.ManyToOne; > +import javax.persistence.NamedQueries; > +import javax.persistence.NamedQuery; > import javax.persistence.Table; > > import org.apache.openjpa.persistence.jdbc.ForeignKey; > @@ -37,6 +39,16 @@ import org.apache.openmeetings.persisten > import org.apache.openmeetings.persistence.beans.user.User; > > @Entity > +@NamedQueries({ > + @NamedQuery(name = "getInvitationbyId", query = "select invi from > Invitations invi " > + + "WHERE invi.deleted <> :deleted " > + + "AND invi.invitations_id = > :invid"), > + @NamedQuery(name = "getInvitationByHashCode", query = "select c > from Invitations as c " > + + "where c.hash LIKE :hashCode " > + + "AND c.deleted = :deleted"), > + @NamedQuery(name = "getInvitationByAppointment", query = "select a > from Invitations a " > + + "WHERE a.appointmentId = > :appointmentId ") > +}) > @Table(name = "invitations") > public class Invitations implements Serializable { > private static final long serialVersionUID = 1153321347974705506L; > > > -- WBR Maxim aka solomax