EventDB.java
package sk.iway.iwcm.calendar;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import sk.iway.iwcm.Adminlog;
import sk.iway.iwcm.DB;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.common.SearchTools;
import sk.iway.iwcm.database.ComplexQuery;
import sk.iway.iwcm.database.Mapper;
import sk.iway.iwcm.database.SimpleQuery;
/**
* EventDB.java - vykonava pracu s databazou s tabulkou calendar a calendar_types
*
* @Title webjet7
* @Company Interway s.r.o. (www.interway.sk)
* @Copyright Interway s.r.o. (c) 2001-2010
* @author $Author: kmarton $
* @version $Revision: 1.0 $
* @created Date: 25.06.2010 14:55:51
* @modified $Date: 2010/06/25 14:56:45 $
*/
public class EventDB
{
/**
* Funkcia, ktora vrati zoznam udalosti reprezentovane objektom CalendarDetails podla filtracnych kriterii
*
* @param eventTypeId identifikator udalosti
* @param searchText text, ktory hladame v nazve udalosti
*
* @return Vrati zoznam udalosti, ktore vyhovovali filtracnym kriteriam
*/
public static List<CalendarDetails> getEvents(int eventTypeId, String searchText)
{
List<Object> params = new ArrayList<Object>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT c.*, ct.name FROM calendar c, calendar_types ct WHERE c.type_id = ct.type_id "+CloudToolsForCore.getDomainIdSqlWhere(true, "c"));
if (eventTypeId > 0)
{
sql.append(" AND c.type_id = ?");
params.add(eventTypeId);
}
if (Tools.isNotEmpty(searchText))
{
sql.append(" AND c.title LIKE ?");
params.add("%" + searchText + "%");
}
sql.append(" ORDER BY date_from DESC");
List<CalendarDetails> events = new ComplexQuery().setSql(sql.toString()).setParams(params.toArray()).list(new Mapper<CalendarDetails>()
{
@Override
public CalendarDetails map(ResultSet rs) throws SQLException
{
int bgColor = 0;
CalendarDetails event = new CalendarDetails();
event.setCalendarId(rs.getInt("calendar_id"));
String title = SearchTools.htmlToPlain(DB.getDbString(rs, "title"));
title = StringUtils.abbreviate(title, 60);
event.setTitle(title);
event.setDescription(DB.getDbString(rs, "description"));
event.setFrom(rs.getTimestamp("date_from"));
event.setTo(rs.getTimestamp("date_to"));
event.setTypeId(rs.getInt("type_id"));
event.setType(DB.getDbString(rs, "name"));
event.setTimeRange(DB.getDbString(rs, "time_range"));
event.setArea(DB.getDbString(rs, "area"));
event.setCity(DB.getDbString(rs, "city"));
event.setAddress(DB.getDbString(rs, "address"));
event.setInfo1(DB.getDbString(rs, "info_1"));
event.setInfo2(DB.getDbString(rs, "info_2"));
event.setInfo3(DB.getDbString(rs, "info_3"));
event.setInfo4(DB.getDbString(rs, "info_4"));
event.setInfo5(DB.getDbString(rs, "info_5"));
event.setNotifyHoursBefore(rs.getInt("notify_hours_before"));
event.setNotifyEmails(DB.getDbString(rs, "notify_emails"));
event.setNotifySender(DB.getDbString(rs, "notify_sender"));
event.setNotifyIntrotext(DB.getDbString(rs, "notify_introtext"));
event.setNotifySendSMS(rs.getBoolean("notify_sendsms"));
event.setLng(DB.getDbString(rs, "lng"));
event.setCreatorId(rs.getInt("creator_id"));
event.setApprove(rs.getInt("approve"));
event.setSuggest(rs.getBoolean("suggest"));
event.setDomainId(rs.getInt("domain_id"));
event.setBgColorIndex(bgColor);
//bgColor = 1 - bgColor; //dead store
return event;
}
});
return events;
}
/**
* Funkcia, ktora vymaze danu udalost a zaznam o tom ulozi do auditu
*
* @param eventId identifikator udalosti
*/
public static void deleteEvent(int eventId)
{
if(CalendarDB.getEvent(eventId) != null)
{
Adminlog.add(Adminlog.TYPE_CALENDAR_DELETE, "Zmazane podujatie: " + CalendarDB.getEvent(eventId).getTitle(), eventId, -1);
new SimpleQuery().execute("DELETE FROM calendar WHERE calendar_id = ?", eventId);
}
}
public static void changeApproved(int eventId)
{
int approve=-1;
CalendarDetails cd = CalendarDB.getEvent(eventId);
if(cd.getApprove()==-1)
approve=1;
if(cd != null)
{
Adminlog.add(Adminlog.TYPE_CALENDAR_UPDATE, "Zmena schvalenia podujatia: " + CalendarDB.getEvent(eventId).getTitle(), eventId, -1);
new SimpleQuery().execute("UPDATE calendar SET approve = ? WHERE calendar_id = ?", approve, eventId);
}
}
}