WelcomeDataBackTime.java
package sk.iway.iwcm.components.welcome;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import sk.iway.iwcm.Cache;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.DateTools;
import sk.iway.iwcm.InitServlet;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.database.SimpleQuery;
import sk.iway.iwcm.stat.Column;
import sk.iway.iwcm.stat.StatNewDB;
import sk.iway.iwcm.stat.StatTableDB;
/**
* WelcomeDataBackTime.java
*
* Ziskanie a cachovanie udajov z WebJETu pre homepage WebJET 8. Poskytuje
* nasledovne udaje za obdobie poslednych 24 hodin. Obdobie sa konfiguruje cez
* konfiguracnu premennu "welcomeDataBackTimeMinutes" co je pocet minut za ktore
* sa budu data z DB vyberat.
*
*
* @Title webjet7
* @Company Interway s.r.o. (www.interway.sk)
* @Copyright Interway s.r.o. (c) 2001-2014
* @author $Author: jeeff mkolejak $
* @version $Revision: 1.3 $
* @created Date: 14.7.2014 13:37:29
* @modified $Date: 2004/08/16 06:26:11 $
*/
public class WelcomeDataBackTime
{
private static WelcomeDataBean welcomeDataBean;
//private static long month_4 = 4l * 30l * 24l * 60l * 60l * 1000l;
//private static long days_17 = 17l * 24l * 60l * 60l * 1000l;
protected WelcomeDataBackTime() {
//utility class
}
public static WelcomeDataBean getWelcomeDataBackTime()
{
String cacheKey = "welcomeDataBackTimes-domainId="+CloudToolsForCore.getDomainId();
Cache cache = Cache.getInstance();
if (cache.getObject(cacheKey) != null)
{
welcomeDataBean = (WelcomeDataBean) (cache.getObject(cacheKey));
}
else
{
welcomeDataBean = initialize();
cache.setObjectSeconds(cacheKey, welcomeDataBean, getWelcomeDataCacheMinutesConst()*60, true);
}
return welcomeDataBean;
}
public static int getWelcomeDataCacheMinutesConst()
{
return Constants.getInt("welcomeDataCacheMinutes");
}
public static WelcomeDataBean initialize()
{
welcomeDataBean = new WelcomeDataBean();
initFillFormNumber();
initDocumentForumNumber();
Calendar calendarFrom = DateTools.timestampToCalendar(getTimeFrom());
Calendar calendarTo = DateTools.timestampToCalendar(getTimeTo());
initStatsViewNumber(calendarFrom, calendarTo);
initStatsErrorNumber(calendarFrom, calendarTo);
return welcomeDataBean;
}
private static void initDocumentForumNumber()
{
try
{
int documentForumNumber = new SimpleQuery().forInt(
"SELECT count(*) AS countForums FROM document_forum WHERE question_date between ? and ? " + CloudToolsForCore.getDomainIdSqlWhere(true), getTimeFrom(),
getTimeTo());
Logger.debug(WelcomeDataBackTime.class, "documentForumNumber: " + documentForumNumber);
welcomeDataBean.setDocumentForumNumber(documentForumNumber);
}
catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
}
private static void initFillFormNumber()
{
try
{
int fillFormsNumber = new SimpleQuery().forInt(
"SELECT count(*) AS countForms FROM forms WHERE create_date is not null AND create_date between ? and ? " + CloudToolsForCore.getDomainIdSqlWhere(true), getTimeFrom(),
getTimeTo());
Logger.debug(WelcomeDataBackTime.class, "fillFormsNumber: " + fillFormsNumber);
welcomeDataBean.setFillFormsNumber(fillFormsNumber);
}
catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
}
private static void initStatsErrorNumber(Calendar calendarFrom, Calendar calendarTo)
{
int statErrorNumber = 0;
if ("none".equals(Constants.getString("statMode"))==false)
{
try
{
/*
String multiwebSql = "";
if(InitServlet.isTypeCloud())
{
multiwebSql = " AND query_string LIKE '%"+CloudToolsForCore.getDomainName()+"%'";
}
String table_stat_error = "stat_error" + "_" + calendarTo.get(Calendar.YEAR) + "_" + (calendarTo.get(Calendar.MONTH) + 1);
String sql_stat_error = "select sum(count) from " + table_stat_error + " where week = ? ";
int week = calendarFrom.get(Calendar.WEEK_OF_YEAR)+1;
//.get(Calendar.WEEK_OF_YEAR)+1 lebo calendarFrom je cas presne pred tyzdnom a v tabulke su zaznamy iba podla cisel tyzdnov.
//To znamena ze ak by nebolo +1 dostaly by sme zaznamy v celom minulom tyzdni (pondelok-nedela), takto je to v aktualnom
statErrorNumber = new SimpleQuery().forInt(sql_stat_error+multiwebSql, week);
if (calendarFrom.get(Calendar.MONTH) + 1 == calendarTo.get(Calendar.MONTH))
{
table_stat_error = "stat_error" + "_" + calendarFrom.get(Calendar.YEAR) + "_" + (calendarFrom.get(Calendar.MONTH) + 1);
sql_stat_error = "select sum(count) from " + table_stat_error + " where week = ? ";
statErrorNumber += new SimpleQuery().forInt(sql_stat_error+multiwebSql, week);
}
*/
List<Column> errorPages = StatTableDB.getErrorPages(99999, calendarFrom.getTime(), calendarTo.getTime(), null);
/*for (Column c : errorPages)
{
statErrorNumber += c.getIntColumn5();
}*/
statErrorNumber = errorPages.size();
Logger.debug(WelcomeDataBackTime.class, "statErrorNumber: " + statErrorNumber);
} catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
}
welcomeDataBean.setStatErrorNumber(statErrorNumber);
}
private static void initStatsViewNumber(Calendar calendarFrom, Calendar calendarTo)
{
int statViewsNumber = 0;
if ("none".equals(Constants.getString("statMode"))==false)
{
try
{
/*
String multiwebSql = "";
if(InitServlet.isTypeCloud())
{
// " AND " + column + " IN ("+searchGroups+") ";
multiwebSql = StatDB.getRootGroupWhere("group_id", CloudToolsForCore.getDomainId());
if(multiwebSql.startsWith(" AND"))
multiwebSql = multiwebSql.replace(" AND ", "");
multiwebSql = " WHERE " + multiwebSql;
}
String table_stat_views = "stat_views" + "_" + calendarTo.get(Calendar.YEAR) + "_" + (calendarTo.get(Calendar.MONTH) + 1);
String sql_stat_views = "select count(distinct session_id) from " + table_stat_views;
int statViewsNumber = new SimpleQuery().forInt(sql_stat_views+multiwebSql);
if (calendarFrom.get(Calendar.MONTH) + 1 == calendarTo.get(Calendar.MONTH))
{
table_stat_views = "stat_views" + "_" + calendarFrom.get(Calendar.YEAR) + "_" + (calendarFrom.get(Calendar.MONTH) + 1);
sql_stat_views = "select count(distinct session_id) from " + table_stat_views;
statViewsNumber += new SimpleQuery().forInt(sql_stat_views+multiwebSql);
}
*/
int groupId = -1;
if (InitServlet.isTypeCloud()) groupId = CloudToolsForCore.getDomainId();
List<Column> statVSDays = StatNewDB.getDayViews(calendarFrom.getTime(), calendarTo.getTime(), groupId, true);
for (Column c : statVSDays)
{
statViewsNumber += c.getIntColumn3();
}
Logger.debug(WelcomeDataBackTime.class, "statViewsNumber: " + statViewsNumber);
} catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
}
welcomeDataBean.setStatViewsNumber(statViewsNumber);
}
public static Timestamp getTimeFrom()
{
long welcomeDataBackTimeMinutes = getWelcomeDataBackTimeConst();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, -(int)welcomeDataBackTimeMinutes);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Timestamp timeFrom = new Timestamp(cal.getTimeInMillis());
Logger.debug(WelcomeDataBackTime.class, "timeFrom: " + timeFrom);
return timeFrom;
}
public static Timestamp getTimeTo()
{
Timestamp timeTo = new Timestamp(new Date().getTime());
Logger.debug(WelcomeDataBackTime.class, "timeTo: " + timeTo);
return timeTo;
}
public static int getWelcomeDataBackTimeConst()
{
return Constants.getInt("welcomeDataBackTime");
}
}