package com.github.ltsopensource.queue.mysql.support;
import com.github.ltsopensource.biz.logger.domain.JobLogPo;
import com.github.ltsopensource.biz.logger.domain.LogType;
import com.github.ltsopensource.core.cluster.NodeType;
import com.github.ltsopensource.core.commons.utils.StringUtils;
import com.github.ltsopensource.core.constant.Level;
import com.github.ltsopensource.core.domain.JobRunResult;
import com.github.ltsopensource.core.domain.JobType;
import com.github.ltsopensource.core.json.JSON;
import com.github.ltsopensource.core.json.TypeReference;
import com.github.ltsopensource.queue.domain.JobFeedbackPo;
import com.github.ltsopensource.queue.domain.JobPo;
import com.github.ltsopensource.queue.domain.NodeGroupPo;
import com.github.ltsopensource.store.jdbc.dbutils.ResultSetHandler;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Robert HG (254963746@qq.com) on 5/31/15.
*/
public class RshHolder {
public static final ResultSetHandler<JobPo> JOB_PO_RSH = new ResultSetHandler<JobPo>() {
@Override
public JobPo handle(ResultSet rs) throws SQLException {
if (!rs.next()) {
return null;
}
return getJobPo(rs);
}
};
public static final ResultSetHandler<List<JobPo>> JOB_PO_LIST_RSH = new ResultSetHandler<List<JobPo>>() {
@Override
public List<JobPo> handle(ResultSet rs) throws SQLException {
List<JobPo> jobPos = new ArrayList<JobPo>();
while (rs.next()) {
jobPos.add(getJobPo(rs));
}
return jobPos;
}
};
private static JobPo getJobPo(ResultSet rs) throws SQLException {
JobPo jobPo = new JobPo();
jobPo.setJobId(rs.getString("job_id"));
jobPo.setPriority(rs.getInt("priority"));
jobPo.setLastGenerateTriggerTime(rs.getLong("last_generate_trigger_time"));
jobPo.setRetryTimes(rs.getInt("retry_times"));
jobPo.setMaxRetryTimes(rs.getInt("max_retry_times"));
jobPo.setRelyOnPrevCycle(rs.getBoolean("rely_on_prev_cycle"));
jobPo.setInternalExtParams(JSON.parse(rs.getString("internal_ext_params"), new TypeReference<HashMap<String, String>>() {
}));
jobPo.setTaskId(rs.getString("task_id"));
jobPo.setRealTaskId(rs.getString("real_task_id"));
jobPo.setGmtCreated(rs.getLong("gmt_created"));
jobPo.setGmtModified(rs.getLong("gmt_modified"));
jobPo.setSubmitNodeGroup(rs.getString("submit_node_group"));
jobPo.setTaskTrackerNodeGroup(rs.getString("task_tracker_node_group"));
jobPo.setExtParams(JSON.parse(rs.getString("ext_params"), new TypeReference<HashMap<String, String>>() {
}));
String jobType = rs.getString("job_type");
if (StringUtils.isNotEmpty(jobType)) {
jobPo.setJobType(JobType.valueOf(jobType));
}
jobPo.setIsRunning(rs.getBoolean("is_running"));
jobPo.setTaskTrackerIdentity(rs.getString("task_tracker_identity"));
jobPo.setCronExpression(rs.getString("cron_expression"));
jobPo.setNeedFeedback(rs.getBoolean("need_feedback"));
jobPo.setTriggerTime(rs.getLong("trigger_time"));
jobPo.setRepeatCount(rs.getInt("repeat_count"));
jobPo.setRepeatedCount(rs.getInt("repeated_count"));
jobPo.setRepeatInterval(rs.getLong("repeat_interval"));
return jobPo;
}
public static final ResultSetHandler<List<JobFeedbackPo>> JOB_FEED_BACK_LIST_RSH = new ResultSetHandler<List<JobFeedbackPo>>() {
@Override
public List<JobFeedbackPo> handle(ResultSet rs) throws SQLException {
List<JobFeedbackPo> jobFeedbackPos = new ArrayList<JobFeedbackPo>();
while (rs.next()) {
JobFeedbackPo jobFeedbackPo = new JobFeedbackPo();
jobFeedbackPo.setId(rs.getString("id"));
jobFeedbackPo.setJobRunResult(JSON.parse(rs.getString("job_result"), new TypeReference<JobRunResult>() {
}));
jobFeedbackPo.setGmtCreated(rs.getLong("gmt_created"));
jobFeedbackPos.add(jobFeedbackPo);
}
return jobFeedbackPos;
}
};
public static final ResultSetHandler<List<NodeGroupPo>> NODE_GROUP_LIST_RSH = new ResultSetHandler<List<NodeGroupPo>>() {
@Override
public List<NodeGroupPo> handle(ResultSet rs) throws SQLException {
List<NodeGroupPo> list = new ArrayList<NodeGroupPo>();
while (rs.next()) {
NodeGroupPo nodeGroupPo = new NodeGroupPo();
nodeGroupPo.setNodeType(NodeType.valueOf(rs.getString("node_type")));
nodeGroupPo.setName(rs.getString("name"));
nodeGroupPo.setGmtCreated(rs.getLong("gmt_created"));
list.add(nodeGroupPo);
}
return list;
}
};
public static final ResultSetHandler<List<JobLogPo>> JOB_LOGGER_LIST_RSH = new ResultSetHandler<List<JobLogPo>>() {
@Override
public List<JobLogPo> handle(ResultSet rs) throws SQLException {
List<JobLogPo> result = new ArrayList<JobLogPo>();
while (rs.next()) {
JobLogPo jobLogPo = new JobLogPo();
jobLogPo.setLogTime(rs.getLong("log_time"));
jobLogPo.setGmtCreated(rs.getLong("gmt_created"));
jobLogPo.setLogType(LogType.valueOf(rs.getString("log_type")));
jobLogPo.setSuccess(rs.getBoolean("success"));
jobLogPo.setMsg(rs.getString("msg"));
jobLogPo.setTaskTrackerIdentity(rs.getString("task_tracker_identity"));
jobLogPo.setLevel(Level.valueOf(rs.getString("level")));
jobLogPo.setTaskId(rs.getString("task_id"));
jobLogPo.setRealTaskId(rs.getString("real_task_id"));
String jobType = rs.getString("job_type");
if (StringUtils.isNotEmpty(jobType)) {
jobLogPo.setJobType(JobType.valueOf(jobType));
}
jobLogPo.setJobId(rs.getString("job_id"));
jobLogPo.setPriority(rs.getInt("priority"));
jobLogPo.setSubmitNodeGroup(rs.getString("submit_node_group"));
jobLogPo.setTaskTrackerNodeGroup(rs.getString("task_tracker_node_group"));
jobLogPo.setExtParams(JSON.parse(rs.getString("ext_params"), new TypeReference<Map<String, String>>() {
}));
jobLogPo.setInternalExtParams(JSON.parse(rs.getString("internal_ext_params"), new TypeReference<HashMap<String, String>>() {
}));
jobLogPo.setNeedFeedback(rs.getBoolean("need_feedback"));
jobLogPo.setCronExpression(rs.getString("cron_expression"));
jobLogPo.setTriggerTime(rs.getLong("trigger_time"));
jobLogPo.setRetryTimes(rs.getInt("retry_times"));
jobLogPo.setMaxRetryTimes(rs.getInt("max_retry_times"));
jobLogPo.setDepPreCycle(rs.getBoolean("rely_on_prev_cycle"));
jobLogPo.setRepeatCount(rs.getInt("repeat_count"));
jobLogPo.setRepeatedCount(rs.getInt("repeated_count"));
jobLogPo.setRepeatInterval(rs.getLong("repeat_interval"));
result.add(jobLogPo);
}
return result;
}
};
}