package com.basic.security.manager;
|
|
import com.basic.security.dao.DatabaseManager;
|
import com.basic.security.model.RealTimeMetrics;
|
import com.basic.security.dao.SqliteManager;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.UUID;
|
|
public class RealTimeMetricsManager extends SqliteManager {
|
|
public static int TotalEnters = 0;
|
public static int TotalExits = 0;
|
|
public static void saveRealTimeMetrics(Map<String, String> realTimeMetrics) {
|
deleteDayBeforeYesterday();
|
if (realTimeMetrics != null) {
|
realTimeMetrics.put(RealTimeMetrics.id, UUID.randomUUID().toString());
|
realTimeMetrics.put("table", RealTimeMetrics.table);
|
realTimeMetrics.put(RealTimeMetrics.CreateDate, new Date().getTime()+"");
|
save(realTimeMetrics);
|
initRealTimeMetrics(realTimeMetrics);
|
}
|
}
|
|
private static void deleteDayBeforeYesterday() {
|
Calendar cal = Calendar.getInstance();
|
cal.add(Calendar.DATE, -2);
|
DatabaseManager.execSQL("delete from "+RealTimeMetrics.table + " where " + RealTimeMetrics.CreateDate + " < '"+
|
cal.getTime().getTime()
|
+"'");
|
}
|
|
public static Map<String, String> getFirstRealTimeMetrics() {
|
List<Map<String, String>> realTimeMetricsList = findList("select * from " +
|
RealTimeMetrics.table + " order by " + RealTimeMetrics.Date
|
+ " asc limit 1"
|
);
|
if (realTimeMetricsList.size() > 0) {
|
return realTimeMetricsList.get(0);
|
}
|
return null;
|
}
|
|
public static Map<String, String> getLastRealTimeMetrics() {
|
List<Map<String, String>> realTimeMetricsList = findList("select * from " +
|
RealTimeMetrics.table + " order by " + RealTimeMetrics.CreateDate
|
+ " desc limit 1"
|
);
|
if (realTimeMetricsList.size() > 0) {
|
return realTimeMetricsList.get(0);
|
}
|
return null;
|
}
|
|
public static void initRealTimeMetrics(Map<String, String> realTimeMetrics) {
|
if (realTimeMetrics == null) {
|
realTimeMetrics = getLastRealTimeMetrics();
|
}
|
if (realTimeMetrics != null) {
|
try {
|
TotalEnters = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalEnters));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
try {
|
TotalExits = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalExits));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public static int getTotalEnters() {
|
return TotalEnters;
|
}
|
|
public static int getTotalEnters(Date date) {
|
int TotalEnters = 0;
|
Map<String, String> realTimeMetrics = RealTimeMetricsManager.getFirstRealTimeMetricsSince(
|
date
|
);
|
if (realTimeMetrics != null) {
|
TotalEnters = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalEnters));
|
}
|
return TotalEnters;
|
}
|
|
public static int getTotalExits() {
|
return TotalExits;
|
}
|
|
public static int getTotalExits(Date date) {
|
int TotalExits = 0;
|
Map<String, String> realTimeMetrics = RealTimeMetricsManager.getFirstRealTimeMetricsSince(
|
date
|
);
|
if (realTimeMetrics != null) {
|
TotalExits = Integer.parseInt(realTimeMetrics.get(RealTimeMetrics.TotalExits));
|
}
|
return TotalExits;
|
}
|
|
public static Map<String, String> getFirstRealTimeMetricsSince(Date todayBeginDate) {
|
List<Map<String, String>> realTimeMetricsList = findList("select * from " +
|
RealTimeMetrics.table + " where "+RealTimeMetrics.Date+" <= '"+todayBeginDate.getTime()+"' order by " + RealTimeMetrics.TransmitTime
|
+ " desc limit 1"
|
);
|
if (realTimeMetricsList.size() > 0) {
|
return realTimeMetricsList.get(0);
|
}
|
return null;
|
}
|
|
public static int getTestEnterPeopleCount() {
|
int TotalEnters = 0;
|
List<Map<String, String>> realTimeMetricsList = findList("select max("+RealTimeMetrics.TotalEnters+") as "+RealTimeMetrics.TotalEnters+" from " +
|
RealTimeMetrics.table +" "
|
);
|
if (realTimeMetricsList.size() > 0) {
|
try {
|
TotalEnters = Integer.parseInt(realTimeMetricsList.get(0).get(RealTimeMetrics.TotalEnters));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return TotalEnters;
|
}
|
|
public static int getTestExitPeopleCount() {
|
int TotalExits = 0;
|
List<Map<String, String>> realTimeMetricsList = findList("select max("+RealTimeMetrics.TotalExits+") as "+RealTimeMetrics.TotalExits+" from " +
|
RealTimeMetrics.table +" "
|
);
|
if (realTimeMetricsList.size() > 0) {
|
try {
|
TotalExits = Integer.parseInt(realTimeMetricsList.get(0).get(RealTimeMetrics.TotalExits));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return TotalExits;
|
}
|
|
public static void initTodayData() {
|
Date date = new Date();
|
date.setHours(1);
|
date.setMinutes(0);
|
int TotalEnters = 10;
|
int TotalExits = 10;
|
int increment = 10;
|
DatabaseManager.execSQL("delete from "+RealTimeMetrics.class.getSimpleName());
|
for (int i = 1; i <= 23; i++) {
|
for (int j = 0; j < 59; j++) {
|
date.setHours(i);
|
date.setMinutes(j);
|
TotalEnters += 2*increment;
|
TotalExits += increment;
|
Map<String, String> realTimeMetrics = new HashMap<>();
|
realTimeMetrics.put(RealTimeMetrics.TotalEnters, TotalEnters+"");
|
realTimeMetrics.put(RealTimeMetrics.TotalExits, TotalExits+"");
|
realTimeMetrics.put(RealTimeMetrics.CreateDate, date.getTime()+"");
|
realTimeMetrics.put(RealTimeMetrics.TransmitTime, date.getTime()+"");
|
realTimeMetrics.put(RealTimeMetrics.Date, date.getTime()+"");
|
|
RealTimeMetricsManager.saveRealTimeMetrics(realTimeMetrics);
|
}
|
}
|
}
|
|
}
|