![JAR search and dependency download from the Maven repository](/logo.png)
com.github.ltsopensource.biz.logger.mysql.MysqlJobLogger Maven / Gradle / Ivy
package com.github.ltsopensource.biz.logger.mysql;
import com.github.ltsopensource.admin.response.PaginationRsp;
import com.github.ltsopensource.biz.logger.JobLogger;
import com.github.ltsopensource.biz.logger.domain.JobLogPo;
import com.github.ltsopensource.biz.logger.domain.JobLoggerRequest;
import com.github.ltsopensource.core.cluster.Config;
import com.github.ltsopensource.core.commons.utils.CollectionUtils;
import com.github.ltsopensource.core.json.JSON;
import com.github.ltsopensource.queue.mysql.support.RshHolder;
import com.github.ltsopensource.store.jdbc.JdbcAbstractAccess;
import com.github.ltsopensource.store.jdbc.builder.InsertSql;
import com.github.ltsopensource.store.jdbc.builder.OrderByType;
import com.github.ltsopensource.store.jdbc.builder.SelectSql;
import com.github.ltsopensource.store.jdbc.builder.WhereSql;
import com.github.ltsopensource.store.jdbc.dbutils.JdbcTypeUtils;
import java.util.List;
/**
* @author Robert HG ([email protected]) on 5/21/15.
*/
public class MysqlJobLogger extends JdbcAbstractAccess implements JobLogger {
public MysqlJobLogger(Config config) {
super(config);
createTable(readSqlFile("sql/mysql/lts_job_log_po.sql"));
}
@Override
public void log(JobLogPo jobLogPo) {
if (jobLogPo == null) {
return;
}
InsertSql insertSql = buildInsertSql();
setInsertSqlValues(insertSql, jobLogPo).doInsert();
}
@Override
public void log(List jobLogPos) {
if (CollectionUtils.isEmpty(jobLogPos)) {
return;
}
InsertSql insertSql = buildInsertSql();
for (JobLogPo jobLogPo : jobLogPos) {
setInsertSqlValues(insertSql, jobLogPo);
}
insertSql.doBatchInsert();
}
private InsertSql buildInsertSql() {
return new InsertSql(getSqlTemplate())
.insert(getTableName())
.columns("log_time",
"gmt_created",
"log_type",
"success",
"msg",
"task_tracker_identity",
"level",
"task_id",
"real_task_id",
"job_id",
"job_type",
"priority",
"submit_node_group",
"task_tracker_node_group",
"ext_params",
"internal_ext_params",
"need_feedback",
"cron_expression",
"trigger_time",
"retry_times",
"max_retry_times",
"rely_on_prev_cycle",
"repeat_count",
"repeated_count",
"repeat_interval"
);
}
private InsertSql setInsertSqlValues(InsertSql insertSql, JobLogPo jobLogPo) {
return insertSql.values(jobLogPo.getLogTime(),
jobLogPo.getGmtCreated(),
jobLogPo.getLogType().name(),
jobLogPo.isSuccess(),
jobLogPo.getMsg(),
jobLogPo.getTaskTrackerIdentity(),
jobLogPo.getLevel().name(),
jobLogPo.getTaskId(),
jobLogPo.getRealTaskId(),
jobLogPo.getJobId(),
jobLogPo.getJobType() == null ? null : jobLogPo.getJobType().name(),
jobLogPo.getPriority(),
jobLogPo.getSubmitNodeGroup(),
jobLogPo.getTaskTrackerNodeGroup(),
JSON.toJSONString(jobLogPo.getExtParams()),
JSON.toJSONString(jobLogPo.getInternalExtParams()),
jobLogPo.isNeedFeedback(),
jobLogPo.getCronExpression(),
jobLogPo.getTriggerTime(),
jobLogPo.getRetryTimes(),
jobLogPo.getMaxRetryTimes(),
jobLogPo.getDepPreCycle(),
jobLogPo.getRepeatCount(),
jobLogPo.getRepeatedCount(),
jobLogPo.getRepeatInterval());
}
@Override
public PaginationRsp search(JobLoggerRequest request) {
PaginationRsp response = new PaginationRsp();
Long results = new SelectSql(getSqlTemplate())
.select()
.columns("count(1)")
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.single();
response.setResults(results.intValue());
if (results == 0) {
return response;
}
// 查询 rows
List rows = new SelectSql(getSqlTemplate())
.select()
.all()
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.orderBy()
.column("log_time", OrderByType.DESC)
.limit(request.getStart(), request.getLimit())
.list(RshHolder.JOB_LOGGER_LIST_RSH);
response.setRows(rows);
return response;
}
private WhereSql buildWhereSql(JobLoggerRequest request) {
return new WhereSql()
.andOnNotEmpty("task_id = ?", request.getTaskId())
.andOnNotEmpty("real_task_id = ?", request.getRealTaskId())
.andOnNotEmpty("task_tracker_node_group = ?", request.getTaskTrackerNodeGroup())
.andBetween("log_time", JdbcTypeUtils.toTimestamp(request.getStartLogTime()), JdbcTypeUtils.toTimestamp(request.getEndLogTime()))
;
}
private String getTableName() {
return "lts_job_log_po";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy