19 package org.turro.log;
21 import java.util.Date;
22 import org.amic.util.date.CheckDate;
23 import org.turro.elephant.db.ElephantPU;
24 import org.turro.elephant.entities.db.SystemLog;
25 import org.turro.jpa.Dao;
26 import org.turro.sql.SqlClause;
27 import org.turro.string.Words;
35 private static final int MAX_YEARS = 5;
36 private final Dao dao;
40 new Thread(accumulator,
"ElephantLog accumulator").start();
61 Date until =
new CheckDate().addYears(-MAX_YEARS).getDate();
63 SqlClause.select(Words.csv(
"l.logType").add(
"l.generatorPath").add(
"l.entityPath")
64 .add(
"l.generatorName").add(
"l.entityName").add(
"l.comment")
65 .add(
"sum(l.counts)").add(
"max(l.dateLog)").toString())
67 .where().smallerOrEqual(
"l.dateLog", until)
68 .groupBy(Words.csv(
"l.logType").add(
"l.generatorPath").add(
"l.entityPath")
69 .add(
"l.generatorName").add(
"l.entityName").add(
"l.comment").toString())
71 .resultList(Object[].
class).forEach(c -> {
81 sl.
setData(getDataFrom(sl, (Date) c[7]));
84 SqlClause.delete(
"SystemLog").where().smaller(
"logDate", until);
87 private void ensureCounts() {
88 SqlClause.select(Words.csv(
"l.logType").add(
"l.generatorPath").add(
"l.entityPath")
89 .add(
"l.generatorName").add(
"l.entityName").add(
"l.comment")
90 .add(
"min(l.dateLog)").toString())
92 .groupBy(Words.csv(
"l.logType").add(
"l.generatorPath").add(
"l.entityPath")
93 .add(
"l.generatorName").add(
"l.entityName").add(
"l.comment").toString())
95 .resultList(Object[].
class).forEach(c -> {
96 SqlClause.update(
"SystemLog")
99 .and().equal(
"generatorPath", (String) c[1])
100 .and().equal(
"entityPath", (String) c[2])
101 .and().equal(
"generatorName", (String) c[3])
102 .and().equal(
"entityName", (String) c[4])
103 .and().equal(
"comment", (String) c[5])
104 .and().greater(
"dateLog", (Date) c[6])
124 SqlClause.update(
"SystemLog")
126 .where().smallerOrEqual(
"counts", 0)
131 private byte[] getDataFrom(SystemLog sl, Date date) {
132 return SqlClause.select(
"l.data")
134 .where().equal(
"l.dateLog", date)
135 .and().equal(
"l.logType", sl.getLogType())
136 .and().equal(
"l.generatorPath", sl.getGeneratorPath())
137 .and().equal(
"l.entityPath", sl.getEntityPath())
138 .and().equal(
"l.generatorName", sl.getGeneratorName())
139 .and().equal(
"l.entityName", sl.getEntityName())
140 .and().equal(
"l.comment", sl.getComment())
142 .singleResult(
byte[].
class);
void setComment(String comment)
void setEntityName(String entityName)
void setData(byte[] data)
void setLogType(SystemLogType logType)
void setGeneratorPath(String generatorPath)
void setDateLog(Date dateLog)
void setGeneratorName(String generatorName)
void setEntityPath(String entityPath)
void setCounts(int counts)
SystemLogAccumulator(Dao dao)