KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > knowgate > addrbook > Room


1 /*
2   Copyright (C) 2003 Know Gate S.L. All rights reserved.
3                       C/Oņa, 107 1š2 28050 Madrid (Spain)
4
5   Redistribution and use in source and binary forms, with or without
6   modification, are permitted provided that the following conditions
7   are met:
8
9   1. Redistributions of source code must retain the above copyright
10      notice, this list of conditions and the following disclaimer.
11
12   2. The end-user documentation included with the redistribution,
13      if any, must include the following acknowledgment:
14      "This product includes software parts from hipergate
15      (http://www.hipergate.org/)."
16      Alternately, this acknowledgment may appear in the software itself,
17      if and wherever such third-party acknowledgments normally appear.
18
19   3. The name hipergate must not be used to endorse or promote products
20      derived from this software without prior written permission.
21      Products derived from this software may not be called hipergate,
22      nor may hipergate appear in their name, without prior written
23      permission.
24
25   This library is distributed in the hope that it will be useful,
26   but WITHOUT ANY WARRANTY; without even the implied warranty of
27   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28
29   You should have received a copy of hipergate License with this code;
30   if not, visit http://www.hipergate.org or mail to info@hipergate.org
31 */

32
33 package com.knowgate.addrbook;
34
35 import java.util.Date JavaDoc;
36 import java.sql.SQLException JavaDoc;
37 import java.sql.PreparedStatement JavaDoc;
38 import java.sql.CallableStatement JavaDoc;
39 import java.sql.ResultSet JavaDoc;
40 import java.sql.Timestamp JavaDoc;
41 import java.sql.Types JavaDoc;
42
43 import com.knowgate.jdc.JDCConnection;
44 import com.knowgate.dataobjs.DB;
45 import com.knowgate.dataobjs.DBPersist;
46
47 /**
48  * <p>Meeting Room or other type of Resource used at Meeting</p>
49  * @author Sergio Montoro Ten
50  * @version 1.0
51  */

52
53 public class Room extends DBPersist {
54   public Room() {
55     super(DB.k_rooms, "Room");
56   }
57
58   // ----------------------------------------------------------
59

60   /**
61    * Load Room
62    * @param oConn JDCConnection
63    * @param sNmRoom String Room name
64    * @param sGuWorkArea String WorkArea Guid
65    * @return boolean
66    * @throws SQLException
67    */

68   public boolean load(JDCConnection oConn, Object JavaDoc sNmRoom, Object JavaDoc sGuWorkArea) throws SQLException JavaDoc {
69     Object JavaDoc oCol;
70     clear();
71     PreparedStatement JavaDoc oStmt = oConn.prepareStatement("SELECT "+DB.id_domain+","+DB.bo_available+","+DB.tp_room+","+DB.nu_capacity+","+DB.tx_company+","+DB.tx_location+","+DB.tx_comments+" FROM "+DB.k_rooms+ " WHERE "+DB.nm_room+"=? AND "+DB.gu_workarea+"=?",
72                                                      ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
73     oStmt.setObject(1, sNmRoom, Types.VARCHAR);
74     oStmt.setObject(2, sGuWorkArea, Types.CHAR);
75     ResultSet JavaDoc oRSet = oStmt.executeQuery();
76     boolean bRetVal = oRSet.next();
77     if (bRetVal) {
78       put(DB.nm_room, sNmRoom);
79       put(DB.gu_workarea, sGuWorkArea);
80       put(DB.id_domain, oRSet.getInt(1));
81       put(DB.bo_available, oRSet.getShort(2));
82       oCol = oRSet.getObject(3);
83       if (!oRSet.wasNull()) put(DB.tp_room, oCol);
84       oCol = oRSet.getObject(4);
85       if (!oRSet.wasNull()) put(DB.tp_room, oCol);
86       oCol = oRSet.getObject(5);
87       if (!oRSet.wasNull()) put(DB.tp_room, oCol);
88       oCol = oRSet.getObject(6);
89       if (!oRSet.wasNull()) put(DB.tp_room, oCol);
90       oCol = oRSet.getObject(7);
91       if (!oRSet.wasNull()) put(DB.tp_room, oCol);
92     }
93     oRSet.close();
94     oStmt.close();
95     return bRetVal;
96   } // load
97

98   // ----------------------------------------------------------
99

100   /**
101    * Load Room
102    * @param oConn JDCConnection
103    * @param NmRoomGuWrkA Object[] { Room Name, WorkArea Guid}
104    * @return boolean
105    * @throws SQLException
106    */

107   public boolean load(JDCConnection oConn, Object JavaDoc[] NmRoomGuWrkA)
108     throws SQLException JavaDoc {
109     return load(oConn, NmRoomGuWrkA[0], NmRoomGuWrkA[1]);
110   }
111
112   // ----------------------------------------------------------
113

114   public boolean delete(JDCConnection oConn) throws SQLException JavaDoc {
115
116     return Room.delete(oConn, getString(DB.nm_room), getString(DB.gu_workarea));
117   }
118
119   // ----------------------------------------------------------
120

121   /**
122    * Get meeting that takes place at this room on given dates
123    * @param oConn JDCConnection
124    * @param dtFrom Date From
125    * @param dtTo Date To
126    * @return String GUID of meeting taking place or <b>null</b> if room is available at that time.
127    * @throws SQLException
128    * @since 3.0
129    */

130   public String JavaDoc getMeetingForDate(JDCConnection oConn, Date JavaDoc dtFrom, Date JavaDoc dtTo)
131     throws SQLException JavaDoc {
132     String JavaDoc sGuMeeting;
133     Timestamp JavaDoc tsFrom = new Timestamp JavaDoc(dtFrom.getTime());
134     Timestamp JavaDoc tsTo = new Timestamp JavaDoc(dtTo.getTime());
135     PreparedStatement JavaDoc oStmt = oConn.prepareStatement("SELECT x."+DB.gu_meeting+" FROM "+
136       DB.k_rooms+" r,"+DB.k_x_meeting_room+" x WHERE r."+DB.nm_room+"=x."+DB.nm_room+
137       " AND r."+DB.gu_workarea+"=? AND r."+DB.nm_room+"=? AND (x."+DB.dt_start+" BETWEEN ? AND ?"+
138       "OR x."+DB.dt_end+" BETWEEN ? AND ? OR (x."+DB.dt_start+"<=? AND x."+DB.dt_end+">=?))",
139       ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
140     oStmt.setString(1, getString(DB.gu_workarea));
141     oStmt.setString(2, getString(DB.nm_room));
142     oStmt.setTimestamp(3, tsFrom);
143     oStmt.setTimestamp(4, tsTo);
144     oStmt.setTimestamp(5, tsFrom);
145     oStmt.setTimestamp(6, tsTo);
146     oStmt.setTimestamp(7, tsFrom);
147     oStmt.setTimestamp(8, tsTo);
148     ResultSet JavaDoc oRset = oStmt.executeQuery();
149     if (oRset.next())
150       sGuMeeting = oRset.getString(1);
151     else
152       sGuMeeting = null;
153     oRset.close();
154     oStmt.close();
155     return sGuMeeting;
156   } // available
157

158   // ----------------------------------------------------------
159

160   /**
161    * Check whether or not this room is available between two dates
162    * @param oConn JDCConnection
163    * @param dtFrom Date From
164    * @param dtTo Date To
165    * @return boolean <b>true</b> if room is available on given dates, <b>false</b> otherwise.
166    * @throws SQLException
167    * @since 3.0
168    */

169   public boolean isAvailable(JDCConnection oConn, Date JavaDoc dtFrom, Date JavaDoc dtTo)
170     throws SQLException JavaDoc {
171       return (getMeetingForDate(oConn, dtFrom, dtTo)==null);
172     }
173
174   // **********************************************************
175
// Static Methods
176

177   /**
178    * <p>Delete Room</p>
179    * Calls k_sp_del_room stored procedure
180    * @param oConn Database Connection
181    * @param sRoomNm Room Name
182    * @param sWrkAId Identifier of {@link WorkArea} to witch Room belongs
183    * @throws SQLException
184    */

185
186   public static boolean delete(JDCConnection oConn, String JavaDoc sRoomNm, String JavaDoc sWrkAId) throws SQLException JavaDoc {
187     boolean bRetVal;
188
189     CallableStatement JavaDoc oCall = oConn.prepareCall("{call k_sp_del_room ('" + sRoomNm + "','" + sWrkAId + "')}");
190     bRetVal = oCall.execute();
191     oCall.close();
192
193     return bRetVal;
194   } // delete
195

196   // **********************************************************
197
// Variables Privadas
198

199   public static final short ClassId = 21;
200
201 } // Room
202
Popular Tags