package com.github.ltsopensource.admin.access.mysql;
import com.github.ltsopensource.admin.access.RshHandler;
import com.github.ltsopensource.admin.access.face.BackendJobTrackerMAccess;
import com.github.ltsopensource.admin.request.MDataPaginationReq;
import com.github.ltsopensource.core.cluster.Config;
import com.github.ltsopensource.monitor.access.domain.JobTrackerMDataPo;
import com.github.ltsopensource.monitor.access.mysql.MysqlJobTrackerMAccess;
import com.github.ltsopensource.store.jdbc.builder.DeleteSql;
import com.github.ltsopensource.store.jdbc.builder.SelectSql;
import com.github.ltsopensource.store.jdbc.builder.WhereSql;
import com.github.ltsopensource.store.jdbc.dbutils.ResultSetHandler;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* @author Robert HG (254963746@qq.com) on 3/9/16.
*/
public class MysqlBackendJobTrackerMAccess extends MysqlJobTrackerMAccess implements BackendJobTrackerMAccess {
public MysqlBackendJobTrackerMAccess(Config config) {
super(config);
}
@Override
public List<JobTrackerMDataPo> querySum(MDataPaginationReq request) {
return new SelectSql(getSqlTemplate())
.select()
.columns("timestamp",
"SUM(receive_job_num) AS receive_job_num",
"SUM(push_job_num) AS push_job_num" ,
"SUM(exe_success_num) AS exe_success_num" ,
"SUM(exe_failed_num) AS exe_failed_num" ,
"SUM(exe_later_num) AS exe_later_num" ,
"SUM(exe_exception_num) AS exe_exception_num" ,
"SUM(fix_executing_job_num) AS fix_executing_job_num")
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.groupBy(" timestamp ASC ")
.limit(request.getStart(), request.getLimit())
.list(RshHandler.JOB_TRACKER_SUM_M_DATA_RSH);
}
private WhereSql buildWhereSql(MDataPaginationReq request) {
return new WhereSql()
.andOnNotEmpty("id = ? ", request.getId())
.andOnNotEmpty("identity = ?", request.getIdentity())
.andBetween("timestamp", request.getStartTime(), request.getEndTime());
}
@Override
public void delete(MDataPaginationReq request) {
new DeleteSql(getSqlTemplate())
.delete()
.from()
.table(getTableName())
.whereSql(buildWhereSql(request))
.doDelete();
}
@Override
public List<String> getJobTrackers() {
return new SelectSql(getSqlTemplate())
.select()
.columns("DISTINCT identity AS `identity` ")
.from()
.table(getTableName())
.list(new ResultSetHandler<List<String>>() {
@Override
public List<String> handle(ResultSet rs) throws SQLException {
List<String> list = new ArrayList<String>();
while (rs.next()) {
list.add(rs.getString("identity"));
}
return list;
}
});
}
}