KalendarUdalostiDB.java
package sk.iway.iwcm.calendar;
import org.apache.commons.lang.time.DateUtils;
import sk.iway.iwcm.*;
import sk.iway.iwcm.doc.DocDB;
import sk.iway.iwcm.doc.DocDetails;
import sk.iway.iwcm.doc.GroupsDB;
import sk.iway.iwcm.users.UsersDB;
import javax.servlet.http.HttpSession;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.*;
public class KalendarUdalostiDB {
public static final String D_DOCUMENT_FIELDS_NODATA = "d.doc_id, d.data, d.date_created, d.publish_start, d.publish_end, d.group_id, d.password_protected, d.external_link, d.virtual_path, d.title, d.navbar, d.sort_priority, d.html_data, d.perex_place, d.perex_image, d.perex_group, d.event_date, d.forum_count, d.field_a, d.field_b, d.field_c, d.field_d";
public final static int SHOW_ALL = 0;
public final static int SHOW_NOW = 1;
public final static int SHOW_OLD = 2;
public final static int SHOW_NEXT = 3;
public static List<DocDetails> getEvents(String groupIds, boolean priorityViaGroupsIds, String perexGroupIds, int showType, String datumOd, String datumDo, int year, boolean desc, int limit, int cacheMinutes, HttpSession session) {
return getEvents(false, groupIds, priorityViaGroupsIds, perexGroupIds, showType, datumOd, datumDo, year, desc, limit, cacheMinutes, session);
}
@SuppressWarnings("unchecked")
public static List<DocDetails> getEvents(boolean includeSubdirectories, String groupIds, boolean priorityViaGroupsIds, String perexGroupIds, int showType, String datumOd, String datumDo, int year, boolean desc, int limit, int cacheMinutes, HttpSession session)
{
Cache c = Cache.getInstance();
List<DocDetails> returnList = Collections.emptyList();
String cacheName = "kalendar_udalosti-" + includeSubdirectories + "-"+groupIds+"-"+perexGroupIds+"-"+datumOd+"-"+datumDo+"-"+year+"-"+showType+"-"+desc+"-"+limit;
Identity user = UsersDB.getCurrentUser(session);
boolean notAdmin = user!=null && !user.isAdmin() || user == null;
if(notAdmin && c.getObject(cacheName)!=null)
{
Object o = c.getObject(cacheName);
if (o!=null && o instanceof List<?>)
{
Logger.debug(KalendarUdalostiDB.class, "citam z Cache List<DocDetails> pre groupIds: "+groupIds);
returnList = (List<DocDetails>)o;
}
}
else
{
Logger.debug(KalendarUdalostiDB.class, "nemam nic v cache alebo je to admin");
returnList = getEventsFromDB(includeSubdirectories, groupIds, priorityViaGroupsIds, perexGroupIds, showType, datumOd, datumDo, year, desc, limit);
Logger.debug(KalendarUdalostiDB.class, "pisem do Cache List<DocDetails> pre groupIds: "+groupIds+", perexGroupId: "+perexGroupIds+", datumOd: "+datumOd+", datumDo: "+datumDo+", year: "+year+", showType: "+showType);
c.setObjectSeconds(cacheName, returnList, cacheMinutes*60,true);
}
//filter podla prav
if(user != null)
{
List<DocDetails> filtered = new ArrayList<DocDetails>(returnList.size());
for(DocDetails doc : returnList)
{
if(DocDB.canAccess(doc, user))
filtered.add(doc);
}
returnList = filtered;
}
return returnList;
}
/**
* @param groupIds - adresare z kadial sa maju brat udalosti
* @param priorityViaGroupsIds - true ak bude priorita zobrazenych udalosti tak ako je poradie groupIds
* @param perexGroupId - filter podla perex skupin
* @param showType - SHOW_ALL = 0; SHOW_NOW = 1; SHOW_OLD = 2; SHOW_NEXT = 3;
* @param month - podla roku
* @param datumOd
* @param datumDo
* @param year
* @param desc
* @param limit
* @return
*/
private static List<DocDetails> getEventsFromDB(boolean includeSubdirectories, String groupIds, boolean priorityViaGroupsIds, String perexGroupIds, int showType, String datumOd, String datumDo, int year, boolean desc, int limit)
{
if(Tools.isEmpty(groupIds))
return null;
groupIds = groupIds.replace('+',',');
if(Tools.isNotEmpty(perexGroupIds))
perexGroupIds = perexGroupIds.replace('+',',');
List<DocDetails> docList = new ArrayList<DocDetails>();
Connection db_conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
String[] perexGroupIdsArray = null;
if(Tools.isNotEmpty(perexGroupIds)) perexGroupIdsArray = Tools.getTokens(perexGroupIds, ",");
boolean perexGroupUseJoin = Constants.getBoolean("perexGroupUseJoin") && perexGroupIdsArray != null;
String groupNamesIn = "";
db_conn = DBPool.getConnection();
StringBuffer sql = new StringBuffer("SELECT "+D_DOCUMENT_FIELDS_NODATA+" FROM documents d WHERE d.group_id IN ("+groupIds+") AND d.available = "+DB.getBooleanSql(true)+" AND d.show_in_menu = "+DB.getBooleanSql(true));
if(perexGroupIdsArray != null)
{
if(perexGroupUseJoin)
{
String gn;
for (int j=0; j<perexGroupIdsArray.length; j++)
{
gn = perexGroupIdsArray[j];
if(Tools.getIntValue(gn,0) > 0) groupNamesIn += gn+(j != perexGroupIdsArray.length-1 ? "," : "");
}
if(Tools.isNotEmpty(groupNamesIn)) sql.append(" AND p.perex_group_id IN (?)");
}
else
{
for(int i=0; i<perexGroupIdsArray.length; i++)
{
if(i == 0)
sql.append(" AND (perex_group LIKE ? OR perex_group LIKE ? OR perex_group LIKE ?");
else
sql.append(" OR perex_group LIKE ? OR perex_group LIKE ? OR perex_group LIKE ?");
}
if(perexGroupIdsArray.length > 0)
sql.append(")");
}
}
if(year > 0 && showType == SHOW_ALL)
sql.append(" AND ((publish_start IS null OR publish_end >= ?) AND (publish_end IS null OR publish_start <= ?))");
if(Tools.isNotEmpty(datumOd) || Tools.isNotEmpty(datumDo))
{
if(Tools.isNotEmpty(datumOd) && Tools.isEmpty(datumDo))
sql.append(" AND (publish_start IS null OR publish_end >= ?)");
else if(Tools.isEmpty(datumOd) && Tools.isNotEmpty(datumDo))
sql.append(" AND (publish_end IS null OR publish_start <= ?)");
else
sql.append(" AND ((publish_start IS null OR publish_end >= ?) AND (publish_end IS null OR publish_start <= ?))");
}
if (showType == SHOW_NOW)
sql.append(" AND ((publish_start IS null OR publish_start <= ?) AND (publish_end IS null OR publish_end >= ?))");
else if (showType == SHOW_OLD)
sql.append(" AND (publish_end IS NOT null AND publish_end < ?)");
else if (showType == SHOW_NEXT)
sql.append(" AND (publish_end IS NOT null AND publish_end > ?)");
sql.append(" ORDER BY d.publish_start ").append(desc ? "DESC" : "ASC");
if(limit > 0)
sql.append(" LIMIT ").append(limit);
//System.out.println(">> getDocListFromDB SQL: "+sql.toString());
Logger.debug(KalendarUdalostiDB.class, "getDocListFromDB SQL: "+sql.toString());
ps = db_conn.prepareStatement(sql.toString());
int ind = 1;
if(perexGroupIdsArray != null)
{
if(perexGroupUseJoin) ps.setString(ind++, groupNamesIn);
else
{
for(String pg : perexGroupIdsArray)
{
ps.setString(ind++, "%,"+pg+",%");
ps.setString(ind++, "%,"+pg);
ps.setString(ind++, pg+",%");
}
}
}
if(year > 0 && showType == SHOW_ALL)
{
Calendar firstDay = Calendar.getInstance();
firstDay.set(Calendar.DATE, 1);
firstDay.set(Calendar.MONTH, 0);
firstDay.set(Calendar.YEAR, year);
firstDay.set(Calendar.HOUR_OF_DAY, 0);
firstDay.set(Calendar.MINUTE, 0);
firstDay.set(Calendar.SECOND, 0);
firstDay.set(Calendar.MILLISECOND, 0);
Calendar lastDay = Calendar.getInstance();
lastDay.set(Calendar.DATE, 31);
lastDay.set(Calendar.MONTH, 11);
lastDay.set(Calendar.YEAR, year);
lastDay.set(Calendar.HOUR_OF_DAY, 23);
lastDay.set(Calendar.MINUTE, 59);
lastDay.set(Calendar.SECOND, 59);
lastDay.set(Calendar.MILLISECOND, 999);
ps.setTimestamp(ind++, new Timestamp(firstDay.getTimeInMillis()));
ps.setTimestamp(ind++, new Timestamp(lastDay.getTimeInMillis()));
}
if(Tools.isNotEmpty(datumOd) || Tools.isNotEmpty(datumDo))
{
Calendar fromDate = Calendar.getInstance();
fromDate.setTimeInMillis(DB.getTimestamp(datumOd, "0:00:00"));
Calendar toDate = Calendar.getInstance();
toDate.setTimeInMillis(DB.getTimestamp(datumDo, "23:59:59"));
if(Tools.isNotEmpty(datumOd) && Tools.isEmpty(datumDo))
ps.setTimestamp(ind++, new Timestamp(fromDate.getTimeInMillis()));
else if(Tools.isEmpty(datumOd) && Tools.isNotEmpty(datumDo))
ps.setTimestamp(ind++, new Timestamp(toDate.getTimeInMillis()));
else
{
ps.setTimestamp(ind++, new Timestamp(fromDate.getTimeInMillis()));
ps.setTimestamp(ind++, new Timestamp(toDate.getTimeInMillis()));
}
}
if (showType == SHOW_NOW)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 23);
today.set(Calendar.MINUTE, 59);
today.set(Calendar.SECOND, 59);
today.set(Calendar.MILLISECOND, 999);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
else if (showType == SHOW_OLD)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
else if (showType == SHOW_NEXT)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 23);
today.set(Calendar.MINUTE, 59);
today.set(Calendar.SECOND, 59);
today.set(Calendar.MILLISECOND, 999);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
rs = ps.executeQuery();
while (rs.next())
{
DocDetails doc = new DocDetails();
doc.setDocId(rs.getInt("doc_id"));
doc.setData(rs.getString("data"));
doc.setDateCreated(DB.getDbTimestamp(rs, "date_created"));
doc.setPublishStart(DB.getDbTimestamp(rs, "publish_start"));
doc.setPublishEnd(DB.getDbTimestamp(rs, "publish_end"));
doc.setGroupId(rs.getInt("group_id"));
doc.setPasswordProtected(DB.getDbString(rs, "password_protected"));
doc.setExternalLink(DB.getDbString(rs, "external_link"));
doc.setVirtualPath(DB.getDbString(rs, "virtual_path"));
doc.setTitle(DB.getDbString(rs, "title"));
doc.setNavbar(DB.getDbString(rs, "navbar"));
doc.setSortPriority(rs.getInt("sort_priority"));
doc.setHtmlData(DB.getDbString(rs, "html_data"));
doc.setPerexPlace(DB.getDbString(rs, "perex_place"));
doc.setPerexImage(DB.getDbString(rs, "perex_image"));
doc.setPerexGroupString(DB.getDbString(rs, "perex_group"));
doc.setEventDate(DB.getDbTimestamp(rs, "event_date"));
doc.setForumCount(rs.getInt("forum_count"));
doc.setFieldA(DB.getDbString(rs, "field_a"));
doc.setFieldB(DB.getDbString(rs, "field_b"));
doc.setFieldC(DB.getDbString(rs, "field_c"));
doc.setFieldD(DB.getDbString(rs, "field_d"));
docList.add(doc);
}
rs.close();
ps.close();
db_conn.close();
rs = null;
ps = null;
db_conn = null;
}
catch (Exception ex)
{
sk.iway.iwcm.Logger.error(ex);
}
finally
{
try
{
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (db_conn != null)
db_conn.close();
}
catch (Exception ex2)
{
}
}
List<String> groupIdsTokens = new ArrayList<>(Tools.getStringListValue(Tools.getTokens(groupIds,",")));
if (includeSubdirectories) {
GroupsDB groupsDB = GroupsDB.getInstance();
Set<String> subgroupIds = getSubgroupIds(groupsDB, groupIdsTokens);
if (!subgroupIds.isEmpty()) {
for (String subgroupId : subgroupIds) {
groupIdsTokens.add(subgroupId);
}
}
}
//usporiadam podla groupIds
if(priorityViaGroupsIds && docList != null && docList.size() > 0)
{
List<DocDetails> newResult = new ArrayList<DocDetails>();
for(String token : groupIdsTokens)
{
int groupId = Tools.getIntValue(token, 0);
for(DocDetails doc : docList)
{
if(doc.getGroupId() == groupId)
newResult.add(doc);
}
}
if(newResult.size() > 0)
{
docList = null;
docList = new ArrayList<DocDetails>(newResult);
}
}
return docList;
}
private static Set<String> getSubgroupIds(GroupsDB groupsDB, List<String> groupIdsTokens) {
Set<String> result = new HashSet<>();
for (String groupId : groupIdsTokens) {
int id = Tools.getIntValue(groupId, 0);
if (id == 0) {
break;
}
String subgroupsIds = groupsDB.getSubgroupsIds(id);
if (subgroupsIds.equals("-1")) {
break;
}
List<String> subgroupIds = new ArrayList<>(Tools.getStringListValue(Tools.getTokens(subgroupsIds, ",")));
if (subgroupIds.contains("" + id)) {
subgroupIds.remove(subgroupIds.indexOf("" + id));
}
result.addAll(subgroupIds);
}
return result;
}
/**
* vrati akcie pre zadany den z ArrayListu
* @param events
* @param datum
* @return
*/
public static List<DocDetails> getEventsForDay(List<DocDetails> events, long datum)
{
List<DocDetails> result = new ArrayList<DocDetails>();
datum = DB.getTimestamp(Tools.formatDate(datum));
for (DocDetails event : events)
{
long calFrom = -1;
long calTo = -1;
if(Tools.isNotEmpty(event.getPublishStartString()))
calFrom = DB.getTimestamp(event.getPublishStartString());
if(Tools.isNotEmpty(event.getPublishEndString()))
calTo = DB.getTimestamp(event.getPublishEndString());
if(calFrom != -1 && calTo == -1)
{
if(DateUtils.isSameDay(new Date(calFrom), new Date(datum)))
//if(calFrom == datum)
result.add(event);
}
else if(calFrom != -1 && calTo != -1)
{
if(calFrom <= datum && datum <= calTo)
result.add(event);
}
}
return result;
}
/**
* vrati nasledujucich x akcii pre zadany den, maximalne vsak do konca mesiaca
* neberie do uvahy udalosti zacinajuce v danom dni
* @param events eventy
* @param datum od kedy
* @param count pocet udalosti
* @param till datum dokedy sa ma maximalne hladat
* @return
*/
public static List<DocDetails> getNextEvents(List<DocDetails> events, long datum, int count, long till)
{
if(count < 1) throw new IllegalArgumentException("count must be positive number");
if(events == null) throw new IllegalArgumentException("Events can't be null");
List<DocDetails> result = new ArrayList<DocDetails>(count);
datum = DB.getTimestamp(Tools.formatDate(datum));
for (DocDetails event : events)
{
long calFrom = -1;
if(Tools.isNotEmpty(event.getPublishStartString()))
calFrom = DB.getTimestamp(event.getPublishStartString());
if(calFrom != -1)
{
if(calFrom > datum && calFrom < till)
result.add(event);
}
if(result.size() == count) break;
}
return result;
}
private static CalendarDetails fillCalendarDetails(ResultSet rs)
{
CalendarDetails cal = null;
try
{
cal = new CalendarDetails();
cal.setCalendarId(rs.getInt("calendar_id"));
cal.setTitle(DB.getDbString(rs, "title"));
cal.setDescription(DB.getDbString(rs, "description"));
try
{
//ak je tam len cislo, je to docId
if (cal.getDescription().length() > 0 && cal.getDescription().length() < 6)
{
int docId = Integer.parseInt(cal.getDescription().trim());
if (docId > 0)
{
DocDB docDB = DocDB.getInstance();
DocDetails doc = docDB.getDoc(docId);
if (doc != null)
{
cal.setDescription(doc.getData());
}
}
}
}
catch (Exception ex)
{
//sk.iway.iwcm.Logger.error(ex);
}
cal.setFrom(rs.getTimestamp("date_from"));
cal.setTo(rs.getTimestamp("date_to"));
cal.setTypeId(rs.getInt("type_id"));
cal.setType(DB.getDbString(rs, "name"));
cal.setTimeRange(DB.getDbString(rs, "time_range"));
cal.setArea(DB.getDbString(rs, "area"));
cal.setCity(DB.getDbString(rs, "city"));
cal.setAddress(DB.getDbString(rs, "address"));
cal.setInfo1(DB.getDbString(rs, "info_1"));
cal.setInfo2(DB.getDbString(rs, "info_2"));
cal.setInfo3(DB.getDbString(rs, "info_3"));
cal.setInfo4(DB.getDbString(rs, "info_4"));
cal.setInfo5(DB.getDbString(rs, "info_5"));
cal.setNotifyHoursBefore(rs.getInt("notify_hours_before"));
cal.setNotifyEmails(DB.getDbString(rs, "notify_emails"));
cal.setNotifySender(DB.getDbString(rs, "notify_sender"));
cal.setNotifyIntrotext(DB.getDbString(rs, "notify_introtext"));
cal.setNotifySendSMS(rs.getBoolean("notify_sendsms"));
cal.setLng(DB.getDbString(rs, "lng"));
cal.setCreatorId(rs.getInt("creator_id"));
cal.setApprove(rs.getInt("approve"));
cal.setSuggest(rs.getBoolean("suggest"));
}
catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
return cal;
}
/**
* vrati udalosti na zaklade fakulty s prioritou rektorskych udalosti
* @param fakulta - _vsetky, _rektorat, faculta_prava, faculta_ekonomie_podnikania, faculta_masmedii, faculta_informatiky
* @param typUdalostiId
* @param now - prebiehajuce
* @param past - minule
* @param future - buduce
* @param year - podla roku
* @param offset
* @param count
* @param datumOd
* @param datumDo
* @return
*/
public static List<CalendarDetails> getUdalosti(String fakulta, int typUdalostiId, boolean now, boolean past, boolean future, int year, int offset, int count, String datumOd, String datumDo)
{
List<CalendarDetails> result = null;
Connection db_conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
db_conn = DBPool.getConnection();
StringBuffer sb = new StringBuffer("SELECT c.*, ct.name FROM calendar c, calendar_types ct WHERE c.type_id=ct.type_id");
if(Tools.isNotEmpty(fakulta))
{
//ak zobrazujem akcie fakulty, tak musim hladat aj rektorske udalosti
if(!"_vsetky".equals(fakulta) || !"_rektorat".equals(fakulta))
sb.append(" AND (info_5 = ? OR info_5 = ?)");
else
sb.append(" AND info_5 = ?");
}
if(typUdalostiId > 0)
sb.append(" AND c.type_id = ?");
if(Tools.isNotEmpty(datumOd) && Tools.isNotEmpty(datumDo))
{
sb.append(" AND date_from >= ? AND date_from <= ?");
}
else
{
if(year > 0 && !now && !past && !future)
sb.append(" AND date_from >= ? AND date_to <= ?");
if(now)
sb.append(" AND date_from <= ? AND ? <= date_to");
else if(past)
sb.append(" AND date_to < ?");
else if(future)
sb.append(" AND ? < date_to");
}
sb.append(" ORDER BY info_5 DESC, date_from ASC");
if(count > 0)
sb.append(" LIMIT "+offset+", "+count);
System.out.println(">> getUdalosti SQL: "+sb.toString());
Logger.debug(KalendarUdalostiDB.class, "getUdalosti SQL: "+sb.toString());
ps = db_conn.prepareStatement(sb.toString());
int ind = 1;
if(Tools.isNotEmpty(fakulta))
{
if(!"_vsetky".equals(fakulta) || !"_rektorat".equals(fakulta))
ps.setString(ind++, "_rektorat");
ps.setString(ind++, fakulta);
}
if(typUdalostiId > 0)
ps.setInt(ind++, typUdalostiId);
if(Tools.isNotEmpty(datumOd) && Tools.isNotEmpty(datumDo))
{
ps.setTimestamp(ind++, new Timestamp(DB.getTimestamp(datumOd, "0:00:00")));
ps.setTimestamp(ind++, new Timestamp(DB.getTimestamp(datumDo, "0:00:00")));
}
else
{
if(year > 0 && !now && !past && !future)
{
Calendar firstDay = Calendar.getInstance();
firstDay.set(Calendar.DATE, 1);
firstDay.set(Calendar.MONTH, 0);
firstDay.set(Calendar.YEAR, year);
firstDay.set(Calendar.HOUR_OF_DAY, 0);
firstDay.set(Calendar.MINUTE, 0);
firstDay.set(Calendar.SECOND, 0);
firstDay.set(Calendar.MILLISECOND, 0);
Calendar lastDay = Calendar.getInstance();
lastDay.set(Calendar.DATE, 31);
lastDay.set(Calendar.MONTH, 11);
lastDay.set(Calendar.YEAR, year);
lastDay.set(Calendar.HOUR_OF_DAY, 0);
lastDay.set(Calendar.MINUTE, 0);
lastDay.set(Calendar.SECOND, 0);
lastDay.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(firstDay.getTimeInMillis()));
ps.setTimestamp(ind++, new Timestamp(lastDay.getTimeInMillis()));
}
if(now)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
else if(past)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
else if(future)
{
Calendar today = Calendar.getInstance();
if(year > 0)
today.set(Calendar.YEAR, year);
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
ps.setTimestamp(ind++, new Timestamp(today.getTimeInMillis()));
}
}
rs = ps.executeQuery();
while (rs.next())
{
if(result == null)
result = new ArrayList<CalendarDetails>();
result.add(fillCalendarDetails(rs));
}
rs.close();
ps.close();
db_conn.close();
rs = null;
ps = null;
db_conn = null;
}
catch (Exception ex)
{
sk.iway.iwcm.Logger.error(ex);
}
finally
{
try
{
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (db_conn != null)
db_conn.close();
}
catch (Exception ex2)
{
}
}
return result;
}
}